Thoughts about different Version Control Systems
Version Control Systems became very popular in the last years. We as Free Software Advocates should be aware of the different platforms, projects and companies in this sector. Therefore, we collect some thoughts about popular services and their alternatives.
Single VCS solutions
GitHub
Why is GitHub so popular?
- New level of source code hosting: Git, Wiki, issue tracking, collaboration inside and outside a project
- One tool for all
- in contrary to GNU philosophy
- GH is big, makes projects visible and collaboration easier
Positive
- New and effective workflow of fork-edit-pull
- Could have had a positive effect on Free Software projects. Possible reasons:
- more FS projects
- easy collaboration
- probably quality boosts
- We have to think about: Is it better to have more FS projects overall on some non-free platforms, or less FS projects but only on free platforms?
Negative
- Lock-In effect
- Contra: Clients are free, APIs are public to move projects to other platforms
- No lock-in by technical restrictions but by habits?
Other solutions
- savannah.gnu.org
- gna.org
- gitlab
- can be self-hosted, but also used on gitlab.com
- open-core (proprietary extensions)
- usable FS solution
- experience similar to github
- allura
- phabricator
- seems to be good, but complicated for many people
- gitbucket
- similar to workflow of GH
- github-backup
Recommendations: - If a program belongs to a bigger community (KDE, Gnome, Apache, GNU), host it on their platforms to increase synergy effects - If it's something different, look at Free Software platforms (see above). If your project gets bigger, you'll need an own website, wiki or mailing list anyway. So why not an own git repository from the beginning? - If even that is no solution, look at GitHub.com or GitLab.com but be aware of the downsides!
Possible ways to improve situation: - Creating a multiplexer: 1 client for many networks and platforms - More initiative of people to pay for (Free Software) services - More ways to connect decentral instances to increase visibility for a project