• Type: MMF
    • Status: Closed
    • Priority: Major
    • Resolution: Won't Do
    • Fix Version/s: None


      Context - Why

      Currently, what we offer with SonarCloud is a “SonarQube Developer Edition as a service”. We feel that also offering a “SonarQube Community Edition as a service” with a very attractive price will:

      • Convert existing SonarQube (on prem) users to SonarCloud paying customers
      • Increase the adoption of SonarCloud

      We can think about this evolution as "the current offering with the ability to choose the feature level when you upgrade your organization":

      • CE level:
        • smart code analysis for 9 languages, quality gate, leak approach, email notifications, SonarLint connected mode, WS API
      • DE level:
        • 7 more languages, support for branches/PR, SonarLint notifications

      Use Cases - What

      Without going into details for now, here are the use cases that we would like to cover somehow:

      • I sign up to SonarCloud and I'm doing personal open-source projects that I will analyse on my personal SonarCloud org
        • Nothing changes compared to what we currently offer.
        • On the Billing page of my personal org, I see that it is a "Free plan" org with "DE" feature level
      • I sign up to SonarCloud and I'm doing open-source projects with a team for which I need a dedicated SonarCloud org
        1. I click on the top right "Create new organization" button
          • Note: ideally, it would be great to have the "Paid" vs "Free" plan choice in this modal window - but this must be moved to a dedicated MMF
        2. After clicking on "Create", I'm redirected to the new org
        3. And from that point, everything is the same as the first use case.
      • I sign up to SonarCloud and I want a paid plan organization
        1. I click on the top right "Create new organization" button
        2. I go to the "Billing" page of the new org, on which I see that it is a "Free plan" org with "DE" feature level
        3. I click on "Upgrade"
        4. On top of the lines of code range, I have a way to select the feature level: "Community Edition" or "Developer Edition"
          • I expect so short explanation of the differences, maybe with a link to some external page ( ?) to have more details
          • It is clearly mentioned that this feature level will apply only to private projects - public projects still benefiting from all the available features
          • When I change the feature level, I see the prices that change in the "lines of code" dropdown
        5. If I purchase "DE", I will have exactly what we currently offer. But if I purchase "CE":
          • For public projects, everything remains the same as in the first use cases: all features are available
          • Once I have analysed my first private project, I will see that I don't have branches available (with the small hint on the project home page to tell me to upgrade)
            • When we detect that an analysis is done with branch or PR params, we can fail the processing on CE side with some message saying that this is available only with upgrade to DE
          • If I analyse C/C++ or Swift for instance, I don't expect the analysis to fail (think about multi-language projects) but I won't see any result in the project home page
            • Ideally, we'd like to see the C/C++ ncloc count on the project home page with a warning saying that those files were not analysed and a link to upgrade to DE if the user wants to get issues on those files
            • Those C/C++ files count even be imported and displayed with syntax highlighting - but w/o measures nor issues but a warning message at the top
          • When I go to my private project admin pages, I don't see the setting entries for the DE languages nor for PR decoration
            • Another solution to keep on doing some product marketing: I see them greyed out with a message that those features are available only in DE
          • If I have connected my SonarLint to SonarCloud, I won't get any notification for private projects (let's keep things simple here)
      • I am already in a CE paid plan and I want DE
        1. I go to the "Billing" page
        2. I have a way to upgrade to DE
          • I get an explanation that my plan will immediately move to "DE" - which will change my monthly billing date.
          • It also warns me that because I will have more languages analysed, the number of lines of code can significantly increase with the next analyses of my projects.
          • I am asked to confirm that I want to upgrade
        3. When I go back to a private project, I can see in its home page that I can get branch analysis, and if I run analyses on C/C++ (for instance), it will be successfully analysed and I will get notifications in SonarLint - great!
          • (nice to have) During the next analysis of my private project, SonarCloud creates an event to let me remember that this is when I upgraded to DE
            • This way, I will easily remember why there was a sudden increase of ncloc (for instance) or decrease of coverage (another example) at this very moment of my project history
      • I am in a DE paid plan and I want to get back to CE
        1. I go to the "Billing" page
        2. I have a way to downgrade to CE
          • I get an explanation that when I downgrade, my plan will immediately move to "CE" - which will change my monthly billing date.
          • It also warns me that all branches and PR of my projects will be deleted, and that I will also lose other DE related features (SonarLint notifications, modern languages)
          • I am asked to confirm that I want to downgrade
        3. I now get the same user experience as described in use case #2
        4. (nice to have - same as previously) I have an event on my private projects to remember that they moved to CE at some point of time

      Current design solution

      When upgrading an org to a paid plan you can now choose Community Edition feature level.

      When creating a new org, you directly have the ability to subscribe to a paid plan, and thus to choose your feature level.

      Please note that:

      • The "Organisation key" field is now renamed to "Name".
      • The field "Name" will be renamed to "Display Name" and be hidden inside the "Add additional info" link.
      • The fields "Avatar" "Description" and "Url" will also be hidden inside this link and be non-mandatory.
      • As a user selects "Paid plan", the pop-up window grows to a larger width to better display the subscription form.
      • The possibility to create an org inside the "Analyze a new project" wizard should disappear.

      When an organization is in Community Edition, Private projects don't have branches installed. The branches dropdown is greyed-out with a helper telling the user to upgrade to DE if he wants to enable this feature. Modern languages are detected but not analyzed. Here for instance we can see how many lines of C++ is in the project. But this information is greyed-out with a helper as well.

      These non-analyzed files will still appear in the Code page, but we can only see them with the correct syntax highlight. No Issues nor coverage information.

      When visiting settings pages related to Developer Edition features or languages, we'll make it clear that this is unavailable, and that the user needs to upgrade to get access to them.

      On their billing page, users can now change their feature level by clicking on "Edit plan".

      Implementation - How

      The following teams will be involved for this MMF:

      • Platform team (activation of features based on org-level subscription, update of the billing page)
      • Tooling team (support of this new edition on the Muppet backend)
      • Marketing team (update of the SonarCloud front pages)

      More details to come later once the solution (the "What") is validated.


      • Part of the implementation of "activating/deactivating features" will probably be very similar as what will be done in MMF-1271 (= having a single SonarQube distribution which activates features based on the license).
      • We should take the opportunity to fix a bug of the current behaviour regarding the Billing plugin: on public projects, we should never check anything and therefore not fail if the number of lines of code for the private projects has exceeded the threshold


          Issue Links



              • Assignee:
                fabrice.bellingard Fabrice Bellingard
                fabrice.bellingard Fabrice Bellingard
              • Votes:
                0 Vote for this issue
                4 Start watching this issue


                • Created: