Every software project is an innovation tour; it combines engineering and art. Taking a common website development project as an example, every outcome is unique in design, creativity, and user experience but also adopts familiar architecture and technology. Innovation concerns wild ideas and boundless imagination, which also means cost and quality can easily run unencumbered since there’s no precise template to follow and repeat.
How can we carry out innovation cost-effectively? Though there may be no perfect answer, one of the best practices from our rich experience in building website and mobile applications is to take advantage of high quality open source frameworks and components during the innovation tour. The benefit comes from the Pareto principle (also known as the 80/20 rule). We can explain this in two ways:
First of all, open source frameworks provide 80% “free Lego blocks” ready to use in a project. Today’s software development rarely begins from zero. Instead, it reasonably starts from a solid framework with all must-have infrastructure features, such as logging, caching, access control, release and upgrading, etc. Based on this, there’s little waste in dealing with those low level tasks required by almost every project. Besides the framework, many common function components could be adopted into the project with barely any effort. Hence, we have a high chance to achieve 80% of the features using only 20% resource. The remaining effort can be spent directly on the real innovation to build project-specific pieces. These 20% features bring the main value and will make the project unique.
We often start a website building from the famous Drupal framework (although we use a variety of others when there’s a compelling case). Drupal offers basic features common to content-management systems, including user account registration and maintenance, menu management, taxonomy, content creation and editing, page layout customization, system administration, and so on. It enables us to put real effort into the innovation, focusing on the client’s unique business requirements instead of reinventing the wheel. Beyond the framework, there are more than 35,000 modules[1] contributed by the Drupal community comprising more than one million members[2]. Those popular modules provide out-of-box features to save project efforts for our clients.
In addition to free reusable features, open source building blocks also bring better quality and reduce test cost. Since 80% of components are widely tested and used in the open source community, you can be quite sure they are almost “bug free”; it is easier to detect the defects and quicker to fix them in a community with a huge number of members such as Drupal. The power comes from the wisdom of crowds. The direct consequence is less effort required to test and maintain these mature components; freeing us up to generate real unique innovation in the project.
Bootstrap is one of my favorite front-end frameworks for developing responsive, mobile-first projects. As one of the most starred Github projects with more than 46,000 developers, it’s often widely tested on various mobile devices. There’s no need to worry about its quality in most cases. I cannot imagine what huge amount of resource might be required if a project were to build similarly but from the ground up, even when only considering mobile.
Although it is still arguable that the code style or rules to follow when using a certain framework or component will constrain the innovation, almost any project could benefit from adopting proper open source frameworks and components with careful selection. Undoubtedly, open source frameworks and components enable cost-effective innovation by applying the 80/20 rule.
Isaac Newton wrote in 1676: "If I have seen further, it is by standing on the shoulders of giants." If we use more cost-effective innovation, it is by relying on the wisdom of crowds in the open source world.
[1] Drupal modules search result, https://www.drupal.org/project/project_module
[2] 1 Million Users of Drupal.org, https://www.drupal.org/node/2110205