Our Parisian web agency and software company, Lp Digital, is open sourcing its content management system, BackBee CMS. In this article, I'll explain the tools that helped us release BackBee as open source software and measure the results.
Download and join the community here.
Choosing a license
We wanted a popular open source license that permitted us to reuse our source code and support the new extensions and themes. We also wanted to reassure our customers and contributors about our business model by eliminating the likelihood of spinoff versions of our software. That's why we chose the GPL3 license, which allows all kinds of derivatives as long as the source code is made available under the same conditions.
The platform offers many free services that we relied on to manage our open source project, such as managing:
- addition requests ("pull request")
- report markdown
- development teams
- an organization
We also could have hosted our project on other known services, such as Bitbucket, or we could have made our own GitLab public.
The choice of GitHub over other solutions wasn't for technical reasons. GitHub has become the first social network for open source contributors, with 8.9 million members to date. The projects we depend on, such as Symfony components, Doctrine, Twig, and jQuery, are also hosted on GitHub. Keeping in mind our desire to grow our community of contributors, GitHub seemed the best choice.
Another advantage of choosing GitHub as a hosting platform for our code is the quality of the software's ecosystem around GitHub. Because we are on GitHub, we can effortlessly use many quality monitoring and measuring amenities for our projects.
Travis-CI for code testing is probably one of our most useful services. Travis-CI can:
- retrieve projects
- run tests
- run the build of several types of a language simultaneously (e.g., PHP 5.3, 5.4, 5.5)
- email you if the build is broken
- Also, integration into GitHub is really effective.
An example of notification Travis-CI for a proposal for adding code
SensioLabs Insight and Scrutinizer
Using tools such as SensioLabsInsight and Scrutinizer, we have been able to measure the overall quality of our project and plan for areas that need improving. Both tools are free and open source, and they are easy to bind to a GitHub project. Scrutinizer is a platform for measuring the quality of your static code, by using numerous metrics and the change in quality between analyses. The tool is available in "hook" GitHub form, which allows you to quickly see whether adding code that has been requested will reduce the overall quality of your project.
Using SensioLabsInsight makes sense when developing a project in PHP, especially if it uses software components from the Symfony framework. We like the feature that shows the remaining technical debt—the estimated amount of time that it would take for the project to fix all the problems found by the SensioLabsInsight analysis service—to achieve a good technical project, and the note that is assigned to the project. Each problem detected is detailed with information on where to find a possible solution on GitHub and where to access documentation to help you resolve the problem.
Moreover, SensioLabsInsight performs a dynamic analysis of your projects and can raise issues that would have never been found by Scrutinizer.
In the past few months, we have reduced our technical debt by 87 percent—from an estimated 2.3 years of debt to only 2.9 months—and we are continuing our efforts to improve the quality of our projects.
The performance of a website is mainly related to its front end, but improving performance on a project can be both substantial and less time consuming from the back end. Many tools available can measure PHP application performance, but we think the best on the market is produced by a French start-up called Blackfire.
We won't go into further detail about how Blackfire.io works, but we regularly use general performance measures for page access. We still remain attentive towards our PHP code performance.
Gitter is a service that provides a platform for communication related to a project or a GitHub organization. Although developers can already communicate on GitHub using this solution system, Gitter provides you with simpler access tools and the possibility to communicate directly.
Gitter reduces the gap that exists between an online service dedicated to solving issues while remaining as mainstream as StackOverflow and GitHub, and is simple to use.
Making a project open source also provides you with insight into how the project evolves and what features your team of core developers are assigned. We could have opened our Redmine, but didn't want contributors to be required to log in or create an account to view or interact with our current objectives.
Waffle gives you a simple Kanban (technique for efficiently managing a software development project), which gives you an idea of your advancement compared with your goals. You can easily see an overview and track the progress in your project and what each person's assigned tasks are. Thus, a user that is interested in a feature can see whether it's being developed and, if so, who is working on it. Waffle has replaced Redmine for our open source BackBee software.
Our team organization
We invest heavily in BackBee CMS development, with five developers divided into two teams (core and client front), a technical director, a head of project, an open source evangelist, and regular interventions from our integrator team.
GitHub allows you to create teams with simple management authorization on your organization's projects. Within BackBee, there are three organizational levels:
- Core team: Most of the code is produced by the core team, which brings together all the players involved on the project, either within Lp Digital or active contributors.
- Mergers: When the core team has validated an add request, the project manager accepts the addition and the new feature (or bug fix) as part of the project. There is one manager for each project, who is internally responsible for each team.
- Owners: Members of the owners team have extensive rights. They can create new deposits and add GitHub members to the core team. They can make the final decision if the core team cannot agree on an issue.
All information and contribution rules can be found in the CONTRIBUTING.md file of every project, which is essential for an open source software project.
The open source version of BackBee was carried out within a few months, and we unveiled our first major release in the beginning of April 2015 at SymfonyLive Paris. We chose to open source BackBee CMS for the sake of quality control and distribution of our software, so that we could create an ecosystem of extensions and themes available and accessible to all. Organizations need to use an economic model that does not negatively affect the software itself, and content management solutions do well under an open source model. With some planning and organization, closed-source software often can be open sourced easily. The tools and services to help ease the transition already exist, and many of them are free and work well together.
To learn more about Backbee, download the CMS, or join the community, visit: backbee.com.
This article is part of the The Open CMS column coordinated by Robin Muilwijk. Share your stories about working with open source content management systems (CMS) and platforms like Drupal, Joomla, Plone, WordPress, and more.