As a user and potential customer, when looking at sonarqube.org or sonarsource.com I understand that there are 4 SonarQube editions with built-in features :
- SonarQube Community Edition (QP, QG, Java, C#, ...)
- SonarQube Developer Edition (Community Edition + Branch analysis, C++, PL/SQL, ...)
- SonarQube Enterprise Edition (Developer Edition + Governance, COBOL, ...)
- SonarQube Datacenter Edition (Enterprise Edition + HA)
That's simple and easy to understand. Based on these product offerings, SQ is not a platform but a tool available in four different flavors.
If I want a commercial edition, the way to get there is difficult and obscure:
- I must first download and install the SonarQube platform which seems to be the Community Edition
- Then I must locate, download and figure out how to install an additional package
- Then, after obtaining a license, I must find the right place in the interface to enter my license key and activate my commercial features
- Then, depending on my platform and languages, I must download and install the correct scanner version and flavor
At the same time, the Marketplace is strongly highlighted and makes me realize that all features in the commercial editions are in fact independent plugins which can have their own life cycles.
As a user, it's hard to understand why I have to deal with this. In the end, the life cycle of the "Edition" features is tightly coupled to that of the platform itself. For instance, there is no way to install one SonarQube version and use it with another version of the Developer Edition.
This structural problem is also reflected in the SQ documentation:
- The main documentation is about SonarQube (Platform or Community Edition?): https://docs.sonarqube.org/display/SONAR
- In the Plugins section I can find the three commercial editions : https://docs.sonarqube.org/display/PLUG/SonarSource+Editions but without any documentation about the 'built-in' features
- The documentation of those 'built-in' features is available in https://docs.sonarqube.org/display/PLUG/SonarSource+Plugins through some commercial plugins which seem to (but don't really!) have their own life cycle
Finally, the SQ product news seems to be only about the SQ platform and then we have some dedicated product news for each new version of the SonarSource's plugins/features. As a user I would expect for each new version of SQ to have a product news listing what's new in those four editions.
Signatories: Jean-Denis, Chris, Simon, Ann
As a user, once I've chosen an edition, trying it should be as simple as:
- Download and install the correct package:
- SonarQube Community Edition
- SonarQube Developer Edition
- SonarQube Enterprise Edition
- SonarQube Data Center Edition
- Provide a license to unlock my commercial features if I've chosen a commercial edition.
- There is no Step 3; you're already done!
Specifically, instead of continuing to produce the SonarQube (CE) zip plus three edition-specific plugin bundles, we'll produce 4 SQ zips.
Commercial editions require a license to run. After initial configuration and startup, each person with global administration privileges will be prompted on login to (go to the License page and?) enter a license key.
Upgrading or downgrading the edition will be handled like a standard SonarQube upgrade: download, expand, configure new bundle; stop old instance; start new one; [enter license key].
As a standard user most of my needs, if not all, should be covered out of the box by the packages, so I should not feel the need to use the SonarQube marketplace. This means that:
- Standard functionality related to SCM and Authentication must be included in all packages: SVN, Git, LDAP. Of these, SVN and Git are already included in the distribution; only LDAP needs to be added.
- Edition-related core plugins (Branch, Developer, Governance, HA) and the License plugin must no longer be listed in the Marketplace or housed in extensions/plugins; they are not features to be installed / uninstalled / upgraded, but integral parts of the package, thus they must be bundled into the distribution in a new lib/core-extensions directory, which will be part of all distributions.
- The License "plugin" must still be available to the code analyzers and SonarLint
- we must decrease the user's cost of upgrade. Currently ElasticSearch indices are never re-used after an upgrade, and rebuilding them can take hours on even a moderately sized instance. We must provide the ability to reuse these indices where appropriate and the documentation to do so correctly.
The documentation for the SonarQube platform should incorporate the documentation of the three commercial editions; all of which is currently segregated away from the platform documentation in the Plugins space. Features provided by commercial editions should be clearly marked as such.
As a user or a developer, having an issue tracking system by commercial feature like Governance, Branch, Developer, ... doesn't make sense anymore. I expect to have one issue tracking system that covers SonarQube in all its editions (and still one for each code analyzer).
- Hide from the Marketplace and the extensions/plugins directory the editions plugins by moving them to a new lib/core-extensions directory
- Produce and distribute 4 SQ zips instead
- Continue to generate the 3 edition bundles as long at 6.7.* is supported
- Move embedded plugins from lib/bundled-plugins to extensions/plugins (i.e. install them by default)
- Prompt administrator users for license on login in Commercial versions until a valid license is applied
- Remove upgrade/downgrade buttons from Marketplace page: only "Learn more" links remain on editions other than the current one
- "Learn more" links include server id, instance LoC and link source edition (SQCE, SQDE, ...) arguments
- Move edition descriptions into onboard docs and drop use of generated description file
- Remove upgrade/downgrade possibility from License page, i.e fails if the license doesn't correspond to the current edition
- Add the current Edition name in the footer
- Back end
- Remove the ability to have privileged plugins
- Align licensing with the new editions but keep code analyzer, SonarLint compatibility
- Drop code which supports installation of editions
- Add ability to reuse ES indices after upgrade
- Merge edition docs into the main confluence space
- Update the upgrade procedure to copy plugins from old instance selectively if at all
- Merge GOV, BRANCH, DEV, HA Jira projects into the SONAR project. LICENSE will remain a separate project.
Plugins related to SCM and Authentication
- LDAP should also be bundled into the distribution
- The documentation of SonarQube should incorporate the documentation of SVN, GIT, LDAP.
- CVS should be offloaded to the community
- Add remaining edition docs into embedded documentation (Branches has already been moved)