Distinguish Free plan from OpenSource program
Problem
We don't have a way to distinguish between projects on a Free plan vs projects on a plan related to our OpenSource program.
This lack of distinction can cause our system not to behave according to the expectations.
CI minutes discrepancy
Our OpenSource Program offers 50,000 CI minutes for FOSS projects. But FOSS projects are by definition public.
However, today any public project gets unlimited CI minutes. What's the advantage of joining the OpenSource program if a public project on Free plan gets unlimited minutes?
After a user applies to our OpenSource program and being told they have now 50,000 CI minutes, their minutes are not being counted:
Should OpenSource software get unlimited CI minutes instead? How should we align the two?
Application limits
We use job activity limit to limit projects on Free plan to create pipelines with too many jobs running at the same time. This limit, today, is set to 500 active jobs, which means that a user can't have more than 500 jobs in active pipelines at a given point in time. When this limit is exceeded, the new pipeline is immediately dropped.
While this limit works great to stop abusers, it does have an impact to community contributors to open source projects, such as GitLab.
Because a GitLab pipeline normally contains ~140 jobs and takes over 1 hour to run, it limits the ability for users to contribute to GitLab.
Having the ability to distinguish between Free and OpenSource plans, and having GitLab as well as other FOSS projects in that plan we could skip (or raise) the limit if the pipeline runs for a fork that contributes to an open source project.
Proposal
Create a new Plan Type for free OpenSource plans, and assign OSS customers to that new Plan Type.
-
Come up with the new Plan Type name - OpenSourceProgram
. -
Finalize a list of Zuora Product Rate Plans that should be associated to the new Plan Type: - [OSS Program] SaaS - Ultimate (formerly Gold) - 1 Year
- [OSS Program] Self-Managed - Ultimate - 1 Year
- [OSS Program] Self-Managed - Ultimate w/ Support - 3 Year (not really being used right now)
-
Create a plan name OpenSourceProgram
within GitLab.com plans table -
Modify plans controller within CustomersDot to sync OpenSourceProgram
to GL.com -
Add plan limits for the OpenSourceProgram
plan within GitLab.com. -
Assign the new Plan Type name to new subscriptions / plans - The new subscription created should have the new
product_rate_plan_id
of the OSS plans. The template from above step would syncOpenSourceProgram
to GitLab.com.
- The new subscription created should have the new
-
Assign the new Plan Type name to existing subscriptions / plans - Modify the orders within the CustomersDot to new OSS plan ids.
- Modify the corresponding
gitlab_subscriptions
table within the GitLab.com to use theOpenSourceProgram
plan. (hosted_plan_id
)
-
Modify gitlab_pipeline_minutes
within CustomersDot to sync new CI minutes forOpenSourceProgram
plans.