Continuing our theme of Frog Software Design Principles (First Post):
Under the skin, Frog is a web based development platform, built from the ground up specifically for web applications. The first tier of the platform contains:
- document storage in a typical directory structure (as per “My Computer”)
- a sophisticated user permissions system, including user profiles (what users can do), group systems and individual user rights
- state management (allows “web pages” to operate more like applications)
- web based, drag-drop content management system
- API’s, web services and developer hooks to allow the platform to be extended
Overlaying this development platform there are a large number of “Frog Bricks”. The stock built bricks include components for e-learning, document management, network management, e-commerce, collaboration, social networking, multimedia, and so on. Users and third party companies are also able to build their own Frog Bricks, typically containing interfaces to third party applications, or mini-applications built for each customers specific needs.
The secret to the Frog design is the way that these individual components are built to:
- provide 90% of the likely uses with very little configuration, accessible by “ordinary” people (this is achieved by focusing the system around a specific set of problems, as described earlier)
- to provide the remaining 10% of special cases through the “Advanced” tabs, allowing them to be used in ways that we never predicted (give the power users what they want – “total control”)
- to interact with each other in a way that allows our users to put together entire systems through different combinations of Frog Bricks
In other words, these Frog Bricks are not independent islands of functionality, this is not a matter of just widgetising an application so you can change how it looks by dragging different pieces around a screen, it’s about creating a system of interconnected bricks that allows complete systems to be built in pretty much any way people want, doing things that we never envisaged when designing the software.
This is difficult and time consuming to achieve. We’ll cover that next.