Initially, LinkedIn was just another site where you could find jobs. It was simple to use, simple to connect with others; it even had some friendly groups with meaningful discussions.
And then it gained monopoly as the “sole” professional network where you could actually land a job. If you are not on LinkedIn now, you are quite invisible in the job market. Recruiters are concentrated there, even if they have to pay extremely high prices for premium accounts. The site is horrible now: a social network in disguise, toxic and boring influencers, and a lot of noise and bloated interface to explore.
When Google decided to close their code.google.com, GitHub filled a void. It was a simple site powered by git (not by svn or CVS), and most of the major open-source projects migrated there. The interface was simple, and everything was perfect. And then something changed.
GitHub UI started to bloat, all kinds of “features” nobody asked for were implemented, and then the site became a SaaS. Now Microsoft hosts the bulk of open-source projects the world has to offer. GitHub has become a monopoly. If you don’t keep your code there, chances are people won’t notice your side projects. This bothers me.
Rant over. I hate internet monopolies.
All of what you said seems completely doable to me.
Primarily I want it to comment/annotate changes so peer review focusses on logic and warnings are clear.
You can. See https://docs.gitlab.com/ee/ci/variables/predefined_variables.html
CI_PIPELINE_SOURCE
How the pipeline was triggered. Can be push, web, schedule, api, external, chat, webide, merge_request_event, external_pull_request_event, parent_pipeline, trigger, or pipeline
You have full access to the API and can do whatever you want in the MR too.
I want the ability to specify multiple reusable pipelines, in a central place. This is not possible in cloud.
You can, with CI templates. Templates can be in a completely different repository
Lastly I would like to have multiple potential pipelines in a repository (e.g. smoke test and release).
I do have different pipelines for staging and production in my projects with no issue.
Try to do it and get back to me.
For extra fun try to do it in cloud and server, you’ll realise some stuffis server only, some cloud only and the docs don’t tell you which one is true