KDE is adopting GitLab
about.gitlab.com
about.gitlab.com
Of course this has the risk that contributors spend much time on making a patch pass all tests and then get it rejected, since maintainers don't like the feature.
Hopefully leveraging GitLab workflow will make things easy.
Signed, a mostly inactive KDE developer
While great for companies who can deal with the onboarding cost, it adds a lot of friction for an open source project so I can see why they move to Gitlab, even if it's less powerful.
The default phabricator workflow really likes to squash many commits into a single diff. How do you go about preparing a "stack" of changes, prepare one diff for each git commit, and then apply changes on top of each one as review comments come in?
I've ghetto-rigged my own scripts to generate stacked diffs, checking out a new branch for each one, but it's fragile, and not really suitable for sharing with all new team members.
I have not found a magic arcanist incantation to generate a changelist based on multiple commits.
That problem also noticeably cropped up when Mozilla switched to Phabricator for its reviews, and the end result was/is that there's now an official helper script for submitting commit stacks without squashing ("moz-phab").
Because that took a little while to develop after Phabricator became mandatory, though (and also because installing arcanist with all its required dependencies can apparently be somewhat of a pain, plus because arcanist has some further foibles like insisting to actually check out each revision you want to submit, which then subsequently can lead to needless recompiling), some people wrote their own solutions, which a) were ready earlier than the official solution and b) allow you to avoid installing arcanist at all:
- "Phlay" for Git (https://github.com/mystor/phlay)
- Mercurial already has the "phabsend" extension, which was then forked and extended and currently lives at https://bitbucket.org/KwanEsq/phabsend-moz/src/default/, though I think some changes might have actually made their way back into the original phabsend extension distributed with Mercurial (one problem with the official extensions as of a while ago was that it used a Phabricator API that didn't work for binary files - I think this has been fixed in the fork, but not yet in the official extension included directly with Mercurial).
(Also I think that there's currently work underway to make "moz-phab" work without a local arcanist installation, too).
So the takeaway from this is that there is indeed no good official solution for this, but "phabsend" or "phlay" might be a better starting point.
I really want to wanted to like Phabricator, but every interaction with arcanist just feels like hitting the "I'm feeling lucky" button. It completely violates the principle of least surprise. To me, at least.
My new team is using Github. Can Github be wrangled to enforce a rebase-on-merge workflow with PRs? I am committed to keeping the "one commit per idea" mantra, but I don't see any way in Github to enforce "no-merge commits."
Does Github keep track of comments across PRs if they are rebased? I don't want to see extra commits on top of PRs that consist of things like "address reviewer A's comments," but I do want the comments tracked on Github. Is this possible?
You then set your .arcrc base to git:HEAD^ and have one local branch per stack, submitting each via arc diff. There a 1:1 mapping between revisions and commits, which makes things a LOT easier, especially rebases. You can then use an interactive rebase to re-visit and amend old revisions, or land them.
I also have an autodiff alias in .arcrc that will automatically create a new revision and open it in the browser, assuming the Test Plan field is already filled out in the commit:
"autodiff": [
"diff",
"--allow-untracked",
"--verbatim",
"--browse"
]
And useful .bashrc aliases for working with a stack: alias cascade-show="git log @{push}..HEAD --oneline"
alias cascade-amend="git rebase @{push} -x 'arc amend'"
alias cascade-rebase="git rebase -i @{push}"
alias cascade-autorebase="git rebase -i @{push} -x 'arc diff HEAD^ -m Autorebase'"If you guys that use GitLab or GitHub or alike would have to switch to pure git - what is the one thing you would miss most?
When you work in a team and want to be productive, pure Git just doesn't provides the tools.
Also comments on issues are a crucial part of the documentation for devs.
"Looks like this does not work as documented" "Yes, this corner case is a bug, will be fixed soon, use this workaround in the meantime".
These projects too will benefit from a independent CI-service validating their commits.
Generally speaking you'd set up your own "synchronisation channel(s)" for such tools e.g. mailing lists.
The point of github / gitlab / etc is to have all the tools in one place, nicely integrated
I personally feel gitlab/github are useful from community and collaboration aspects - there is nothing I couldn't do without github on my solo projects from purely technical point of view, it's strengths are issue tracking, pull requests, wikis, distribution of code.
- Issue tracker
- Merge requests that are easy to analyze
- Ability to put comments during a code review on specific lines of code and discuss it from there
- Embedded wiki for a project
- Managing different access rights to different repos
I couldn't see myself using pure git without any additional tooling for anything more that personal projects that I work on alone.
Because Atlassian manages to extract boatloads of enterprise money for a product portfolio that can be best described as an inconsistent, unintegrated mess.
Everything they have was bought together and crudely integrated, with each product having totally different ways of using and administrating them. Not to mention that core features (e.g. "merging" duplicate user accounts, SAML login) are paid-for plugins of varying quality. Feature suggestions for the products end up in multi-year-old tickets that one has no way to influence.
But still, enterprises are buying up that crap because the alternatives to JIRA and Confluence plainly suck even more. The only thing that has real competition is Bitbucket, with Gitlab and Github as more than viable alternatives.
One such 'feature request' is 'unsubscribe from email': https://community.atlassian.com/t5/Jira-questions/How-can-us...
Mental.
I have a rule to send it all to spam.
That's like asking if shitty burgers really "justify mcdonalds valuation".
Maybe you are not impressed with the product, but millions of people are interested in buying it.
For years Gitlab had a better offer then Github, and yet github was always more popular due to the network effect.
It’s pretty hard to claim a technical moat when most of what you sell can be replicated with a repo fork.
Without signing a contract or even having the board or upper management discuss it, the organization is now entrenched with this piece of software. Comes along a new regulation for your industry; GPDR, SOX, HIPAA, etc. It doesn't matter. What do you do? Fortunately, the provider of your "open source" (or rather: open core) solution offers features supporting your use case. You just have to upgrade from the MIT-licensed core, community edition to the enterprise edition, for $xx,xxx per year.
When arguing why it’s better than alternatives, the talking point is that “it’s open-source!” But when it’s (rightfully) pointed out that this doesn’t leave much of a defensive moat, the open-source philosophy gets thrown under the bus.
Yes, yes...it’s “open core”. That just means that it’s 10% more difficult to clone and replicate the business. Mark my words: someday, Gitlab will do something to piss off the “community”, and this will quickly happen.
It doesn't matter if you can clone it exactly tomorrow. Go ahead and do so. It won't give you the same valuation and it won't hurt theirs because that's not how it works.
Gitlab as a company is about a precarious as Docker as a company. Most of its users are using it for free, and the few that are paying would happily pay anyone else who provided support for the same software. It’s a commodity.
But yes, many people also pay Gitlab for enterprise features (which are not open-source), hosting, support, and more. If they would pay anyone else then why aren't they using Github? If they just wanted git itself then why aren't they using the numerous lightweight alternatives?
Business isn't as simple as replicating a product, it's about selling value, and Gitlab has a unique solution that covers the entire software lifecycle. I'm sure you know all this but yet you've made numerous posts disparaging this company. Why, exactly?
True, you could start a burger chain for a lot less than $10m...
source: https://lists.sr.ht/~sircmpwn/sr.ht-discuss/<BVRVZEWYB30Q.3H...
You are greatly overestimating your abilities.
Markdown is already rendered in the repo and can live next to the code. Meaning that merge requests can update both the code and documentation at the same time. And GitLab / GitHub have embedded editors that allow you to edit the markdown files using from the browser, just like a wiki.
Basically the only thing that is left is that the wiki can be edited without supervision.
Then again I'm not sure how many non-technical folks are willing to dig into GH anyway. I've heard Issues & friends called "too confusing" for "non-technical" folks, in favor of Asana and Jira, of all things. Huge WTF from me since I'd say the opposite is strongly true regardless how "technical" one is, but that's the perception I guess.
I've always been an advocate for the "markdown in the repo" scheme with CI-generated Sphinx (or whatever) docs, but these features have really won me over to the standalone wiki at least in some cases.
Yes, that's a significant difference. Publically contributed information (Wikipedia, Stack Overflow) can be quite good.
---
Another difference is that the wiki is not versioned with your code. (An entirely separate repo, but stil logically connected with the code repo.)
HEAD of wiki is documentation for version 1, version 2, version 3, etc. of your code.
That may be a good thing; that may be a bad thing.
There are bug trackers that have more features compared to Github/Gitlab.
> Merge requests that are easy to analyze
You can get that through pure git by using git format-patch and git send-email
> Ability to put comments during a code review on specific lines of code and discuss it from there
You can get that by replying inline to the email containing the patch (much like I'm doing here when replying to a certain part of your comment).
> Embedded wiki for a project
That could be maintained in the docs directory of the project
> Managing different access rights to different repos
Given that the project maintainer(s) maintain access to their repos, they could just as well handle the access rights without having to rely on Github/Gitlab.
You could replace those with TODO/FIXME comments in the code and .md files checked in git though.
Fossil seems to offer the best of both worlds, but unfortunately it's too confidential and no one else seems to use it.
Github & Gitlab do tons of things which pure Git does not:
- issue-tracking
- wikis / documentation
- release and package-management
- CI
- a free of cost (and effort) "public facing website" for your project by default
- notifications to collaborators
I'm sure there's more I've missed which I would remember in a heart-beat if I was forced to go plain git and were suddenly without, but those are the most obvious ones I can come up with without even thinking.To a one-click view of CI pipelines, that's nice too.
- Search (across code, issues, pull requests etc)
- Issue tracker (~ manage my backlog, write down potential ideas)
- Pull requests, review UI around them
- GitHub Apps and Actions (~ automation) and integration with third-party tools (auto-deploy changes to zeit.co / netlify / heroku etc).
- Security audits (GitHub can send pull requests to bump my dependencies when security vulns are discovered in them)
- Ability to contribute without having to fork/clone/push changes (I quite often contribute to projects by editing the code directly through the GitHub website).
Whenever I do that I get as far as the commit message and, lacking vi and a 72 char marker, commit 'wip', pull down the changes, amend the commit, and wish I'd done the whole thing locally faster and more easily in the first place.
Is it you or the project owners who care about the 72 character limit? IME most projects will accept contributions regardless of formatting of the commit message. Most people are just happy about contributions, regardless of source.
Primarily they're communities which grow in value based on the number of developers and projects hosted within them.
Some of the powerful resulting centralized features are:
* The social / team functionality - collaborating on code review, receiving notifications on repository activity, managing access control across multiple codebases
* Code discovery - the ability to find projects which use a particular library, search for (and subscribe to) issue reports/fixes, follow other developers' activity
These could more-or-less be achieved by configuring individual repos and setting up your own email alerts and notifications; GitHub & GitLab just make it very convenient and bring it all together in a single place.
https://her.esy.fun/slides/git-project-manager.html
Mostly, project-management features.
In terms of what I would miss if we had to move away from GitLab, it's having remote repository management and continuous integration in one spot. In the past when a new project started, an administrator had to setup the repository and link in SSH keys, that same person had to setup Jenkins for the CI workflow. With GitLab, developers can set these things up on their own.
And there's one less tool to manage.
You can use something like GitHub/GitLab for most all of these tasks, but it's a bit overkill on things like maintenance and hardware requirements if your needs aren't great.
On my local machine, there's nothing stopping me from using any Git client I want, including the Git CLI..
While it has plenty of features, it's not as user-friendly to use as Github or Gitlab. It can also be confusing at times.
I'm glad they're moving to Gitlab and I hope it'll bring some new contributors.
It does, IMO. Bug tracker categories rarely correspond cleanly to code repositories. And if you have large repositories then GH/GL issue tracking just gets unwieldy.
Gitlab's issues feature just isn't powerful enough to be more than a developer's task list. Since it's completely label based, it's hell to use when you've got bug reports coming in from non-contributors. Even classifying issues by OS needs to be done through labels...
Just take a look at https://gitlab.gnome.org/GNOME/gimp/issues. I'd prefer to spend time triaging my bugs, instead of labelling them.
Plus, it's good to have a gap between user-generated bug reports and developer tasks.
Take a look at 'Project Settings' > 'Integrations'. AFAIK It will display the "Issues" link but will redirect you to bugzilla, and some other UI integrations.
This feature looks interesting, but this feature is sadly only available in enterprise edition.
This is my problem currently with the move from Phabricator to Gitlab, we are losing tons of features: review approval, meta project (documentation, visual design group, promo, website, ...), mockups, meta tasks and more. And those features exist but only in the enterprise edition, that is not open source.
I always felt like the second point is what really turns potential contributors off from Phabricator because there is no one "page" in it for a specific project, and unlike a lot of would-be good Phabricator use case KDE hosts all kinds of software with no relation to one another. Having them all occurring in a global issue namespace which is basically just tagged per-project and having to go through several directories to find the same project in different Phabricator applications is just a burden at that point.
https://gitlab.com/gitlab-org/gitlab-foss/issues/53206
Nothing on the mailing lists as far as I can tell.
* Development and maintenance of Phabricator has slowed down a lot.
* People were claiming phabricator was old-fashioned and confusing and hoping a merge-request based workflow would be more inviting
I'm the maintainer of one of the test projects that moved to our gitlab instance, and it's mostly fine, we're missing things in the merge request workflow, but have papered around that with labels (https://invent.kde.org/kde/krita/merge_requests), but we're still using phabricator for task management because it's so powerful for that that we cannot move that part of our workflow to gitlab yet.
From the conversations with the KDE team (they might chime in with more context), the main goals were:
- More accessible infrastructure for contributors
- Code review integration with git
- Streamlined infrastructure and tooling
- Good relationship and open communication channel with upstream (GitLab in this case)
https://gitlab.com/gitlab-org/gitlab-foss/issues/53206
> Maybe there were some discussions in some public mailing lists?
I believe there were some other threads as well, but for a start, here is one of the discussions on the kde-devel mailing list: https://marc.info/?t=155091510600001&r=1&w=2
But yes, I agree with you, if you use Phab as a code-review or source code hosting platform, it's pretty confusing.
We're also hoping to see them contribute back features to GitLab they need for complex projects, and I think we've already seen a few.
Also, this blog was published when Freedesktop announced their move to GitLab (incl. CI): https://www.fooishbar.org/blog/gitlab-fdo-introduction/
We actually have a panel with representatives from Freedesktop, GNOME, and KDE at GitLab Commit in London (https://about.gitlab.com/events/commit/#schedule)in a few weeks discussing their experience with GitLab.
So far in the past 2 years, we have had only 1 spam merge-request.
Granted with Microsoft ownership there's less chance of Github becoming cash desperate, but it seems possible if somewhere down the line Microsoft loses active interest and goes on life-support, and Microsoft decides that the property is no longer worth protecting from the arbitrary whims and corporate commercial strategies internally.
Also, Google had a Gitlab/Github-style page until a few years ago, called Google Code. Obviously, they weren't interested on that venue anymore.
Because Github and Gitlab was eating up the userbase left and right. The utter lack of any progress/development on Google Code itself was the nail in the coffin driving people away.
I also doubt it made any revenue
There’s a big difference to Google execs between technological and commercial success. It must be very, very interesting to be a fly on the wall of their high level product management meetings.
Why?
Gitlab is actually open source. Although we actually pay money to Gitlab for support since it's so cheap. We run our own instances and would be fine even if a FAANG bought it and killed it.
The ability to self-host is actually one of the differences between Gitlab and Github.