4 ms·
Ask HN: Next-Generation Version Control?
I've been thinking, given that GitHub was recently acquired, now might be the right time to consider a better/new form of version control. Here's one idea, and I'm curious what people think about it.
The concept is: magic git. You just write code, and a background service handles backup/sync (ala Dropbox), assembling commits, and interacting with a git server (either GitHub or other). No more pain from wrestling with git, you can just write your code.
There is obviously a ton of complexity here: merging, code reviews, CI, etc., but the basic idea is to handle as much of the goo around versioning as smartly as possible without taking mental energy from the developer, and expose those advanced/custom controls when needed.
What do you think? Is this the right direction for version control to go? Would you use this service?
- PaulHoule 8y agoLook for forms of development that are poorly served. For instance, version control of Jupyter notebooks is deeply problematic because the data is coupled to the document. There is no answer to this that makes people 100% happy because maybe the data requires talking w/ compliance for months, then accessing it over a special network, then waiting 12 hours for the export scripts to run. (Or something like that...) I would also look at how version control meshes with low-code, no-code, visual programming, UML-like systems, rules engines, etc.
- tlb 8y agoI think data management could be improved a lot. A common pattern is to have a data object that's generated from the source and other data objects, but is too expensive for everyone to regenerate whenever they recompile. Machine learning models are a common example, but video game development also has things like 3D models, textures, audio files, etc. You can make it all work with git, git-lfs, CI servers and lots of typing, but it's tedious and error-prone.
- ehu_fugaces 8y agoAgreed! Definitely something that could be improved with existing version control. I do like the "git for non-code items", including for these code-related bits.
- Etheryte 8y agoGit is already incredibly smart about merging things — what kind of improvements do you propose to make in this regard? In certain cases it simply isn't possible to automatically merge things, they require external knowledge. In general, with the current tools provided by VSTS, Gitlab etc (Github is lagging behind a bit here), I don't think most developers on generic codebases have much trouble with versioning.
- ehu_fugaces 8y agoRegarding merging: hard to say. Possibly, if you have the ability to check for conflicts with each file touch across machines, you could in theory resolve/identify conflicts earlier. But that's a guess. The main premise was to remove the pain of git, and it's possible that, as you say, it's not a big enough pain point!
- higherpayusa 8y agoI wonder if it would make sense to roll the entire development environment into it: code, data schema, programming editor/config, key os settings... something along the lines of Time Machine but with "markers" which allow you to flag points of progress that can be examined and diffed later.
- zzzcpan 8y agoTo me the biggest problem github and similar platforms have is censorship. I don't want Microsoft or anyone else to have a power to remove any repository. Wouldn't it be great to have a peer-to-peer git server to share and clone git repositories via something like magnet links? UI could be just another tool that you use in addition to git, possibly eventually integrated into it.
- verdverm 8y agogit is already a distributed, peer-to-peer system
- zzzcpan 8y agoIt's not a peer-to-peer system. You have to both publish repositories somewhere and clone them from there, not from peers.
- verdverm 8y agoYou can clone from any copy of the repo, regardless of where it is. You can setup, push, and pull from any number of 'remote's. It could be a DNS record, ip address, or local directory. i.e. GitHub/Lab or some centralized repo is not required. https://git-scm.com/book/en/v2/Git-on-the-Server-The-Protocols https://git-scm.com/book/en/v2/Git-on-the-Server-The-Protoco... https://en.m.wikipedia.org/wiki/Git https://en.m.wikipedia.org/wiki/Git
- zzzcpan 8y agoIt cannot be a magnet link. And I think you are confusing client-server with peer-to-peer communications. What can be done without touching git is some software running locally doing peer-to-peer and speaking git's protocol, git can then use local ip address as a remote.
- JeffRosenberg 8y agoGit doesn't HAVE to be set up as client-server. It's just that that makes the most sense for an organization most of the time.
- tobylane 8y agoI don't know how I'm going to assemble commits, and while a computer can often work out what a user can't, this doesn't feel like one of those areas. After each code block that passes CI testing including documentation? The first step would be a language neutral version of Rail's Rspec + Guard.