Can't we do better than the current dev workflow?
CI sucks. Tests take forever, fail spuriously or magically starts to fail in new and amusing ways, it requires constant attention, even more than an baby breastfed with prunes.
Git sucks. No need to lament about complexity, just get used to it, my issue is how it barely helps with asynchronous development. Merge conflicts are hard to fix, conflict resolution doesn’t provide enough context, and need a config flag to avoid having to repeat the same conflict resolution a billion times. If merge requests are not handled fast enough, invariably you have to rebase over and over, even for trivial changes. You always get merge conflicts if you touch the imports of your file. I swear, I feel sometimes git invents new commits just out of spite and forces you to solve conflicts.
Why all of this?
You develop on a dev machine, usually running the same OS as the CI machine. You don’t delete your whole OS and reinstall everything from scratch every time you compile your code. You take advantage of your language’s compiler ability to cache intermediate results and reuse them. Why is it that we remake everything from scratch on our CI machines?
The artifacts locally generated by your compiler are no different from the ones your CI machine generates. So why not re-use them?
You ran the tests locally, why is it that the CI machine must re-check them?
Why is it that git can’t take into consideration your language’s syntax when generating diffs? Even Vim automatically detects your file’s language and understands enough of it to color it accordingly.
Can’t we do better? It seems we got stuck at one point on Jenkins + git, and froze in time before we got actually good development tools.
Can’t we get better review tools? Github, Bitbucket and Gitlab are worse than bad. Insanely slow, barely any context in the review comments, with little traceability.
It seems those issues that affect all developers all the time are left completely unattended.
Why is that?
Are we so bereft of creativity we can’t imagine a better world for ourselves?
I see some interest, but so so little of it. In no particular order:
Both pijul and unison do not directly solve any of my questions, they only explore related problems.
Anything else? Anything more? How have we not yet solved (or even slightly improved) those issues? Yet, those must be the largest source of expense in the modern development workflow.