In 2015, we announced a pivot in our business model. Instead of developing only open source software and selling support services, we switched to an open core business model. In addition to our open source product Odoo Community, we developed extra proprietary apps as Odoo Enterprise.
From a business point of view, the switch was necessary. The margins on services do not allow to finance the activities of a software vendor: massive investments to develop the product, building a brand and a worldwide partner network. Besides, our revenue stream was not sustainable; new customers were paying support for the first year but, then, as everything worked fine, they did not renew the next years.
From the open source point of view, the switch was necessary too. We are in an evolving market; customers expectations and competitors are improving fast. If we did not invest massively in the product, Odoo Community would have been deprecated in a few years, as it happened with other open source ERPs. So, we needed a sustainable revenue stream that would allow us to recruit more developers to improve the open source software.
From this date, it has been a fantastic journey. On the business side, we were losing 500k€ per month in 2015. We only had a few weeks of cash available. By the end of 2016, we were cash flow positive by 500k€ per month. And the community won a lot too: we now have 4x more developers developing and maintaining Odoo Community, our open source product. (~180 developers)
A key decision in the design of this pivot was to avoid creating two conflicting products (Odoo Community vs. Odoo Enterprise). Instead, we made Odoo Enterprise depend on Odoo Community. That way, the success of one drives the success of the other: Odoo Enterprise benefits from the visibility created by millions of community users, and Odoo Community benefits from a part of the improvements made on Odoo Enterprise.
How do we decide when a new feature goes to Odoo Community or Enterprise?
Most of our developments concern improvements of existing modules, not new apps. In these cases, it’s obvious; if we improve a community module, we develop in Odoo Community, and if we improve an Enterprise app, we develop in Odoo Enterprise.
The advantage of Odoo Community is to bring lots of users to Odoo and eat single apps competitors’ market (it's difficult to compete against something free and of high quality)
The advantage of Odoo Enterprise is to generate more revenues, allowing us to invest more in the development of the product
Our goal is to keep a good balance between Odoo Community & Enterprise; we think that 80% of our developments should be open source to attract more users and 20% should be in Odoo Enterprise to improve our revenue stream, that ultimately allows us to recruit more developers working on the open source product. Another criterion to go open source or Enterprise is the nature of the app:
If it's a high value, niche market: Odoo Enterprise is more suitable (it will not bring millions of users, as we can sell the feature easily)
If it's a mass market with existing open source software, we prefer to release our module in Open Source (we won't generate a lot of revenues, but we can attract millions of users to Odoo)
Here are two examples of new apps that we are building for Odoo 13:
The new eLearning & Certification apps will be open source: it has the potential to reach millions of users (e.g., schools & universities), and there are plenty of competitors already established in this space, making it difficult to monetize
The Field Service Management app will be for Odoo Enterprise; it's a niche market (~5% of the companies), but it's easy to monetize as current competitors have an old product
Fine tuning the boundaries
In 2015, we did the pivot in a hurry. To launch the new open core model, most new features were developed in Odoo Enterprise. As we had a 100% open source, and 0% paid features, we needed to add features in Enterprise to reach our "80% open source, 20% proprietary" target. The split between the two products has been detailed in the editions page, and we followed this direction since then: Odoo Editions.
But I consider it's better for the end-user if an app is fully open source or fully Enterprise, not a mix of both. We want to avoid open source apps, who have proprietary features; that could be misleading, or frustrating for the Odoo Community users. It's more transparent if the split is "per app", and not "per feature".
To achieve this, we plan to open source the following modules as of Odoo 13 (currently in Odoo 12 Enterprise):
CRM Lead Scoring as it's a feature of the open source CRM app
Coupons as it's a feature of our open source eCommerce app
Mailing Themes as the mass mailing app is open source
Website Themes as the website builder app is open source
Digital Products as it's a feature of the eCommerce
Loyalty & Reward Programs of the POS as it's a feature of the open source POS
Not all our apps have to be open source. But when we include an app in Odoo Community, we invest in making it to be the best on the market.
Besides, we will reinforce our Odoo Enterprise model too, by removing code in Odoo Community that was not useable without Odoo Enterprise:
We will stop maintaining the open source payroll app as the module is far from being usable out-of-the-box. (it’s been hidden from the website and software since years now) Instead, we plan to develop the missing features in Odoo Enterprise to make it a real app: benefits management, reports, localizations, etc. As we prepare to invest a lot in the localisations, the only way to justify such an investment is to make it in Enterprise (we consider payroll a niche market as we mostly target SMEs who usually subcontract payroll)
Accounting: we plan to stop maintaining the old report engine as it’s not used anymore in Odoo Enterprise. The reconciliation widget code will be moved to the Enterprise repository, as the feature was not accessible/visible in Odoo Community
We plan to do these changes for Odoo 13, that will release in October 2019.
What if you are using code of the open source Payroll module?
We do not "close" open source codes. You will always be able to fork and maintain the Odoo 12 Payroll if you need it (or adapt it to Odoo 13). What’s in LGPL remains in LGPL.
But we will stop maintaining the open source payroll engine as of Odoo 13. Instead, we will focus on building a complete payroll app and develop countries localizations in Odoo Enterprise. If you, or the Odoo Community Association, want to maintain it, feel free to do it; it's LGPL.
Thank you for reading!