paritybit.ca

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit 7664ae19633f4923850aa7592f579648668dbc0f
parent 5f4c82d0b8bd8bf6b629736ac94073c595cb0288
Author: Jake Bauer <jbauer@paritybit.ca>
Date:   Wed, 27 May 2020 00:35:01 -0400

Publish new blog post

Diffstat:
Mpages/blog.md | 1+
Apages/blog/choosing-a-self-hosted-git-service.md | 189+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mpages/home.md | 4++--
Mpublic/feeds/sitewide-feed.xml | 76++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mpublic/sitemap.xml | 1+
5 files changed, 269 insertions(+), 2 deletions(-)

diff --git a/pages/blog.md b/pages/blog.md @@ -20,6 +20,7 @@ href="https://social.paritybit.ca/@jbauer">Mastodon</a>. ### 2020 <ul> + <li>2020-05-26 <a href="blog/choosing-a-self-hosted-git-service">Choosing a Self-Hosted Git Service</a></li> <li>2020-05-25 <a href="blog/going-from-user-to-contributor-with-foss">Going From User to Contributor With FOSS</a></li> <li>2020-05-25 <a href="blog/paying-for-software">Paying for Software</a></li> <li>2020-05-23 <a href="blog/two-of-the-most-valuable-lessons-ive-learned">Two of the Most Valuable Lessons I've Learned</a></li> diff --git a/pages/blog/choosing-a-self-hosted-git-service.md b/pages/blog/choosing-a-self-hosted-git-service.md @@ -0,0 +1,189 @@ +## Choosing a Self-Hosted Git Service + +[//]: # "A brief comparison of some of the more popular software forges available for self-hosting." + +[//]: # "main.min.css" + +[//]: # "GitLab; Gogs; Gitea; SourceHut; Phabricator; Honourable Mention: Gitweb; My Choices" + +<div class="byline"> +<b>Written By:</b> Jake Bauer | + <b>Posted:</b> 2020-05-26 | + <b>Last Updated:</b> 2020-05-26 +</div> + +Git is by far the most popular version control system right now and there are so +many options for self-hosting your repositories it can be difficult to figure +out which one is the best for you. In this post, I'll go through many of the +more popular free and open source options with a brief opinion about each and +links to where you can find out more. I'll also explain what I chose for myself +and why. + +### GitLab + +* [Link to Gitlab](https://about.gitlab.com/) +* **Programmed in**: Ruby, Go +* **Supports**: Git + +GitLab is one of the most popular git hosting services next to GitHub. They +operate with an [open-core](https://en.wikipedia.org/wiki/Open-core_model) +business model which means that core features of GitLab are open source, but +many other features are proprietary software. + +GitLab's UI is somewhat similar to GitHub's and it uses the same Pull Request +model for contributing to others' software projects where you "fork" a project +and then submit a pull request using the web UI. + +I will get straight to the point with this though. Don't use GitLab. It's a +bloated mess of a software forge that, yes, has a lot of features, but also has +a lot of problems. For example, [GitLab has memory +leaks](https://news.ycombinator.com/item?id=17379523) which, instead of fixing, +they created a duct-tape solution which kills a memory-hungry process and +re-starts it. They also recommend 8GB of RAM as a minimum for the application to +run smoothly. EIGHT GIGABYTES! I'm running Gitea on a PineA64 SBC and the entire +system's RAM usage is at less than 0.5GB. GitLab is slow, bloated, and +definitely not a good candidate for someone looking to self-host a git service. + +### Gogs + +* [Link to Gogs](https://gogs.io/) +* **Programmed in**: Go +* **Supports**: Git + +Gogs is a GitHub-like software forge programmed in Go and designed to be fairly +easy to self-host. If you have some experience using GitHub, you'll very quickly +get used to the interface of Gogs as it's nearly identical. It also uses the +pull-request method of development and maintains a fairly clean-looking UI. + +Just like GitHub and GitLab, it's a bit heavy on the front-end JavaScript and +its accessibility and client-side performance suffers as a result. It does +provide the features one would want from a software force such as CI/CD, Wikis, +and issue tracking. + +It's easy to host since it's a statically-compiled binary so one just needs to +install a backing database, set up some configuration, and run the binary to +have a fully-featured software forge up and running. It seems appropriate for +anywhere from single-user instances, to medium-sized groups and teams. + +### Gitea + +* [Link to Gitea](https://gitea.io/en-us/) +* **Programmed in**: Go +* **Supports**: Git + +Gitea is a [fork of Gogs](https://blog.gitea.io/2016/12/welcome-to-gitea/) hence +it looks and feels much the same. The development model for Gitea is more open +than the one for Gogs and so it tends to receive bugfixes and improvements +faster than Gogs. It's also a better choice than Gogs if you're someone who +would like the ability to send patches upstream. + +In most respects, Gitea looks and functions the same as Gogs though Gitea does +have many more features. A detailed list of differences between the two can be +found on the [Gitea comparison page](https://docs.gitea.io/en-us/comparison/). + +### SourceHut + +* [Link to SourceHut](https://sourcehut.org/) +* **Programmed in**: Go, Python +* **Supports**: Git, Mercurial + +SourceHut is a project created by [Drew DeVault](https://drewdevault.com/) and +released in [public alpha on +2018-11-15](https://drewdevault.com/2018/11/15/sr.ht-general-availability.html) +through the hosted instance [sr.ht](https://sr.ht/). Since then, it has been +steadily growing its user base and feature set. It now includes comprehensive +CI/CD and Project Hubs. + +SourceHut is unique in that it's a fully-featured software forge which uses no +front-end JavaScript and supports esoteric operating systems such as Plan 9 in +its automated build framework. Unlike GitHub and many of its clones, SourceHut +does not use pull requests and instead uses mailing lists for everything from +bug reporting to sending in patches (though this can still be done through the +web UI). The advantage to this is that one does not need an account on a +SourceHut instance to contribute. Some might say that the disadvantage is that +this workflow is hard to figure out, but in reality it's just a different +development paradigm and doesn't take much effort to learn. See +[git-send-email.io](https://git-send-email.io/) for a brief introduction. + +It's important to note that SourceHut is still in alpha and requires at least a +moderate level of experience to self-host. It also uses individual, modular +services to make up the entirety of the forge. For example, if you want access +to mailing lists for your instance, you must host a lists.sr.ht service. This +makes the entire system much more resilient in the case of bugs or system +failures, but can be challenging for a novice sysadmin or not worth the effort +if all you want is a software forge for publicly showing off and working on your +own repositories. SourceHut is definitely worth checking out if you want a +software forge for a group or team of people. + +### Phabricator + +* [Link to Phabricator](https://secure.phabricator.com/) +* **Programmed In**: PHP +* **Supports**: Git, Mercurial, Subversion + +I don't have as much experience with Phabricator as I do other services on this +list so my overview essentially comes from reading documentation and poking +around the hosted instance. + +Phabricator is a software forge built by [Phacility](https://phacility.com/). It +offers the same features as the above-mentioned software forges and is also +straightforward to install, perhaps requiring a level of skill in between +SourceHut and Gitea if the installation guide is anything to go by. + +Similar to SourceHut, this service may be more than you need if you're looking +for a simple way to show off your Git repositories. It is fully-featured and +competently developed though, so if you're looking for an alternative to GitLab +for, say, a group or team of people then this is worth checking out. + +### Honourable Mention: Gitweb + +* [Link to Gitweb Documentation](https://git-scm.com/docs/gitweb) +* **Programmed In**: Perl +* **Supports**: Git + +Gitweb is the default web interface for Git repositories. It's essentially a way +to view the contents of a repository and its git-related data (commits, +branches, blames, etc) using a web interface. It's not a software forge like the +others in this article, but if all you want is a UI to view information about +git repositories, then this is a valid choice. + +### My Choices + +When looking for a self-hosted git service, I was looking for a service that +fulfilled the following criteria: + +* **Philosophy**: Simple software, open development +* **User Interface**: Snappy, clean +* **Resource Usage**: Low, should run on an SBC +* **Back-end Language**: Anything but JavaScript (because of npm) +* **Ease of Administration**: The easier, the better + +At [git.paritybit.ca](https://git.paritybit.ca), I currently host a Gitea +instance. Although I would have loved to host my own SourceHut instance, I feel +it's not designed for my use case. I basically just use Gitea to mirror my +repositories which are also hosted on SourceHut and to allow a small group of +friends to collaborate with me in smaller, private projects. I could probably +get away with Gitweb, but Gitea also gives me a playground to experiment with +CI/CD and other technologies I may encounter in my career. Gitea was also really +easy to set up, customize, and maintain. I use a script, +[gitea-updater](https://gitea.superposition.ca/Dan/gitea-updater), created by a +friend of mine to easily update it too. + +As far as hosted services, I use SourceHut's sr.ht instance because it's +lightweight, straightforward, and I like its email-driven development model. I +used to use GitHub and GitLab, but SourceHut performs way better and experiences +downtime far less often than the big providers such as GitHub and GitLab. + +There are also quite a few more, albeit less popular, free and open source +software forges available, many listed in [this comparison by Apache +Allura](https://forge-allura.apache.org/p/allura/wiki/Feature%20Comparison/). +Additionally, check out [forgeperf.org](https://forgeperf.org/) for a comparison +of the performance of some of the biggest hosted software forges. + +[Let me know](/contact) if I've failed to mention anything important here or if +I've missed a software forge you'd like to see mentioned. + +_This is my thirtieth post for the +[#100DaysToOffload](https://social.paritybit.ca/tags/100DaysToOffload) +challenge. You can learn more about this challenge over at +[https://100daystooffload.com](https://100daystooffload.com)._ diff --git a/pages/home.md b/pages/home.md @@ -20,6 +20,8 @@ extent)! Access through `gopher://paritybit.ca` or `gemini://paritybit.ca`. src="/img/feed-icon.png" width="15" height="15" alt="Click for RSS Feed"/> </a> </div> +2020-05-26 <a class="feed-item" href="blog/choosing-a-self-hosted-git-service">Choosing a Self-Hosted Git Service</a> + 2020-05-25 <a class="feed-item" href="blog/going-from-user-to-contributor-with-foss">Going From User to Contributor With FOSS</a> 2020-05-25 <a class="feed-item" href="blog/paying-for-software">Paying for Software</a> @@ -39,8 +41,6 @@ extent)! Access through `gopher://paritybit.ca` or `gemini://paritybit.ca`. 2020-05-16 <a class="feed-item" href="blog/self-hosting-email">Self-Hosting Email</a> -2020-05-15 <a class="feed-item" href="blog/preparing-to-self-host-email">Preparing to Self-Host Email</a> - ### What is a Parity Bit? It is a bit (in the 1's and 0's sense) used in checking for errors in digital diff --git a/public/feeds/sitewide-feed.xml b/public/feeds/sitewide-feed.xml @@ -7,6 +7,82 @@ <description>The feed that covers all notable additions, updates, announcements, and other changes for the entire paritybit.ca website.</description> <item> + <title>Choosing a Self-Hosted Git Service</title> + <link>https://www.paritybit.ca/blog/choosing-a-self-hosted-git-service</link> + <guid>https://www.paritybit.ca/blog/choosing-a-self-hosted-git-service</guid> + <pubDate>Tue, 26 May 2020 18:50:26 -0400</pubDate> +<description><![CDATA[<h2 id="choosing-a-self-hosted-git-service">Choosing a Self-Hosted Git Service</h2> +<div class="byline"> +<p><b>Written By:</b> Jake Bauer | <b>Posted:</b> 2020-05-26 | <b>Last Updated:</b> 2020-05-26</p> +</div> +<p>Git is by far the most popular version control system right now and there are so many options for self-hosting your repositories it can be difficult to figure out which one is the best for you. In this post, I’ll go through many of the more popular free and open source options with a brief opinion about each and links to where you can find out more. I’ll also explain what I chose for myself and why.</p> +<h3 id="gitlab">GitLab</h3> +<ul> +<li><a href="https://about.gitlab.com/">Link to Gitlab</a></li> +<li><strong>Programmed in</strong>: Ruby, Go</li> +<li><strong>Supports</strong>: Git</li> +</ul> +<p>GitLab is one of the most popular git hosting services next to GitHub. They operate with an <a href="https://en.wikipedia.org/wiki/Open-core_model">open-core</a> business model which means that core features of GitLab are open source, but many other features are proprietary software.</p> +<p>GitLab’s UI is somewhat similar to GitHub’s and it uses the same Pull Request model for contributing to others’ software projects where you “fork” a project and then submit a pull request using the web UI.</p> +<p>I will get straight to the point with this though. Don’t use GitLab. It’s a bloated mess of a software forge that, yes, has a lot of features, but also has a lot of problems. For example, <a href="https://news.ycombinator.com/item?id=17379523">GitLab has memory leaks</a> which, instead of fixing, they created a duct-tape solution which kills a memory-hungry process and re-starts it. They also recommend 8GB of RAM as a minimum for the application to run smoothly. EIGHT GIGABYTES! I’m running Gitea on a PineA64 SBC and the entire system’s RAM usage is at less than 0.5GB. GitLab is slow, bloated, and definitely not a good candidate for someone looking to self-host a git service.</p> +<h3 id="gogs">Gogs</h3> +<ul> +<li><a href="https://gogs.io/">Link to Gogs</a></li> +<li><strong>Programmed in</strong>: Go</li> +<li><strong>Supports</strong>: Git</li> +</ul> +<p>Gogs is a GitHub-like software forge programmed in Go and designed to be fairly easy to self-host. If you have some experience using GitHub, you’ll very quickly get used to the interface of Gogs as it’s nearly identical. It also uses the pull-request method of development and maintains a fairly clean-looking UI.</p> +<p>Just like GitHub and GitLab, it’s a bit heavy on the front-end JavaScript and its accessibility and client-side performance suffers as a result. It does provide the features one would want from a software force such as CI/CD, Wikis, and issue tracking.</p> +<p>It’s easy to host since it’s a statically-compiled binary so one just needs to install a backing database, set up some configuration, and run the binary to have a fully-featured software forge up and running. It seems appropriate for anywhere from single-user instances, to medium-sized groups and teams.</p> +<h3 id="gitea">Gitea</h3> +<ul> +<li><a href="https://gitea.io/en-us/">Link to Gitea</a></li> +<li><strong>Programmed in</strong>: Go</li> +<li><strong>Supports</strong>: Git</li> +</ul> +<p>Gitea is a <a href="https://blog.gitea.io/2016/12/welcome-to-gitea/">fork of Gogs</a> hence it looks and feels much the same. The development model for Gitea is more open than the one for Gogs and so it tends to receive bugfixes and improvements faster than Gogs. It’s also a better choice than Gogs if you’re someone who would like the ability to send patches upstream.</p> +<p>In most respects, Gitea looks and functions the same as Gogs though Gitea does have many more features. A detailed list of differences between the two can be found on the <a href="https://docs.gitea.io/en-us/comparison/">Gitea comparison page</a>.</p> +<h3 id="sourcehut">SourceHut</h3> +<ul> +<li><a href="https://sourcehut.org/">Link to SourceHut</a></li> +<li><strong>Programmed in</strong>: Go, Python</li> +<li><strong>Supports</strong>: Git, Mercurial</li> +</ul> +<p>SourceHut is a project created by <a href="https://drewdevault.com/">Drew DeVault</a> and released in <a href="https://drewdevault.com/2018/11/15/sr.ht-general-availability.html">public alpha on 2018-11-15</a> through the hosted instance <a href="https://sr.ht/">sr.ht</a>. Since then, it has been steadily growing its user base and feature set. It now includes comprehensive CI/CD and Project Hubs.</p> +<p>SourceHut is unique in that it’s a fully-featured software forge which uses no front-end JavaScript and supports esoteric operating systems such as Plan 9 in its automated build framework. Unlike GitHub and many of its clones, SourceHut does not use pull requests and instead uses mailing lists for everything from bug reporting to sending in patches (though this can still be done through the web UI). The advantage to this is that one does not need an account on a SourceHut instance to contribute. Some might say that the disadvantage is that this workflow is hard to figure out, but in reality it’s just a different development paradigm and doesn’t take much effort to learn. See <a href="https://git-send-email.io/">git-send-email.io</a> for a brief introduction.</p> +<p>It’s important to note that SourceHut is still in alpha and requires at least a moderate level of experience to self-host. It also uses individual, modular services to make up the entirety of the forge. For example, if you want access to mailing lists for your instance, you must host a lists.sr.ht service. This makes the entire system much more resilient in the case of bugs or system failures, but can be challenging for a novice sysadmin or not worth the effort if all you want is a software forge for publicly showing off and working on your own repositories. SourceHut is definitely worth checking out if you want a software forge for a group or team of people.</p> +<h3 id="phabricator">Phabricator</h3> +<ul> +<li><a href="https://secure.phabricator.com/">Link to Phabricator</a></li> +<li><strong>Programmed In</strong>: PHP</li> +<li><strong>Supports</strong>: Git, Mercurial, Subversion</li> +</ul> +<p>I don’t have as much experience with Phabricator as I do other services on this list so my overview essentially comes from reading documentation and poking around the hosted instance.</p> +<p>Phabricator is a software forge built by <a href="https://phacility.com/">Phacility</a>. It offers the same features as the above-mentioned software forges and is also straightforward to install, perhaps requiring a level of skill in between SourceHut and Gitea if the installation guide is anything to go by.</p> +<p>Similar to SourceHut, this service may be more than you need if you’re looking for a simple way to show off your Git repositories. It is fully-featured and competently developed though, so if you’re looking for an alternative to GitLab for, say, a group or team of people then this is worth checking out.</p> +<h3 id="honourable-mention-gitweb">Honourable Mention: Gitweb</h3> +<ul> +<li><a href="https://git-scm.com/docs/gitweb">Link to Gitweb Documentation</a></li> +<li><strong>Programmed In</strong>: Perl</li> +<li><strong>Supports</strong>: Git</li> +</ul> +<p>Gitweb is the default web interface for Git repositories. It’s essentially a way to view the contents of a repository and its git-related data (commits, branches, blames, etc) using a web interface. It’s not a software forge like the others in this article, but if all you want is a UI to view information about git repositories, then this is a valid choice.</p> +<h3 id="my-choices">My Choices</h3> +<p>When looking for a self-hosted git service, I was looking for a service that fulfilled the following criteria:</p> +<ul> +<li><strong>Philosophy</strong>: Simple software, open development</li> +<li><strong>User Interface</strong>: Snappy, clean</li> +<li><strong>Resource Usage</strong>: Low, should run on an SBC</li> +<li><strong>Back-end Language</strong>: Anything but JavaScript (because of npm)</li> +<li><strong>Ease of Administration</strong>: The easier, the better</li> +</ul> +<p>At <a href="https://git.paritybit.ca">git.paritybit.ca</a>, I currently host a Gitea instance. Although I would have loved to host my own SourceHut instance, I feel it’s not designed for my use case. I basically just use Gitea to mirror my repositories which are also hosted on SourceHut and to allow a small group of friends to collaborate with me in smaller, private projects. I could probably get away with Gitweb, but Gitea also gives me a playground to experiment with CI/CD and other technologies I may encounter in my career. Gitea was also really easy to set up, customize, and maintain. I use a script, <a href="https://gitea.superposition.ca/Dan/gitea-updater">gitea-updater</a>, created by a friend of mine to easily update it too.</p> +<p>As far as hosted services, I use SourceHut’s sr.ht instance because it’s lightweight, straightforward, and I like its email-driven development model. I used to use GitHub and GitLab, but SourceHut performs way better and experiences downtime far less often than the big providers such as GitHub and GitLab.</p> +<p>There are also quite a few more, albeit less popular, free and open source software forges available, many listed in <a href="https://forge-allura.apache.org/p/allura/wiki/Feature%20Comparison/">this comparison by Apache Allura</a>. Additionally, check out <a href="https://forgeperf.org/">forgeperf.org</a> for a comparison of the performance of some of the biggest hosted software forges.</p> +<p><a href="/contact">Let me know</a> if I’ve failed to mention anything important here or if I’ve missed a software forge you’d like to see mentioned.</p> +<p><em>This is my thirtieth post for the <a href="https://social.paritybit.ca/tags/100DaysToOffload">#100DaysToOffload</a> challenge. You can learn more about this challenge over at <a href="https://100daystooffload.com" class="uri">https://100daystooffload.com</a>.</em></p>]]></description> +</item> +<item> <title>Going From User to Contributor With FOSS</title> <link>https://www.paritybit.ca/blog/going-from-user-to-contributor-with-foss</link> <guid>https://www.paritybit.ca/blog/going-from-user-to-contributor-with-foss</guid> diff --git a/public/sitemap.xml b/public/sitemap.xml @@ -3,6 +3,7 @@ <url><loc>https://www.paritybit.ca</loc></url> <url><loc>https://www.paritybit.ca/home</loc></url> <url><loc>https://www.paritybit.ca/blog</loc></url> + <url><loc>https://www.paritybit.ca/blog/choosing-a-self-hosted-git-service</loc></url> <url><loc>https://www.paritybit.ca/blog/going-from-user-to-contributor-with-foss</loc></url> <url><loc>https://www.paritybit.ca/blog/paying-for-software</loc></url> <url><loc>https://www.paritybit.ca/blog/two-of-the-most-valuable-lessons-ive-learned</loc></url>