So, I left GitHub. Thankfully so. Only at my work, and because I’m working on Atom, I keep code on that service.
For a while GitHub was degrading into a service that I felt I was not the target client anymore. In the beginning, GitHub felt like a social network for nerds – a place where we could share code, make pull requests, make the code talk instead of other things. Forking was not a bad thing anymore, because we could track who forked, what they were working on, and how to contribute or get their changes in any time.
Now, GitHub feels more like a enterprise thing where things are bureaucratic and you can’t trust anyone. A place filled over the top with telemetry, where you and your code are the product (regardless of which license you choose for your code) and where you must add “rules” for everything otherwise you’ll be bothered over and over again.
I’m referring to the new “please protect you branches” and “add requirements to merge PRs” popups, obviously.
Don’t get me wrong: it’s good to have these features. What I actually don’t like is how they expect everyone to add these. In all seriousness: if you don’t trust someone, don’t add that person to your repository! Force the person to fork your code, and then do PRs.
Maybe on some organization this can’t work, and that’s fine too. But let me choose if I want to add rules – do not suggest then to me like “it’s the right thing to do”. I hope I can trust my co-workers to not merge PRs that were not reviewed, or that tests did not pass. I hope they know if a feature or bugfix is too urgent, or too simple so they want to bypass these requirements.
I work in software development for about 20 years now, and I’m from a time where people were still trying to convince management that having an “IT Analyst” making all decisions on what should be done and what not, with “Programmers” below it doing code is not a good thing, that it lead to poor code and gatekeeping.
Now replace “IT Analyst” with “Code Owners” and “Programmers” with “Software Engineers” and tell me: do you see a difference?
Why are we going back to the old ways? What happened with the “Individuals and interactions over processes and tools” from the Agile Manifesto? Why the company that actually changed the way we develop software is pulling on the other way? Will Gitlab, Gitea, and others copy these “features” just to be the same as the “main competitor”, exactly the same as tech companies keep re-implementing features one from the others, just to not be left behind?