Gitlab features that are moving to open source
about.gitlab.com
about.gitlab.com
Yes, we actually started by making making Enterprise Edition actually open source. When we announced there would be a proprietary part of GitLab people mentioned that Wordpress plugins where able to make it work with an open source license. It was a comment on https://about.gitlab.com/releases/2013/08/22/introducing-git... but the comments there seem to have disappeared. So instead of making it proprietary we licensed it with an open source license but without offering a download, you had to pay to get access to the source code (this is similar to the Wordpress plugins and also not unlike Red Hat Enterprise Linux updates).
We were afraid that people would put up a mirror with the paid code, this didn't happen. But our customers told us that it was hard to justify paying for open source code, they got lots of questions from their managers. So we switched to making the additional features proprietary.
We tried charging for support but it is hard to make enough margin to be able to invest in the things we wanted (scalability, security, library upgrades, easy of use, etc.). People tended to cancel after they didn't use support for a year. I believe that most companies charging only for support are tempted to make the product harder to use to increase the need for support. More about the business models we tried can be found on https://about.gitlab.com/blog/2018/11/09/monetizing-and-bein...
https://sourcehut.org/blog/2019-10-23-srht-puts-users-first/
Though it's definitely easier to go with the GitLab approach to monetization, I pointed out a lot of problems that these incentives set up. I'm not sure how you're going to avoid some of these problems. That being said, I imagine that it would be extremely difficult GitLab to change course so sharply at this point in its life.
To be clear, I recognize that GitLab EE, as a source-available distribution, is a measurable improvement over GitLab's closed-source offerings. I think GitLab is a valuable tool and an ecosystem without it is poorer than an ecosystem with (though, an ecosystem without SourceForge would be nice...). I hope that you guys are able to balance your incentives and stick around to provide a good service to the community, and I hope you keep it up with merging EE features into CE.
I can't tell you how many times I have heard from a suit and tie buyer that they can't justify paying [that much] for open source, and even when you can answer that question in a compelling way, the message is diminished along the way to procurement. And that's erosion of margin.
You're right that there is an inherent conflict in freemium between the free version's feature set and the paid-for version, but that just means you need to weigh your options carefully along the way, and ideally come up with some simple to understand strategies/rules of thumb that your team can use when deciding where the products need to go.
Note also that it's not like other less controversial models aren't without conflicts of their own. For instance, support models set up a conflict with the quality of the product, because high quality, "It Just Works" products don't help users value support highly -- yes, even when the users are Fortune 100s, amazingly. Similarly, SAAS models are naturally incentivized to make the software complex, undocumented, hard to install and challenging to operate, lest the value proposition of the paid offering becomes convenience only, which is very hard to capture margin with for relatively low-volume B2B products.
In the end, I guess I'm saying that Gitlab's approach isn't necessarily easier; it's just much less risky and therefore scales much better.
Unfortunately, the Oracle/IBM marketing of "Opensource is trash" has proven to be very sticky so selling OSS to Enterprises companies can be a hugely uphill battle when managers think that OSS products are inherently low quality in comparison to highlghy priced "brand name" stuff. Giving them away for free with paid support is very contraproductive when your purchaser has this line of thinking - they just percieve this as "this product is so bad they need to give it away for free".
Off topic but while you are here I was wondering if gitlab would consider having the bot that tags issues as open for community contributors not tag issues on enterprise edition features since community members are unable to develop on these and it makes it hard to find issues that are actually open for the community to contribute to.
This is, unfortunately, a real problem. I've worked in huge companies that will happily shell out hundreds of thousands for Atlassian crap, but if you were to suggest paying less for a better product that could be got for free you'd be laughed out of the room. What's more likely is the fact that it's free would be used as its main selling point.
Free Gitlab got our bosses attention. Once they saw the value it added to the org. our managers started bringing up the Enterprise license. Not us techs, we were fine with the free version.
I agree with this. Many advocates of open source software continue to push the paid support option as a viable route for open source developers. But often the suggestion is made without thinking through the implications of such a proposal. And the idea of deliberately making a product complex or poorly documented in order to encourage paid support is inherently unattractive to any customer.
For solo developers or small developer teams, I can't think of anything less appealing that having to focus on paid support as the benchmark for financial success for their business.
A paid 'source available' option is one way to charge for the actual product and give your customers access to your source code (which can include provisions to modify the source code). This model may not be popular with open source advocates, but it provides a way for the developers to keep their focus on the product and on making it as easy as possible to use.
In fact this model isn't new. There is a long history of developer tools sold, not as open source, but with the source code available for modification and incorporation in to other products.
What would really help me is a self-hosted pricing tier that includes things like epics and roadmap management, for something like $2/user/month. No need for support, just a way to contribute to the product without breaking the bank. After all, we're already self-hosting the software, so without support exceeding that of the free tier it wouldn't cost Gitlab a thing, but it would allow smaller companies to support Gitlab financially.
This "everything must be free" mentality is driving me crazy. And yes, $2/month/user is still ranging in the "free" region, even $4 is ludicrously cheap when you are even a minute more productive each day. Somebody has to pay Gitlab's employees and VC money wont do this indefinitely.
Not per employee, per user! Letting customers file issues and participate in the process can be impossibly expensive if they're paying $10/month for your product.
Admittedly the $99/seat/month supports free guest users.
edit: just checked:
education: https://about.gitlab.com/solutions/education/
opensource: https://about.gitlab.com/solutions/open-source/program/
But these pages are not easy to find, I had to use search. This should be mentioned on the pricing page.
TBH all these features on Gold and Ultimate for free are game changers (specially Gold since you won't need to manage and install so many things that used to be many different systems), GitLab should advertise it more.
> Your project must not seek to make a profit from the resulting project software
Maybe Gitlab should also stop seeking profit from their project software.
"Open source is great! We heavily rely on open source! We support open source! So let us maybe give you a key that lifts artificial restrictions from our proprietary code. Only if you're open source. Oh and you mustn't do exactly the thing we do: try to make profit with open source."
If I had made something Gitlab needs, they would not need to ask me to give anything for free because that's what I do by default. I don't build artificial scarcity in my stuff.
> Your project must not seek to make a profit from the resulting project software
My project is my job, it's OS but I need to profit from it. I don't mind paying, but just per project. I just don't want to pay for the thousands of people on it who's just making spelling corrections.
Besides, epics and roadmaps pushes the price to $19/user/month, which we can't afford. $4/user/month might be possible, but the epics and roadmap features are a must have at that point.
I think something like $3000 one time payment should be enough to clone the feature from scratch.
It would be nice to have country-dependent pricing, relative to their poverty index or some other quantifier. That way everyone could afford to pay for the service and would "feel" the price in a same way.
I am aware of expenses that are the same for maintainers, no matter where their clients come from. But wouldn't it be nice?
In our company we are going to experiment with such pricing to give everyone equal chance to use our software. Some countries are going to have it for free.
In many parts of the world, $200 is a salary.
The tiered pricing concept and the upgrade pushed by induced demand and "Parkinson's law" has changed the world as it allows companies to start working using free or low priced tiers instead of needing high initial capital. As these companies grow, they will use more features and pay more.
I'm not sure how to understand this. In American practice, salaries are quoted annually. You pretty much have to look at sub-Saharan Africa to find annual earnings that low. In Chinese practice, they're quoted monthly. That covers a lot more of the world.
Mostly this comment is a note that "is a salary" isn't really a meaningful predicate. It means wildly different things in different places.
I haven't used GitLab for a while because most of the projects I'm working on are on GitHub, so I can't comment on GitLab CI.
The most common case where this matters is if someone pushes a failing commit to master, and then all PRs based on that commit will also fail, and then a fix is pushed to master. With Travis, you just need to re-run checks, but with GitHub actions, all those PRs need to be rebased on the new master.
Actually, actions/checkout will check out the merged tree by default.
Sorry, I'm honestly not familiar with Gitlab CI. I was just originally mentioning how the use of Docker in Github Actions allowed for amazing flexibility, which I thought was cool.
What makes Gitlab CI a better or more polished API than Github Actions? At first glance they look very similar
Allegedly there's a way to cache image layers and artifacts on Github. I've taken to pushing them to S3 buckets so my CI runs can be incremental where possible.
See [1] actions/cache for more details.
I have done elaborate pipelines in Gitlab, and echo the thoughts of it being lightyears ahead.
Bitbucket works well and the Pipelines functionality is a life saver for us. I wish I started my projects differently though. After bringing on my first employee it takes a lot of reorganizing of the projects to get them access to it. That's not an issue with Bitbucket though... just a cautionary tale.
If GitLab truly cares about open source (and I believe you do), you should be protecting the term from misuse.
Just because you own the domain name doesn't mean you get to be the only source for a word's definition.
Calling software open source when it's not is lying at best and outright fraud at worst.
This isn’t true. They used an existing term. Have you ever wondered why it’s not a trademark to protect it? They weren’t able to trademark because it was an existing descriptive term.
The OSI don’t own ‘open source’.
> It's not a trademark because they didn't apply for one.
Not true!
They were applying. It wasn't working, so they gave up, and it lapsed.
Source:
https://opensource.org/pressreleases/certified-open-source.p...
"OSI's application for an Open Source trademark had lapsed"
Why did they let it lapse? Because (as they knew) it wasn't trademarkable as it's a simple generic descriptive term.
"We have discovered that there is virtually no chance that the U.S. Patent and Trademark Office would register the mark "open source"; the mark is too descriptive."
> The origin of the term is well documented: OSI did invent it.
Not true!
See the links the my sibling commented posted for prior specific examples of 'open source software'.
And of course 'open source' is just a normal phrase that's been in use for much much longer! That's why they can't trademark - it's just a normal phrase people were already using.
The trademark is front and center in their (original) mission statement:
> The Open Source Initiative's mission will be to own and defend the Open Source trademark, to manage the www.opensource.org resources, to develop branding programs attractive to software customers and producers, and to advance the cause of open-source software and serve the hacker community in other appropriate ways.
[0] The OSI claims to have coined the term in 1988 https://opensource.com/article/18/2/coining-term-open-source...
[1] Here is a use of the term, 7 times, and as the main object, from 1996 http://www.xent.com/FoRK-archive/fall96/0269.html
[2] Here is a use of the term, as a proper noun, from 1993 https://groups.google.com/forum/#!msg/comp.os.ms-windows.pro...
They may have failed in the end, for a numer of reasons, but they were very rigorous in their search of prior usage and very open about their work. We can speculate in retrospect about what could have done differently, but saying they used an existing term is wrong both in intent and in practice.
Developers just want it because it'll allow them to sell the product to their director.
I'd like to turn off Kubernetes integration for example.
Down to starter: epics, roadmaps, HA, Free Guest users Down to premium: SAST, Dependency Scanning, DAST, Vulnerability Management
I just wished they had moved Scoped Labels to Free too.
And I would love that the SAST framework goes to Free too and kept have the security scanners Premium. That would allow to have basic code coverage directly in Free, without the complex static analyzers, which would be reserved for premium...
GitLab Product Manager here. You can generate code coverage reports today and use the generated value to populate a project badge value (https://docs.gitlab.com/ee/ci/pipelines/settings.html#test-c...) or publish the report(https://about.gitlab.com/blog/2016/11/03/publish-code-covera...).
We understand these are not the only use cases for code coverage and really just scratch the surface. We are working on the next set of features to build this category out further and would appreciate any input you might have on the issues there(https://gitlab.com/groups/gitlab-org/-/epics/100).
Thanks!
-James H Product Manager - Testing
https://gitlab.com/gitlab-org/gitlab/-/issues/10103#note_152...
Repository push mirroring is available in CE, but pull mirroring is a paid feature.
https://gitlab.com/gitlab-org/gitlab/-/issues/19095#note_272...
Take for example:
- Code coverage reports:
You can have one absolute number to get your total coverage. To get the number you have to provide a Regex deep down on the main project settings. This Regex has to match some log output of your CI job in order to be picked up, e.g “Total 87%”.
Why can’t GitLab collect cobertura Test reports for example?
- Unit Test Results:
Collecting JUnit test results is disabled by default, since there is a warning about a performance issue when collecting them https://docs.gitlab.com/ee/ci/junit_test_reports.html#enabli...
- collecting multiple artifacts as HTML pages:
to circumvent the above downsides, you can get creative, and generate HTML websites of the Unit test and Coverage reports themselves and publish them somewhere. An ideal place would be GitLab pages.
But you are only allowed to have one publish job for GitLab Pages. And this publish job has to have a special name so it is recognized for publishing GitLab Pages. The artifacts you want to publish have to be in a special named folder in order to publish them. So you fallback to some hackery by using “mv,mkdir”
https://about.gitlab.com/blog/2016/04/07/gitlab-pages-setup/...
These were some examples which I find not that exotic for a CI setup and I know from previous experience that Jenkins handles all these with ease. To circumvent this shortcoming, we introduced SonarQube.
I feel that people often are drawn to a shiny, small GitLab CI yaml and are happy to get started so fast. But again having Jenkinsfiles with shared libraries, which you can program in Java and Groovy, is superior to the next yaml include/extend you are going to add.
My 2cents are that:
If you are a solo developer or a small company Gitlab might be fine for you. When your company is larger and you want to be able to share knowledge using shared libraries, have a streamlined CI setup with GitLab includes from multiple departments, GitLab gets tough.
How could one be confident to use for example their 1-click deployment (autodevops) Feature if the implementation of CI basics like collecting test results and coverage reports have this weird taste to it?
I wish these features will get better and please don’t take this too harsh. My tone might sound worse than it is.
GitLab Product Manager here. I really appreciate the feedback on those features and it helps inform some upcoming work to make them better. The team is currently working on improvements to JUnit parsing (https://gitlab.com/groups/gitlab-org/-/epics/2854) so we can enable those Junit reports by default.
We are also working on the next set of code coverage features to build this category out further and would appreciate any input you might have on the issues there as we're prioritizing and scheduling for the next few milestones (https://gitlab.com/groups/gitlab-org/-/epics/100).
Thanks!
-James H Product Manager - Testing
You can still get it by paying for it. In the end GitLab is a business, someone needs to pay something. As developer who runs a GitLab server for personal projects I don't miss any paid features.
Say as an example that Debian, which has a big user of GitLab wanted this feature, so the Debian project contributors create all the patches & submit them for inclusion in the open source part of GitLab. Normally, a project would welcome any (presumably) well written patches like this. But with open core project this creates an instant conflict of interest.
Either GitLab takes such patches, loosing their proprietary edition exclusive feature & possibly even compatibility with their closed source implementation of it. Or they reject the patches, presumably loosing a lot of goodwill with the community and forcing Debian to maintain those patches for ever in their own fork of GitLab.
All in all, I don't see open core companies like something to invest ones contributor time to due to this & more importantly like something to use and make you open source project to depend on.
The Enterprise Edition is under a different license but the source code is open and available to everyone.
And I'm afraid contributing to a "source available" project that is not even open source will be even harder.
"The community" is often vastly overrated anyway IMHO. Patches are always good, of course, but people who actually consistently invest time in a project are exceedingly rare. You can't build a product based on sporadic patches. Besides, a lot of the time "the community" is just users (people with no contributions) complaining you're not doing stuff right.
Unless you have a viable (preferable proven) model that allows GitLab to hire developers and keep everything 100% open source, it seems to me this is the best and most balanced option. To the best of my knowledge, such a model doesn't really exist.
I continue to be surprised at the hesitancy (or even outright hostility) whenever someone tries to make an economically viable open source product, which usually involves things not being 100% open source because turns out, that's the only way to make things viable. "90% open source" is a hell of a lot better than 0% open source in my book.
Even if it is viable, you're usually leaving a lot of money on the table, and even Red Hat – the poster child of this model – does stuff like releasing updates to paying customers first.
https://about.gitlab.com/blog/2018/06/05/gitlab-ultimate-and...
I don't see how that fits into the pricing scheme outlined in the post either, unless they consider the maintainers of a project to be managers?
GitHub was late to add it, but that doesn't mean it wasn't a glaringly missing feature from GitHub before then. Other open-source system like Gerrit and Phabricator have had approvals since their inception, I believe.
edit, just to say: I really don't get the manager tie in to approvals. I've never worked on a team where approvals were done by managers. It's always other team members, and especially required when you have code owners of different parts of the codebase.
In contrast like SAST and DAST is far more common to be a requirement in large enterprises and that’s in the much more expensive tier as a result.
If I remember correctly, you don't actually get notified of any +1 reaction.
But then, is Gitlab something a single contributor for a private repository anyway? I'm sure there are use cases, but for most individuals working on a private repo, gitlab is probably overkill.