<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>github &amp;mdash; musicmatzes blog</title>
    <link>https://beyermatthias.de/tag:github</link>
    <description></description>
    <pubDate>Mon, 12 Oct 2026 04:20:50 +0200</pubDate>
    <item>
      <title>Deleting my github sources</title>
      <link>https://beyermatthias.de/deleting-my-github-sources</link>
      <description>&lt;![CDATA[I deleted the repositories I own(ed) on #github.&#xA;&#xA;After it became clear that Microsoft GitHub Copilot was trained using open source and GPLed work, keeping my (both public and private) github repositories is just wrong. So I deleted all of them, except for the forks I contribute to and maintain (for example config-rs and shiplift).&#xA;&#xA;I hope that others will follow suit and delete their repositories as well. I can understand if people don&#39;t mind the vendor lock that &#34;discussions&#34;, &#34;actions&#34; and other features have created for them. But this (copilot) is pure abuse of free software codebases.&#xA;&#xA;  The &#34;extend&#34; phase is over, we&#39;re in the &#34;extinguish&#34; phase!&#xA;&#xA;(me, on mastodon)&#xA;&#xA;It might be legal for github to do this (IANAL), but nonetheless it is more than just a bad move. If their ToS allows this and we, as a community, can not act upon this because we agreed to these terms, the only sensible thing to do is to move our development away from github to some more open and less abusive services. I&#39;m a big fan of sourcehut, of course, but there are others, most prominently codeberg and of course, self-hosting.&#xA;&#xA;Self-hosting and email patches&#xA;&#xA;I am self-hosting all my sources on git.beyermatthi.as plus I host some of these projects on my sourcehut account for more visibility.&#xA;I take patches via mail for all my repositories.&#xA;&#xA;If you plan on moving away from github, learning how to send patches via mail and of course also how to accept patches via mail is a viable skill that you will benefit from! Just make sure to use plain text email instead of html emails.&#xA;&#xA;There are tons and tons of tutorials out there how to work with email patches. Just go and read them, it will make you a better developer, even if you then go to one of the other code forges and don&#39;t need the skill, you will start to understand why git works the way it works!&#xA;&#xA;I am using git for over a decade now, over eight years in opensource and over two years professionally (so my whole professional career so far), and it is the one tool I cannot exist without! It amplifies the speed I develop code with by a magnitude!&#xA;&#xA;If you don&#39;t want email...&#xA;&#xA;If you don&#39;t want an email-based workflow for your git repositories, which I can understand (although not approve), and you want a shiny web-interface with all the bells and whistles, you can still go to codeberg (or gitlab.com, fwiw) or self-host one of the great tools that are already out there.&#xA;&#xA;For example, you can self-host gitlab or gitea as a bit more lightweight alternative. Both of them feature issues/discussions and a nice web-UI.&#xA;&#xA;If you don&#39;t want to collaborate but just put your code out there, you can use cgit (which is really not hard to host) plus, optionally, some gitolite if you want to host repositories for others as well.&#xA;&#xA;With nginx as reverse-proxy and some mild rate-limiting because web-crawlers are still a thing, you can even host this on a $1-VPS instance somewhere (I&#39;m not recommending any service here because this would be advertisement). I&#39;d even say that a Raspberry Pi can handle hundreds of repositories with cgit and nginx as reverse proxy. I did not test this, though I&#39;m fairly sure because git is very well optimized and cgit is written in C (hence the name), so there&#39;s only a very minimal footprint!&#xA;]]&gt;</description>
      <content:encoded><![CDATA[<p>I <a href="https://mastodon.technology/@musicmatze/106527484217736270">deleted</a> the repositories I own(ed) on <a href="https://beyermatthias.de/tag:github" class="hashtag"><span>#</span><span class="p-category">github</span></a>.</p>

<p>After it became clear that <a href="https://copilot.github.com/">Microsoft GitHub Copilot</a> was <a href="https://cybre.space/@tindall/106539167944483388">trained</a> using open source and GPLed work, keeping my (both public and private) github repositories is just <em>wrong</em>. So I deleted all of them, except for the forks I contribute to and maintain (for example <a href="https://github.com/mehcode/config-rs">config-rs</a> and <a href="https://github.com/softprops/shiplift">shiplift</a>).</p>

<p>I <a href="https://mastodon.technology/@musicmatze/106544251935596970">hope</a> that others will follow suit and delete their repositories as well. I can understand if people don&#39;t mind the vendor lock that “discussions”, “actions” and other features have created for them. But this (copilot) is pure abuse of free software codebases.</p>

<blockquote><p>The “extend” phase is over, we&#39;re in the “extinguish” phase!</p></blockquote>

<p>(<a href="https://mastodon.technology/@musicmatze/106544362192261973">me, on mastodon</a>)</p>

<p>It <a href="https://en.osm.town/@qeef/106538016853397341">might be legal</a> for github to do this (IANAL), but nonetheless it is more than just a bad move. If their ToS allows this and we, as a community, can not act upon this because we agreed to these terms, the only sensible thing to do is to move our development away from github to some more open and less abusive services. I&#39;m a big fan of <a href="https://sourcehut.org">sourcehut</a>, of course, but there are others, most prominently <a href="https://codeberg.org">codeberg</a> and of course, self-hosting.</p>

<h2 id="self-hosting-and-email-patches" id="self-hosting-and-email-patches">Self-hosting and email patches</h2>

<p>I am self-hosting all my sources on <a href="https://git.beyermatthi.as">git.beyermatthi.as</a> plus I host some of these projects on <a href="https://sr.ht/~matthiasbeyer/">my sourcehut account</a> for more visibility.
I take patches via mail for all my repositories.</p>

<p>If you plan on moving away from github, learning how to <a href="https://git-send-email.io/">send patches via mail</a> and of course also how to accept patches via mail is a <a href="https://drewdevault.com/2018/07/02/Email-driven-git.html">viable skill</a> that you <a href="https://nasamuffin.github.io/git/open-source/email/code-review/2019/05/22/how-i-learned-to-love-email-patches.html">will benefit from</a>! Just make sure to <a href="https://useplaintext.email/">use plain text email</a> instead of <a href="https://drewdevault.com/2016/04/11/Please-use-text-plain-for-emails.html">html emails</a>.</p>

<p>There are tons and tons of tutorials out there how to work with email patches. Just go and read them, it will make you a better developer, even if you then go to one of the other code forges and don&#39;t need the skill, you will start to understand why git works the way it works!</p>

<p>I am using git for over a decade now, over eight years in opensource and over two years professionally (so my whole professional career so far), and it is <em>the one tool</em> I cannot exist without! It amplifies the speed I develop code with by a magnitude!</p>

<h2 id="if-you-don-t-want-email" id="if-you-don-t-want-email">If you don&#39;t want email...</h2>

<p>If you don&#39;t want an email-based workflow for your git repositories, which I can understand (although not approve), and you want a shiny web-interface with all the bells and whistles, you can still go to <a href="https://codeberg.org">codeberg</a> (or <a href="https://gitlab.com">gitlab.com</a>, fwiw) or self-host one of the great tools that are already out there.</p>

<p>For example, you can self-host <a href="https://about.gitlab.com/">gitlab</a> or <a href="https://gitea.io/en-us/">gitea</a> as a bit more lightweight alternative. Both of them feature issues/discussions and a nice web-UI.</p>

<p>If you don&#39;t want to collaborate but just put your code out there, you can use <a href="https://git.zx2c4.com/cgit/">cgit</a> (which is really not hard to host) plus, optionally, some <a href="https://gitolite.com/gitolite/index.html">gitolite</a> if you want to host repositories for others as well.</p>

<p>With nginx as reverse-proxy and some mild rate-limiting because web-crawlers are still a thing, you can even host this on a $1-VPS instance somewhere (I&#39;m not recommending any service here because this would be advertisement). I&#39;d even say that a Raspberry Pi can handle hundreds of repositories with cgit and nginx as reverse proxy. I did not test this, though I&#39;m fairly sure because git is very well optimized and cgit is written in C (hence the name), so there&#39;s only a very minimal footprint!</p>
]]></content:encoded>
      <guid>https://beyermatthias.de/deleting-my-github-sources</guid>
      <pubDate>Sun, 11 Jul 2021 19:43:55 +0200</pubDate>
    </item>
    <item>
      <title>Thoughts #5</title>
      <link>https://beyermatthias.de/thoughts-5</link>
      <description>&lt;![CDATA[---&#xA;“Thoughts” is (will be) a weekly roll-up of my mastodon feed with some notable thoughts collected into a long-form blog post. “Long form” is relative here, as I will only expand a little on some selected subjects, not write screens and screens of text on each of these subjects.&#xA;&#xA;If you think I toot too much to follow, this is an alternative to follow some of my thoughts.&#xA;&#xA;---&#xA;&#xA;This week (2021-05-29 – 2021-06-04) I got very angry about this &#34;you need an app for this&#34; bullshit and some things died.&#xA;&#xA;App madness&#xA;&#xA;I am very angry (german) about every other service forcing me to install an app of some sort or another on my devices. This time it was my insurance that wanted me to install either a desktop application (Windows and Mac only) or a Smartphone app (Android or iOS only) just to update my bank account or address. How mad can they possibly be?&#xA;&#xA;I reported them to #digitalcourage.&#xA;&#xA;github actions&#xA;&#xA;I probably said it before, but the more I play with #githubactions, the more I like it.&#xA;&#xA;This is mainly due to the fact that the features are well-designed. You can make dependend jobs and you can even boot up #docker containers, if your application has to be tested against, for example, a database or some other service. I know that #github will never #opensource this, that&#39;s why I hope someone implements it as a FLOSS alternative!&#xA;&#xA;Awesome Rust&#xA;&#xA;It always amazes me how good the #rust standard library actually is. I was able to solve an issue in my codebase with a two-line patch that would have been way more complex in another language!&#xA;&#xA;Dying things&#xA;&#xA;First audacity, now stackoverflow (german) died.&#xA;&#xA;What&#39;s next? I really hope we can develop alternative FLOSS platforms. For audacity, there are several alternative tools around that one can switch to. For stackoverflow, not so much. Especially because the software is only one part, the other part is the data. There are dumps of stackoverflow somewhere on the internet (I&#39;m not linking because I don&#39;t know how legal these dumps actually are), so maybe someone can implement a FLOSS alternative (please make it federated or distributed) and import that dataset? &#xA;&#xA;This would be awesome!]]&gt;</description>
      <content:encoded><![CDATA[<hr>

<p>“Thoughts” is (will be) a weekly roll-up of my mastodon feed with some notable thoughts collected into a long-form blog post. “Long form” is relative here, as I will only expand a little on some selected subjects, not write screens and screens of text on each of these subjects.</p>

<p>If you think I toot too much to follow, this is an alternative to follow some of my thoughts.</p>

<hr>

<p>This week (2021-05-29 – 2021-06-04) I got very angry about this “you need an app for this” bullshit and some things died.</p>

<h2 id="app-madness" id="app-madness">App madness</h2>

<p>I am <a href="https://mastodon.technology/@musicmatze/106328954774958175">very angry (german)</a> about every other service forcing me to install an app of some sort or another on my devices. This time it was my insurance that wanted me to install either a desktop application (Windows and Mac only) or a Smartphone app (Android or iOS only) just to update my bank account or address. How mad can they possibly be?</p>

<p>I reported them to <a href="https://beyermatthias.de/tag:digitalcourage" class="hashtag"><span>#</span><span class="p-category">digitalcourage</span></a>.</p>

<h2 id="github-actions" id="github-actions">github actions</h2>

<p>I probably said it before, but <a href="https://mastodon.technology/@musicmatze/106324070947931152">the more</a> I play with <a href="https://beyermatthias.de/tag:githubactions" class="hashtag"><span>#</span><span class="p-category">githubactions</span></a>, the more I like it.</p>

<p>This is mainly due to the fact that the features are well-designed. You can make dependend jobs and you can even boot up <a href="https://beyermatthias.de/tag:docker" class="hashtag"><span>#</span><span class="p-category">docker</span></a> containers, if your application has to be tested against, for example, a database or some other service. I know that <a href="https://beyermatthias.de/tag:github" class="hashtag"><span>#</span><span class="p-category">github</span></a> will never <a href="https://beyermatthias.de/tag:opensource" class="hashtag"><span>#</span><span class="p-category">opensource</span></a> this, that&#39;s why I hope someone implements it as a FLOSS alternative!</p>

<h2 id="awesome-rust" id="awesome-rust">Awesome Rust</h2>

<p>It always <a href="https://mastodon.technology/@musicmatze/106329223495946349">amazes me</a> <em>how</em> good the <a href="https://beyermatthias.de/tag:rust" class="hashtag"><span>#</span><span class="p-category">rust</span></a> standard library actually is. I was able to solve an <a href="https://git.beyermatthi.as/butido/commit/?id=ccf323bb0812638ca551f88e0adc71e166ea979f">issue in my codebase</a> with a two-line patch that would have been way more complex in another language!</p>

<h2 id="dying-things" id="dying-things">Dying things</h2>

<p>First <a href="https://mastodon.technology/@musicmatze/106345683432680322">audacity</a>, now <a href="https://mastodon.technology/@musicmatze/106346742139285240">stackoverflow (german)</a> died.</p>

<p>What&#39;s next? I really hope we can develop alternative FLOSS platforms. For audacity, there are several alternative tools around that one can switch to. For stackoverflow, not so much. Especially because the software is only one part, the other part is the data. There are dumps of stackoverflow somewhere on the internet (I&#39;m not linking because I don&#39;t know how legal these dumps actually are), so maybe someone can implement a FLOSS alternative (please make it federated or distributed) and import that dataset?</p>

<p>This would be awesome!</p>
]]></content:encoded>
      <guid>https://beyermatthias.de/thoughts-5</guid>
      <pubDate>Sat, 05 Jun 2021 09:01:57 +0200</pubDate>
    </item>
    <item>
      <title>Thoughts #2</title>
      <link>https://beyermatthias.de/thoughts-2</link>
      <description>&lt;![CDATA[---&#xA;&#xA;&#34;Thoughts&#34; is (will be) a weekly roll-up of my mastodon feed with some notable thoughts collected into a long-form blog post. &#34;Long form&#34; is relative here, as I will only expand a little on some selected subjects, not write screens and screens of text on each of these subjects.&#xA;&#xA;If you think I toot too much to follow, this is an alternative to follow some of my thoughts.&#xA;&#xA;---&#xA;&#xA;This week (2021-05-08 – 2021-05-14) I thought about vendor lock once more and played a bit with my raspberry.&#xA;&#xA;Github and Vendor-Lock&#xA;&#xA;My discontent about #github continues but I had to admit that github-actions is very nice and I like it more every time I have to work with it. I&#39;m not sure whether this plays into the vendor-lock thing mentioned earlier.&#xA;&#xA;I also voiced my discomfort... no, lets face it: my anger with people that cannot obey the simplest commit message rules.&#xA;&#xA;Sensor stuff&#xA;&#xA;I was able to boot my old Raspberry Pi (1) with raspbian (german) (unfortunately #nixos failed to boot and I don&#39;t know why), which makes my plans for sensors in my flat (last week, german) a little easier. It won&#39;t be able to run prometheus and grafana because 512MB of RAM is just not enough for these, I guess. Still, I am one step further towards the goal!&#xA;&#xA;Movies&#xA;&#xA;I watched &#34;The Covenant&#34; and asked the fediverse whether there&#39;s a database of movies with spiders, so I can avoid them. This would be in fact a really helpful database, and I am sad that no such things exists.&#xA;I am not actually arachnophobic, but I really don&#39;t like them and prefer to watch movies without any spiders or similar creatures (crabs, scorpions, ...).&#xA;&#xA;Idiotic shopping&#xA;&#xA;Well, I had some encounters (german) with overly stressed workers at my local grocery store this week.&#xA;&#xA;The thread linked above tells you everything I guess. I am still baffeled how idiotic some people in our society behave, even though this is not the worst kind of human being running around these days (especially if you consider covid-denialists and so on).]]&gt;</description>
      <content:encoded><![CDATA[<hr>

<p>“Thoughts” is (will be) a weekly roll-up of <a href="https://mastodon.technology/@musicmatze">my mastodon feed</a> with some notable thoughts collected into a long-form blog post. “Long form” is relative here, as I will only expand a little on some selected subjects, not write screens and screens of text on each of these subjects.</p>

<p>If you think I toot too much to follow, this is an alternative to follow some of my thoughts.</p>

<hr>

<p>This week (2021-05-08 – 2021-05-14) I thought about vendor lock once more and played a bit with my raspberry.</p>

<h2 id="github-and-vendor-lock" id="github-and-vendor-lock">Github and Vendor-Lock</h2>

<p>My discontent about <a href="https://beyermatthias.de/tag:github" class="hashtag"><span>#</span><span class="p-category">github</span></a> continues but I <a href="https://mastodon.technology/@musicmatze/106203984254759435">had to admit</a> that github-actions is very nice and I like it more every time I have to work with it. I&#39;m not sure whether this plays into the vendor-lock thing mentioned earlier.</p>

<p>I also voiced my discomfort... no, lets face it: my anger with people that <a href="https://mastodon.technology/@musicmatze/106204250581429444">cannot obey the simplest commit message rules</a>.</p>

<h2 id="sensor-stuff" id="sensor-stuff">Sensor stuff</h2>

<p>I was able to boot my old Raspberry Pi (1) with <a href="https://mastodon.technology/@musicmatze/106200473847129153">raspbian (german)</a> (unfortunately <a href="https://beyermatthias.de/tag:nixos" class="hashtag"><span>#</span><span class="p-category">nixos</span></a> failed to boot and I don&#39;t know why), which makes my <a href="https://mastodon.technology/@musicmatze/106164799110685480">plans for sensors in my flat (last week, german)</a> a little easier. It won&#39;t be able to run prometheus and grafana because 512MB of RAM is just not enough for these, I guess. Still, I am one step further towards the goal!</p>

<h2 id="movies" id="movies">Movies</h2>

<p>I watched “The Covenant” and <a href="https://mastodon.technology/@musicmatze/106204043476551415">asked</a> the fediverse whether there&#39;s a database of movies with spiders, so I can avoid them. This would be in fact a really helpful database, and I am sad that no such things exists.
I am not actually arachnophobic, but I really don&#39;t like them and prefer to watch movies without any spiders or similar creatures (crabs, scorpions, ...).</p>

<h2 id="idiotic-shopping" id="idiotic-shopping">Idiotic shopping</h2>

<p>Well, I had <a href="https://mastodon.technology/@musicmatze/106223376547237795">some encounters (german)</a> with overly stressed workers at my local grocery store this week.</p>

<p>The thread linked above tells you everything I guess. I am still baffeled how idiotic some people in our society behave, even though this is not the worst kind of human being running around these days (especially if you consider covid-denialists and so on).</p>
]]></content:encoded>
      <guid>https://beyermatthias.de/thoughts-2</guid>
      <pubDate>Fri, 14 May 2021 18:11:19 +0200</pubDate>
    </item>
    <item>
      <title>The Abomination that Github calls &#34;Suggested Change&#34;</title>
      <link>https://beyermatthias.de/the-abomination-that-github-calls-suggested-change</link>
      <description>&lt;![CDATA[I am known for being not the biggest fan of #github anymore, especially since #Microsoft aquired them for a shitload of money. But when I recently learned about the &#34;Suggested Change&#34; feature, I lost any believe in them. How bad can one mess up a feature?&#xA;&#xA;So, the &#34;Suggested Change&#34;-Feature, as I call it, provides a way to request changes on a pull request. A user can suggest a snippet of code being altered in a way they think is appropriate, by selecting the line from the diff in the PR that needs to be changed, and providing some replacement.&#xA;&#xA;That replacement then is suggested to all who have write access on the source branch (most of the time, also maintainers of the target repository because of a checked-by-default option in PRs) and can be applied by them.&#xA;&#xA;That&#39;s everything. There can be discussion on the change, of course, but that&#39;s the whole feature. It&#39;s even somewhat useful! But the way GitHub implemented this is just a load of pure shit.&#xA;&#xA;The first thing is: they make you write change suggestions for Code in a Markdown-Editor! I mean... its not like code editors in web browsers are a new thing, or even an uncommon thing. But GitHub thinks otherwise and you&#39;re completely left alone, with a non-monospaced font, figure out how many spaces&#xA;(or tabs, anyone?) you need on your own! GitHub does not care! You want to fix indentation of the code in there? Haha! Good luck with that! Oh, you accidentally suggested trailing whitespace! Well, GitHub cannot help you with that, because they don&#39;t know what a code editor is!  In fact, your change suggestion is actually a markdown formatted comment with the diff being a markdown code block. What the hell?&#xA;&#xA;Had enough already?&#xA;&#xA;Next thing: you cannot provide a sensible change description, elsewhere known as commit message. You&#39;ve probably never heard of that, GitHub, have you?  Well, that&#39;s not entirely true though: The person who accepts your suggested change can. Yep, that&#39;s right! Not the author of the diff provides the&#xA;commit message, but the committer. Nontrivial changes with &#34;Update&#34; as message anyone?&#xA;&#xA;But even worse is that github actually thinks that suggested changes should not even be patches. How full of shit can they be? They implemented a feature to suggest changes on a pull request and these changes are NOT patches. There is no patch you can git-fetch, nothing you can git-cherry-pick or even&#xA;git-merge on your own machine. Everything you can do is go to the website, click the &#34;Apply suggested change&#34; button, which creates new commits on your PR branch and then fetch your own PR branch. There&#39;s no way to fetch the changes beforehand and review them locally, using your favorite tooling. This is the known Embrace-Extend-Extinguish bullshit that Microsoft pulled for years!&#xA;&#xA;My suggestion: If you can, run away from GitHub as fast as you can. This ship will sink at some point, either because the community recognizes how badly they are messing things up, or because Microsoft makes the whole thing into some real enterprise: slow, complicated to use and only with paid access.&#xA;If you cannot, for whatever reason, leave GitHub at this point, I suggest you gradually move away from it: make use of other git hosting providers, learn how to use alternatives, learn how to contribute via email and/or even roll your own git hoster - with gitolite and cgit it is almost trivial, and hosters that allow you to deploy such software exist - I like to suggest you have a look at uberspace for a really good and reasonably priced one (I am not and never have been affiliated with/paid by them for saying/writing this).&#xA;&#xA;How it could have been&#xA;&#xA;You might ask how such a feature would have been implemented properly. Well, given the circumstance that GitHub is a web service and users are wanted on the platform for as long as possible, I would have implemented this as follows:&#xA;&#xA;  If you want to suggest changes you get a monospace-ready web-based code editor with syntax highlighting and maybe even a minimal autocompletion feature. The editor boots with your cursor at the position you initially clicked on in the changset you try to alter.&#xA;  You annotate your suggested change with your own commit message, or optionally use the &#34;!fixup commit message&#34; commit message header that can later be used in a git rebase --autosquash.&#xA;  Once you&#39;re done adding your suggestions to the diff in the PR, you submit all your individual patches and you get a branch that builds on top of the PR branch, for example named github.com/your username/your repo clone/PR branch name/suggestions-N.&#xA;  The PR author gets notified about the suggested changes and can git-pull them from your fork properly, review them locally and push them to their PR if they see fit or filter out what they don&#39;t like.&#xA;&#xA;Everyone would be totally happy with that. For your dummy-users, you could have buttons and knobs to do the whole thing. Still, your power-users would be satisfied because they have the power to use their own infrastructure and tooling.&#xA;&#xA;But once again, GitHub fails to deliver.&#xA;]]&gt;</description>
      <content:encoded><![CDATA[<p>I am known for being not the biggest fan of <a href="https://beyermatthias.de/tag:github" class="hashtag"><span>#</span><span class="p-category">github</span></a> anymore, especially since <a href="https://beyermatthias.de/tag:Microsoft" class="hashtag"><span>#</span><span class="p-category">Microsoft</span></a> aquired them for a shitload of money. But when I recently learned about the “Suggested Change” feature, I lost any believe in them. How bad can one mess up a feature?</p>

<p>So, the “Suggested Change”-Feature, as I call it, provides a way to request changes on a pull request. A user can suggest a snippet of code being altered in a way they think is appropriate, by selecting the line from the diff in the PR that needs to be changed, and providing some replacement.</p>

<p>That replacement then is suggested to all who have write access on the source branch (most of the time, also maintainers of the target repository because of a checked-by-default option in PRs) and can be applied by them.</p>

<p>That&#39;s everything. There can be discussion on the change, of course, but that&#39;s the whole feature. It&#39;s even somewhat useful! But the way GitHub implemented this is just a load of pure shit.</p>

<p>The first thing is: they make you write change suggestions for <strong>Code</strong> in a Markdown-Editor! I mean... its not like code editors in web browsers are a new thing, or even an uncommon thing. But GitHub thinks otherwise and you&#39;re completely left alone, with a non-monospaced font, figure out how many spaces
(or tabs, anyone?) you need on your own! GitHub does not care! You want to fix indentation of the code in there? Haha! Good luck with that! Oh, you accidentally suggested trailing whitespace! Well, GitHub cannot help you with that, because they don&#39;t know what a code editor is!  In fact, your change suggestion is actually a markdown formatted comment with the diff being a <em>markdown code block</em>. What the hell?</p>

<p>Had enough already?</p>

<p>Next thing: you cannot provide a sensible change description, elsewhere known as <em>commit message</em>. You&#39;ve probably never heard of that, GitHub, have you?  Well, that&#39;s not entirely true though: The person who <em>accepts</em> your suggested change can. Yep, that&#39;s right! Not the author of the diff provides the
commit message, but the committer. Nontrivial changes with “Update” as message anyone?</p>

<p>But even worse is that <em>git</em>hub actually thinks that suggested changes should not even be patches. How full of shit can they be? They implemented a feature to suggest <em>changes</em> on a pull request and these changes are NOT patches. There is no patch you can <code>git-fetch</code>, nothing you can <code>git-cherry-pick</code> or even
<code>git-merge</code> on your own machine. Everything you can do is go to the website, click the “Apply suggested change” button, which creates new commits on your PR branch and then fetch your own PR branch. There&#39;s no way to fetch the changes beforehand and review them locally, using <em>your</em> favorite tooling. This is the known Embrace-Extend-Extinguish bullshit that Microsoft pulled for years!</p>

<p>My suggestion: If you can, run away from GitHub as fast as you can. This ship <em>will</em> sink at some point, either because the community recognizes how badly they are messing things up, or because Microsoft makes the whole thing into some real enterprise: slow, complicated to use and only with paid access.
If you cannot, for whatever reason, leave GitHub at this point, I suggest you gradually move away from it: make use of other git hosting providers, learn how to use alternatives, learn how to <a href="https://git-send-email.io">contribute via email</a> and/or even roll your own git hoster – with <a href="https://gitolite.com/gitolite/index.html">gitolite</a> and <a href="https://git.zx2c4.com/cgit/">cgit</a> it is almost trivial, and hosters that allow you to deploy such software exist – I like to suggest you have a look at <a href="https://uberspace.de/en/">uberspace</a> for a really good and reasonably priced one (I am not and never have been affiliated with/paid by them for saying/writing this).</p>

<h2 id="how-it-could-have-been" id="how-it-could-have-been">How it could have been</h2>

<p>You might ask how such a feature would have been implemented properly. Well, given the circumstance that GitHub <em>is</em> a web service and users are wanted <em>on</em> the platform for as long as possible, I would have implemented this as follows:</p>
<ul><li>If you want to suggest changes you get a monospace-ready web-based code editor with syntax highlighting and maybe even a minimal autocompletion feature. The editor boots with your cursor at the position you initially clicked on in the changset you try to alter.</li>
<li>You annotate your suggested change with your own commit message, or optionally use the “!fixup ” commit message header that can later be used in a <code>git rebase --autosquash</code>.</li>
<li>Once you&#39;re done adding your suggestions to the diff in the PR, you submit all your individual patches and you get a <em>branch</em> that builds on top of the PR branch, for example named <code>github.com/&lt;your username&gt;/&lt;your repo clone&gt;/&lt;PR branch name&gt;/suggestions-&lt;N&gt;</code>.</li>
<li>The PR author gets notified about the suggested changes and can <code>git-pull</code> them from your fork properly, review them locally and push them to their PR if they see fit or filter out what they don&#39;t like.</li></ul>

<p>Everyone would be totally happy with that. For your dummy-users, you could have buttons and knobs to do the whole thing. Still, your power-users would be satisfied because they have the power to use their own infrastructure and tooling.</p>

<p>But once again, GitHub fails to deliver.</p>
]]></content:encoded>
      <guid>https://beyermatthias.de/the-abomination-that-github-calls-suggested-change</guid>
      <pubDate>Wed, 28 Apr 2021 19:05:29 +0200</pubDate>
    </item>
    <item>
      <title>git-dit github import</title>
      <link>https://beyermatthias.de/git-dit-github-import</link>
      <description>&lt;![CDATA[So I started developing an importer for importing github issues into git-dit&#xA;the distributed issue tracker build on git.&#xA;&#xA;Turns out it works well, though some things are not yet implemented:&#xA;&#xA;Wrapping of text. This is difficult because quotations are wrapped, but the&#xA;  quotation character is not prepended to the new line - which results in&#xA;  broken format&#xA;Importing only issues. Right now, PRs are imported ... which is not exactly&#xA;  what we want. I really hope I can figure this out to actually attach PR&#xA;  comments to the actual commits of the PR. This would be really nice. Issues&#xA;  shall be imported without parent (orphaned) like git-dit wants it.&#xA;Mapping of github handles to real names and email addresses.&#xA;Mapping github labels to git-dit &#34;trailers&#34;.&#xA;&#xA;Have a look&#xA;at my importer tool here&#xA;(Just be told: This is WIP and shouldn&#39;t be used right now)!&#xA;&#xA;Or at git-dit itself here&#xA;(I am co-author).&#xA;&#xA;tags:  #tools #software #rust #open-source #git #github&#xA;]]&gt;</description>
      <content:encoded><![CDATA[<p>So I started developing an importer for importing github issues into git-dit
– the distributed issue tracker build on git.</p>

<p>Turns out it works well, though some things are not yet implemented:</p>
<ul><li>Wrapping of text. This is difficult because quotations are wrapped, but the
quotation character is not prepended to the new line – which results in
broken format</li>
<li>Importing only issues. Right now, PRs are imported ... which is not exactly
what we want. I really hope I can figure this out to actually attach PR
comments to the actual commits of the PR. This would be really nice. Issues
shall be imported without parent (orphaned) like git-dit wants it.</li>
<li>Mapping of github handles to real names and email addresses.</li>
<li>Mapping github labels to git-dit “trailers”.</li></ul>

<p>Have a look
<a href="https://github.com/matthiasbeyer/git-dit-github-import">at my importer tool here</a>
(Just be told: This is WIP and shouldn&#39;t be used right now)!</p>

<p>Or at <a href="https://github.com/neithernut/git-dit">git-dit itself here</a>
(I am co-author).</p>

<p>tags:  <a href="https://beyermatthias.de/tag:tools" class="hashtag"><span>#</span><span class="p-category">tools</span></a> <a href="https://beyermatthias.de/tag:software" class="hashtag"><span>#</span><span class="p-category">software</span></a> <a href="https://beyermatthias.de/tag:rust" class="hashtag"><span>#</span><span class="p-category">rust</span></a> <a href="https://beyermatthias.de/tag:open" class="hashtag"><span>#</span><span class="p-category">open</span></a>-source <a href="https://beyermatthias.de/tag:git" class="hashtag"><span>#</span><span class="p-category">git</span></a> <a href="https://beyermatthias.de/tag:github" class="hashtag"><span>#</span><span class="p-category">github</span></a></p>
]]></content:encoded>
      <guid>https://beyermatthias.de/git-dit-github-import</guid>
      <pubDate>Wed, 17 Jan 2018 16:38:48 +0100</pubDate>
    </item>
    <item>
      <title>Why we need distributed issue tracking</title>
      <link>https://beyermatthias.de/why-we-need-distributed-issue-tracking</link>
      <description>&lt;![CDATA[small&#xA;  This post was written during my trip through Iceland and published much&#xA;  latern than it was written.&#xA;/small&#xA;&#xA;When writing&#xA;my last entry,&#xA;I argued that we need decentralized issue tracking.&#xA;&#xA;Here&#39;s why.&#xA;&#xA;Why these things must be decentralized&#xA;&#xA;Issue tracking, bug tracking and of course pull request tracking (which could&#xA;all be named &#34;issue tracking&#34;, btw) must, in my opinion, be decentralized.&#xA;That&#39;s not only because I think offline-first should be the way to go, even&#xA;today in our always-connected and always-on(line) world. It&#39;s also because&#xA;of redundancy and failure safety. Linus Torvalds himself once said:&#xA;&#xA;  I don&#39;t do backups, I publish and let the world mirror it&#xA;&#xA;(paraphrased)&#xA;&#xA;And that&#39;s true. We should not need to do backups, we should share all data, in&#xA;my opinion. Even absolutely personal data. Yes, you read that right, me, the&#xA;Facebook/Google/Twitter/Whatsapp/whatever free living guy tells you that all&#xA;data need to be shared. But I also tell you: Never ever unencrypted! And I do&#xA;not mean transport encryption, I mean real encryption. Unbreakable is not&#xA;possible, but at least theoretically-unbreakable for at least 250 years should&#xA;do. If the data is shared in&#xA;a decentralized way, like IPFS or Filecoin try to do, we (almost) can be sure&#xA;that if our hard drive failes, we don&#39;t lose the data. And of course, you can&#xA;still do backups.&#xA;&#xA;Now let&#39;s get back to topic. If we decentralize issue tracking, we can make sure&#xA;that issues are around somewhere. If github closes down tomorrow, thousands, if&#xA;not millions, open source projects lose their issues. And that&#39;s not only&#xA;current issues, but also history of issue tracking, which means also data how a&#xA;bug was closed, how a bug should be closed, what features are implemented why or&#xA;how and these things. If your self-hosted solution loses data, like gitlab did&#xA;not long ago on their gitlab.com hosted instance, data is gone forever. If we&#xA;decentralize these things, more instances have to fail to bring the the whole&#xA;project down.&#xA;&#xA;There&#39;s actually a law of some sort about these things, named Amdahl&#39;s law: The&#xA;more instances a distributed system has, the more likely it is that one instance&#xA;is dead right now, but at the same time, the less likely it is that the whole&#xA;system is dead. And this is not linear likelihood, it is exponential. That means&#xA;that with 10, 15 or 20 instances you can be sure that your stuff is alive&#xA;somewhere if your instance fails.&#xA;&#xA;Now think of projects with many contributors. Maybe not as big as the kernel,&#xA;which has an exceptionally big community. Think of communities like the neovim&#xA;one. The tmux project. The GNU Hurd (have you Hurd about that one?) or such&#xA;projects. If in one of these projects 30 or 40 developers are actively&#xA;maintaining things, their repositories will never die. And if the repository&#xA;holds the issue history as well, we get backup safety there for free. How&#xA;awesome is that?&#xA;&#xA;I guess I made my point.&#xA;&#xA;tags:  #open-source #programming #software #tools #git #github&#xA;]]&gt;</description>
      <content:encoded><![CDATA[<p><small>
  This post was written during my trip through Iceland and published much
  latern than it was written.
</small></p>

<p>When writing
<a href="/blog/2017/09/30/all-we-need-for-a-self-hosting-distributed-open-source-programming-toolchain/">my last entry</a>,
I argued that we need decentralized issue tracking.</p>

<p>Here&#39;s why.</p>

<h1 id="why-these-things-must-be-decentralized" id="why-these-things-must-be-decentralized">Why these things must be decentralized</h1>

<p>Issue tracking, bug tracking and of course pull request tracking (which could
all be named “issue tracking”, btw) must, in my opinion, be decentralized.
That&#39;s not only because I think offline-first should be the way to go, even
today in our always-connected and always-on(line) world. It&#39;s also because
of redundancy and failure safety. Linus Torvalds himself once said:</p>

<blockquote><p>I don&#39;t do backups, I publish and let the world mirror it</p></blockquote>

<p>(paraphrased)</p>

<p>And that&#39;s true. We should not need to do backups, we should share all data, in
my opinion. Even absolutely personal data. Yes, you read that right, me, the
Facebook/Google/Twitter/Whatsapp/whatever free living guy tells you that all
data need to be shared. But I also tell you: Never ever unencrypted! And I do
not mean transport encryption, I mean real encryption. Unbreakable is not
possible, but at least theoretically-unbreakable for at least 250 years should
do. If the data is shared in
a decentralized way, like IPFS or Filecoin try to do, we (almost) can be sure
that if our hard drive failes, we don&#39;t lose the data. And of course, you can
still do backups.</p>

<p>Now let&#39;s get back to topic. If we decentralize issue tracking, we can make sure
that issues are around somewhere. If github closes down tomorrow, thousands, if
not millions, open source projects lose their issues. And that&#39;s not only
current issues, but also history of issue tracking, which means also data how a
bug was closed, how a bug should be closed, what features are implemented why or
how and these things. If your self-hosted solution loses data, like gitlab did
not long ago on their gitlab.com hosted instance, data is gone forever. If we
decentralize these things, more instances have to fail to bring the the whole
project down.</p>

<p>There&#39;s actually a law of some sort about these things, named Amdahl&#39;s law: The
more instances a distributed system has, the more likely it is that one instance
is dead right now, but at the same time, the less likely it is that the whole
system is dead. And this is not linear likelihood, it is exponential. That means
that with 10, 15 or 20 instances you <em>can be sure that your stuff is alive
somewhere</em> if your instance fails.</p>

<p>Now think of projects with many contributors. Maybe not as big as the kernel,
which has an exceptionally big community. Think of communities like the neovim
one. The tmux project. The GNU Hurd (have you Hurd about that one?) or such
projects. If in one of these projects 30 or 40 developers are actively
maintaining things, their repositories will never die. And if the repository
holds the issue history as well, we get backup safety there for free. How
awesome is that?</p>

<p>I guess I made my point.</p>

<p>tags:  <a href="https://beyermatthias.de/tag:open" class="hashtag"><span>#</span><span class="p-category">open</span></a>-source <a href="https://beyermatthias.de/tag:programming" class="hashtag"><span>#</span><span class="p-category">programming</span></a> <a href="https://beyermatthias.de/tag:software" class="hashtag"><span>#</span><span class="p-category">software</span></a> <a href="https://beyermatthias.de/tag:tools" class="hashtag"><span>#</span><span class="p-category">tools</span></a> <a href="https://beyermatthias.de/tag:git" class="hashtag"><span>#</span><span class="p-category">git</span></a> <a href="https://beyermatthias.de/tag:github" class="hashtag"><span>#</span><span class="p-category">github</span></a></p>
]]></content:encoded>
      <guid>https://beyermatthias.de/why-we-need-distributed-issue-tracking</guid>
      <pubDate>Fri, 20 Oct 2017 16:38:18 +0200</pubDate>
    </item>
    <item>
      <title>CI first vs. Review first</title>
      <link>https://beyermatthias.de/ci-first-vs</link>
      <description>&lt;![CDATA[small&#xA;  This post was written during my trip through Iceland and published much&#xA;  latern than it was written.&#xA;/small&#xA;&#xA;Almost all toolchains out there do a CI-first approach. There are clearly&#xA;benefits for that, but maybe that&#39;s not what one wants with their self-hosted&#xA;solution for their OSS Projects?&#xA;&#xA;Here I try to summarize some thoughts.&#xA;&#xA;CI first&#xA;&#xA;CI first is convenient, of course. Take github and Travis as an example. If a PR&#xA;fails to build, one has not even to review it. If a change makes some tests&#xA;fail, either the test suite has to be adapted or the code has to be fixed to get&#xA;the test working again. But as long as things fail, a maintainer does not&#xA;necessarily have to have a look.&#xA;&#xA;The disadvantage is, of course, that resources need to be there to compile and&#xA;test the code all the time. But that&#39;s not that much of an issue, because&#xA;hardware and energy is cheap and developer time is not.&#xA;&#xA;Review first&#xA;&#xA;Review keeps the number of compile- and test-runs low as only code gets tested&#xA;which is basically agreed upon. Though, it increases the effort a maintainer has&#xA;to invest into the project.&#xA;&#xA;Review first is basically cheap. If you think of an OSS hobby project, that&#xA;might be a good idea, especially if your limited funding keeps you from renting&#xA;or buying good hardware where running hundreds or even thousands of compile jobs&#xA;per month can be done at decent speed.&#xA;&#xA;What I&#39;d do&#xA;&#xA;I&#39;m thinking of this subject in the context of moving away from github with one&#xA;of my projects (imag, of course. Because of my limited&#xA;resources (the website and repository are hosted on&#xA;Uberspace, which is perfect for that), I cannot run a&#xA;lot of CI jobs. I don&#39;t even known whether running CI jobs on this host is&#xA;allowed at all. If not, I&#39;d probably rent a server somewhere and if that is the&#xA;case, I&#39;d do CI-first and integrate that into the Uberspace-hosted site. That&#xA;way I&#39;d even be able to run more things I would like to run on a server for my&#xA;personal needs.  But if CI is allowed on Uberspace (I really have to ask them),&#xA;I&#39;d probably go for Review-first and invest the money I save into my Uberspace&#xA;account.&#xA;&#xA;tags:  #open-source #programming #software #tools #git #github&#xA;]]&gt;</description>
      <content:encoded><![CDATA[<p><small>
  This post was written during my trip through Iceland and published much
  latern than it was written.
</small></p>

<p>Almost all toolchains out there do a CI-first approach. There are clearly
benefits for that, but maybe that&#39;s not what one wants with their self-hosted
solution for their OSS Projects?</p>

<p>Here I try to summarize some thoughts.</p>

<h1 id="ci-first" id="ci-first">CI first</h1>

<p>CI first is convenient, of course. Take github and Travis as an example. If a PR
fails to build, one has not even to review it. If a change makes some tests
fail, either the test suite has to be adapted or the code has to be fixed to get
the test working again. But as long as things fail, a maintainer does not
necessarily have to have a look.</p>

<p>The disadvantage is, of course, that resources need to be there to compile and
test the code all the time. But that&#39;s not that much of an issue, because
hardware and energy is cheap and developer time is not.</p>

<h1 id="review-first" id="review-first">Review first</h1>

<p>Review keeps the number of compile- and test-runs low as only code gets tested
which is basically agreed upon. Though, it increases the effort a maintainer has
to invest into the project.</p>

<p>Review first is basically cheap. If you think of an OSS hobby project, that
might be a good idea, especially if your limited funding keeps you from renting
or buying good hardware where running hundreds or even thousands of compile jobs
per month can be done at decent speed.</p>

<h1 id="what-i-d-do" id="what-i-d-do">What I&#39;d do</h1>

<p>I&#39;m thinking of this subject in the context of moving away from github with one
of my projects (<a href="https://imag-pim.org">imag, of course</a>. Because of my limited
resources (the website and repository are hosted on
<a href="https://uberspace.de">Uberspace</a>, which is perfect for that), I cannot run a
lot of CI jobs. I don&#39;t even known whether running CI jobs on this host is
allowed at all. If not, I&#39;d probably rent a server somewhere and if that is the
case, I&#39;d do CI-first and integrate that into the Uberspace-hosted site. That
way I&#39;d even be able to run more things I would like to run on a server for my
personal needs.  But if CI is allowed on Uberspace (I really have to ask them),
I&#39;d probably go for Review-first and invest the money I save into my Uberspace
account.</p>

<p>tags:  <a href="https://beyermatthias.de/tag:open" class="hashtag"><span>#</span><span class="p-category">open</span></a>-source <a href="https://beyermatthias.de/tag:programming" class="hashtag"><span>#</span><span class="p-category">programming</span></a> <a href="https://beyermatthias.de/tag:software" class="hashtag"><span>#</span><span class="p-category">software</span></a> <a href="https://beyermatthias.de/tag:tools" class="hashtag"><span>#</span><span class="p-category">tools</span></a> <a href="https://beyermatthias.de/tag:git" class="hashtag"><span>#</span><span class="p-category">git</span></a> <a href="https://beyermatthias.de/tag:github" class="hashtag"><span>#</span><span class="p-category">github</span></a></p>
]]></content:encoded>
      <guid>https://beyermatthias.de/ci-first-vs</guid>
      <pubDate>Mon, 02 Oct 2017 16:38:18 +0200</pubDate>
    </item>
    <item>
      <title>All we need for a self-hosting distributed open source programming toolchain</title>
      <link>https://beyermatthias.de/all-we-need-for-a-self-hosting-distributed-open-source-programming-toolchain</link>
      <description>&lt;![CDATA[small&#xA;  This post was written during my trip through Iceland and published much&#xA;  latern than it was written.&#xA;/small&#xA;&#xA;From my&#xA;last article on whether to move away from github with imag&#xA;, you saw that&#xA;I&#39;m heavily thinking about this subject. In this post I want to summarize what&#xA;I think we need for a completely self-hosted open source programming toolchain.&#xA;&#xA;Issue tracking&#xA;&#xA;Do we actually need this? For example, does the kernel do these things? Bug&#xA;tracking - yes. But Issue tracking as in planning what to implement next? Maybe&#xA;the companies that contribute to the kernel, internally, but not the kernel&#xA;community as a whole (AFAIK).&#xA;&#xA;Of course the kernel is a bad example in this case, because of its size, the&#xA;size of the community around it and all these things. And other smaller projects&#xA;use issue tracking for planning, for example the nixos community (which is still&#xA;fairly big) or the Archlinux community (though I&#39;m not sure whether they are&#xA;doing these things only over mailinglists or via a dedicated forum at&#xA;archlinux.org.&#xA;&#xA;Bug tracking&#xA;&#xA;Bug tracking should be done on a per-bug basis. I think this is a very&#xA;particular problem that can be easily solved with a mailing list. As soon as a&#xA;bug is found, it is posted to the mailing list and discussion and patches are&#xA;added to the list thread until the issue is solved.&#xA;&#xA;Pull request tracking&#xA;&#xA;With github, a contributor automatically has an web-accessible repository. But&#xA;for the most part it is sufficient if the patches are send via an email-patch&#xA;workflow, which is how many great projects work. Having web-accessible&#xA;repositories available is just a convenience github introduced and now&#xA;everybody expects.&#xA;&#xA;I think pull requests (or rather patchsets) are tracked no matter how they are&#xA;submitted. If you open a PR on github, patches are equally good tracked as with&#xA;mailing lists. Indeed I even think that mailing lists are way better for&#xA;tracking and discussion, as one can start a discussion on each individual patch.&#xA;That&#39;s not really possible with github. Also, the tree-shape one can get into&#xA;when discussing a patch is a major point where mailing lists are way better than&#xA;github.&#xA;&#xA;CI&#xA;&#xA;Continuous Integration is a thing where solutions like gitlab or github shine.&#xA;They easily integrate with repositories, are for free and result in better and&#xA;tested code (normally). I do not know of any bigger open source project that&#xA;does not use some form of CI. Even the kernel is tested (though not by the&#xA;kernel community directly but rather companies like Intel or Redhat, as far as I&#xA;know).&#xA;&#xA;A CI solution, though, is rather simple to implement (but I&#39;m sure it is not&#xA;easy to get it right). Read my expectations below.&#xA;&#xA;How I would like it&#xA;&#xA;Issue and bug tracking should be based on plain text, which means that one&#xA;should be able to integrate a mailing list into the bug tracking system.&#xA;Fortunately, there is&#xA;such an effort named git-dit&#xA;but it is not usable yet. Well,&#xA;it is useable, but has neither email integration nor a web interface (for&#xA;viewing). This is, of course, unfortunate. Also, there is no way to import&#xA;existing issues from (for example) github. And that&#39;s important, of course.&#xA;&#xA;For pull request/patch management, there&#39;s&#xA;patchworks.&#xA;I&#39;ve never worked with it, but as far as I can see it works nicely and could be&#xA;used. But I would prefer to use git-dit for this, too.&#xA;&#xA;I would love to have an CI tool that works on a git-push-based model. For&#xA;example you install a post-receive hook in your repository on your server, and&#xA;as soon as there is a new push, the hook verifies some things and then starts to&#xA;build the project from a script, which preferably lives in the repository&#xA;itself. One step further, the tool would create a RAM-disk, clone the just&#xA;pushed branch into it (so we have a fresh clone) and builds things there. Even&#xA;one step further, the tool would create a new container (think of&#xA;systemd-nspawn) and trigger the build there. That would ensure that the build&#xA;does not depend on some global system state.&#xA;&#xA;This, of course, has also some security implications. That&#39;s why I would only&#xA;build branches where the newest (the latest) commit is signed with a certain GPG&#xA;key. It&#39;s an really easy thing to do it and because of GPG and git itself, one&#xA;can be sure that only certain people can trigger a build (which is only&#xA;execution of a shell script, so you see that this has some implications).&#xA;Another idea would be to rely on gitolite, which has ssh authentication. This&#xA;would be even easier, as no validation would be necessary on our side.&#xA;&#xA;The results of the build should be mailed to the author/commiter of the build&#xA;commit.&#xA;&#xA;And yes, now that I wrote these things down I see that we have such an tool&#xA;already: drone.&#xA;&#xA;That&#39;s it!&#xA;&#xA;That&#39;s actually it. We don&#39;t need more than that for a toolchain for developing&#xA;open source software with self hosted solutions. Decentralized issue/PR&#xA;tracking, a decent CI toolchain, git and here we go.&#xA;&#xA;tags:  #open-source #programming #software #tools #git #github&#xA;]]&gt;</description>
      <content:encoded><![CDATA[<p><small>
  This post was written during my trip through Iceland and published much
  latern than it was written.
</small></p>

<p>From my
<a href="/blog/2017/09/15/why-i-think-about-closing-contributions-to-imag/">last article on whether to move away from github with imag</a>
, you saw that
I&#39;m heavily thinking about this subject. In this post I want to summarize what
I think we need for a completely self-hosted open source programming toolchain.</p>

<h1 id="issue-tracking" id="issue-tracking">Issue tracking</h1>

<p>Do we actually need this? For example, does the kernel do these things? Bug
tracking – yes. But Issue tracking as in planning what to implement next? Maybe
the companies that contribute to the kernel, internally, but not the kernel
community as a whole (AFAIK).</p>

<p>Of course the kernel is a bad example in this case, because of its size, the
size of the community around it and all these things. And other smaller projects
use issue tracking for planning, for example the nixos community (which is still
fairly big) or the Archlinux community (though I&#39;m not sure whether they are
doing these things only over mailinglists or via a dedicated forum at
archlinux.org.</p>

<h1 id="bug-tracking" id="bug-tracking">Bug tracking</h1>

<p>Bug tracking should be done on a per-bug basis. I think this is a very
particular problem that can be easily solved with a mailing list. As soon as a
bug is found, it is posted to the mailing list and discussion and patches are
added to the list thread until the issue is solved.</p>

<h1 id="pull-request-tracking" id="pull-request-tracking">Pull request tracking</h1>

<p>With github, a contributor automatically has an web-accessible repository. But
for the most part it is sufficient if the patches are send via an email-patch
workflow, which is how many great projects work. Having web-accessible
repositories available is just a convenience github introduced and now
everybody expects.</p>

<p>I think pull requests (or rather patchsets) are tracked no matter how they are
submitted. If you open a PR on github, patches are equally good tracked as with
mailing lists. Indeed I even think that mailing lists are way better for
tracking and discussion, as one can start a discussion on each individual patch.
That&#39;s not really possible with github. Also, the tree-shape one can get into
when discussing a patch is a major point where mailing lists are way better than
github.</p>

<h1 id="ci" id="ci">CI</h1>

<p>Continuous Integration is a thing where solutions like gitlab or github shine.
They easily integrate with repositories, are for free and result in better and
tested code (normally). I do not know of any bigger open source project that
does not use some form of CI. Even the kernel is tested (though not by the
kernel community directly but rather companies like Intel or Redhat, as far as I
know).</p>

<p>A CI solution, though, is rather simple to implement (but I&#39;m sure it is not
easy to get it right). Read my expectations below.</p>

<h1 id="how-i-would-like-it" id="how-i-would-like-it">How I would like it</h1>

<p>Issue and bug tracking should be based on plain text, which means that one
should be able to integrate a mailing list into the bug tracking system.
Fortunately, there is
<a href="https://github.com/neithernut/git-dit">such an effort named git-dit</a>
but it is not usable yet. Well,
it is useable, but has neither email integration nor a web interface (for
viewing). This is, of course, unfortunate. Also, there is no way to import
existing issues from (for example) github. And that&#39;s important, of course.</p>

<p>For pull request/patch management, there&#39;s
<a href="http://jk.ozlabs.org/projects/patchwork/">patchworks</a>.
I&#39;ve never worked with it, but as far as I can see it works nicely and could be
used. But I would prefer to use git-dit for this, too.</p>

<p>I would love to have an CI tool that works on a git-push-based model. For
example you install a post-receive hook in your repository on your server, and
as soon as there is a new push, the hook verifies some things and then starts to
build the project from a script, which preferably lives in the repository
itself. One step further, the tool would create a RAM-disk, clone the just
pushed branch into it (so we have a fresh clone) and builds things there. Even
one step further, the tool would create a new container (think of
systemd-nspawn) and trigger the build there. That would ensure that the build
does not depend on some global system state.</p>

<p>This, of course, has also some security implications. That&#39;s why I would only
build branches where the newest (the latest) commit is signed with a certain GPG
key. It&#39;s an really easy thing to do it and because of GPG and git itself, one
can be sure that only certain people can trigger a build (which is only
execution of a shell script, so you see that this has some implications).
Another idea would be to rely on gitolite, which has ssh authentication. This
would be even easier, as no validation would be necessary on our side.</p>

<p>The results of the build should be mailed to the author/commiter of the build
commit.</p>

<p>And yes, now that I wrote these things down I see that we have such an tool
already: <a href="https://drone.io">drone</a>.</p>

<h1 id="that-s-it" id="that-s-it">That&#39;s it!</h1>

<p>That&#39;s actually it. We don&#39;t need more than that for a toolchain for developing
open source software with self hosted solutions. Decentralized issue/PR
tracking, a decent CI toolchain, git and here we go.</p>

<p>tags:  <a href="https://beyermatthias.de/tag:open" class="hashtag"><span>#</span><span class="p-category">open</span></a>-source <a href="https://beyermatthias.de/tag:programming" class="hashtag"><span>#</span><span class="p-category">programming</span></a> <a href="https://beyermatthias.de/tag:software" class="hashtag"><span>#</span><span class="p-category">software</span></a> <a href="https://beyermatthias.de/tag:tools" class="hashtag"><span>#</span><span class="p-category">tools</span></a> <a href="https://beyermatthias.de/tag:git" class="hashtag"><span>#</span><span class="p-category">git</span></a> <a href="https://beyermatthias.de/tag:github" class="hashtag"><span>#</span><span class="p-category">github</span></a></p>
]]></content:encoded>
      <guid>https://beyermatthias.de/all-we-need-for-a-self-hosting-distributed-open-source-programming-toolchain</guid>
      <pubDate>Sat, 30 Sep 2017 16:38:18 +0200</pubDate>
    </item>
    <item>
      <title>Why I think about closing contributions to imag</title>
      <link>https://beyermatthias.de/why-i-think-about-closing-contributions-to-imag</link>
      <description>&lt;![CDATA[small&#xA;    This post was published on both&#xA;    my personal website&#xA;    and&#xA;    imag-pim.org.&#xA;/small&#xA;&#xA;I&#39;m thinking of closing contributions to imag since about two months. Here I&#xA;want to explain why I think about this step and why I am tending into the&#xA;direction of a &#34;yes, let&#39;s do that&#34;.&#xA;&#xA;github is awesome&#xA;&#xA;First of all: github is awesome. It gives you absolutely great tools to build&#xA;a repository and finally also an open source community around your&#xA;codebase. It works flawlessly, I did never experience any issues with pull&#xA;request tracking, issue tracking, milestone management, merging, external tool&#xA;integration (in my case and in the case of imag only Travis CI) or any other&#xA;tool github offers. It just works which is awesome.&#xA;&#xA;But. There&#39;s always a but. Github has issues as well. From time to time there&#xA;are outages, I wrote about them before. Yet, I came to the conclusion that&#xA;github does really really well for the time being. So the outages at github&#xA;are not the point why I am thinking of moving imag away from github.&#xA;&#xA;Current state of imag&#xA;&#xA;It is the state of imag. Don&#39;t get me wrong, imag is awesome and gets better&#xA;every day.&#xA;Either way, it is still not in a state where I would use it in production. And&#xA;I&#39;m developing it for almost two years now. That&#39;s a really long time frame&#xA;for an open source project that is, in majority, only developed by one person.&#xA;Sure, there are a few hundred commits from other, but right now (the last&#xA;time I checked the numbers) more than 95% of the commits and the code were&#xA;written by me.&#xA;&#xA;Imag really should get into a state where I would use it myself before making&#xA;it accessible (contribution wise) to the public, in my opinion. Developing it&#xA;more &#34;closed&#34; seems like a good idea for me to get it into shape, therefore.&#xA;&#xA;Closing down&#xA;&#xA;What do I mean by &#34;closing development&#34;, though? I do not intend to make imag&#xA;closed source or hiding the code from the public, that&#39;s for sure. What I&#xA;mean by closing development is that I would move development off of github and&#xA;do it only on my own site imag-pim.org. The code will&#xA;be openly accessible via the cgit web interface, still. Even&#xA;contributions will be possible, via patch mails or, if a contributor wants&#xA;to, via a git repository on the site. Just the entry gets a bit harder,&#xA;which - I like to believe - keeps away casual contributors and only attracts&#xA;long-term contributors.&#xA;&#xA;The disadvantages&#xA;&#xA;Of course I&#39;m losing the power of the open source community at github. Is this&#xA;a good thing or a bad thing? I honestly don&#39;t know. On the one hand it would&#xA;lessen the burden on my shoulders with community management (which is fairly&#xA;not much right now), issue management and pull request management. On the&#xA;other hand I would lose tools like travis-ci and others, which work flawlessly&#xA;and are a real improvement for the development process.&#xA;&#xA;The conclusion&#xA;&#xA;I don&#39;t really have one. If there would be a way to include Travis into a&#xA;self-hosted repository as well as some possibility for issue management&#xA;(git-dit isn&#39;t ready in this regard,&#xA;yet, because one cannot extract issues from github just yet), I would switch&#xA;immediately. But it isn&#39;t. And that&#39;s keeping me away from moving off of&#xA;github (vendor lock in at its finest, right?).&#xA;&#xA;I guess I will experiment with a dedicated issue repository with git-dit and&#xA;check how the cgit web interface works with it, and if it seems to be good&#xA;enough I will test how it can be integrated (manually) with emails and a&#xA;mailing list. If things work out smoothly enough, I will go down this road.&#xA;&#xA;What I don&#39;t want to do is to integrate the issue repository in the code&#xA;repository. I will have a dedicated repository for issues only, I guess. On&#xA;the other hand, that makes things complicated with pull request handling,&#xA;because one cannot comment on PRs or close issues with PRs. That&#39;s really&#xA;unfortunate, IMO. Maybe imag will become the first project which heavily uses&#xA;git-dit. Importing the existing issues from github would be really nice for&#xA;that, indeed. Maybe I&#39;ll find a way to script the import functionality. As I&#xA;want a complete move, I do not have to keep the issue tracking mechanisms&#xA;(git-dit and github issues) in sync, so at least I do not have this problem&#xA;(which is a hard one on its own).&#xA;&#xA;tags:  #open-source #programming #software #tools #git #github&#xA;]]&gt;</description>
      <content:encoded><![CDATA[<p><small>
    This post was published on both
    <a href="https://beyermatthias.de">my personal website</a>
    and
    <a href="https://imag-pim.org">imag-pim.org</a>.
</small></p>

<p>I&#39;m thinking of closing contributions to imag since about two months. Here I
want to explain why I think about this step and why I am tending into the
direction of a “yes, let&#39;s do that”.</p>

<h1 id="github-is-awesome" id="github-is-awesome">github is awesome</h1>

<p>First of all: github is awesome. It gives you absolutely great tools to build
a repository and finally also an open source community around your
codebase. It works flawlessly, I did never experience any issues with pull
request tracking, issue tracking, milestone management, merging, external tool
integration (in my case and in the case of imag only Travis CI) or any other
tool github offers. It <strong>just works</strong> which is awesome.</p>

<p>But. There&#39;s always a but. Github has issues as well. From time to time there
are outages, I wrote about them before. Yet, I came to the conclusion that
github does really really well for the time being. So the outages at github
are not the point why I am thinking of moving imag away from github.</p>

<h1 id="current-state-of-imag" id="current-state-of-imag">Current state of imag</h1>

<p>It is the state of imag. Don&#39;t get me wrong, imag is awesome and gets better
every day.
Either way, it is still not in a state where I would use it in production. And
I&#39;m developing it for almost two years now. That&#39;s a really long time frame
for an open source project that is, in majority, only developed by one person.
Sure, there are a few hundred commits from other, but right now (the last
time I checked the numbers) more than 95% of the commits and the code were
written by me.</p>

<p>Imag really should get into a state where I would use it myself before making
it accessible (contribution wise) to the public, in my opinion. Developing it
more “closed” seems like a good idea for me to get it into shape, therefore.</p>

<h1 id="closing-down" id="closing-down">Closing down</h1>

<p>What do I mean by “closing development”, though? I do not intend to make imag
closed source or hiding the code from the public, that&#39;s for sure. What I
mean by closing development is that I would move development off of github and
do it only on my own site <a href="https://imag-pim.org">imag-pim.org</a>. The code will
be openly accessible via the cgit web interface, still. Even
contributions will be possible, via patch mails or, if a contributor wants
to, via a git repository on the site. Just the entry gets a bit harder,
which – I like to believe – keeps away casual contributors and only attracts
long-term contributors.</p>

<h1 id="the-disadvantages" id="the-disadvantages">The disadvantages</h1>

<p>Of course I&#39;m losing the power of the open source community at github. Is this
a good thing or a bad thing? I honestly don&#39;t know. On the one hand it would
lessen the burden on my shoulders with community management (which is fairly
not much right now), issue management and pull request management. On the
other hand I would lose tools like travis-ci and others, which work flawlessly
and are a real improvement for the development process.</p>

<h1 id="the-conclusion" id="the-conclusion">The conclusion</h1>

<p>I don&#39;t really have one. If there would be a way to include Travis into a
self-hosted repository as well as some possibility for issue management
(<a href="https://github.com/neithernut/git-dit">git-dit</a> isn&#39;t ready in this regard,
yet, because one cannot extract issues from github just yet), I would switch
immediately. But it isn&#39;t. And that&#39;s keeping me away from moving off of
github (vendor lock in at its finest, right?).</p>

<p>I guess I will experiment with a dedicated issue repository with git-dit and
check how the cgit web interface works with it, and if it seems to be good
enough I will test how it can be integrated (manually) with emails and a
mailing list. If things work out smoothly enough, I will go down this road.</p>

<p>What I don&#39;t want to do is to integrate the issue repository in the code
repository. I will have a dedicated repository for issues only, I guess. On
the other hand, that makes things complicated with pull request handling,
because one cannot comment on PRs or close issues with PRs. That&#39;s really
unfortunate, IMO. Maybe imag will become the first project which heavily uses
git-dit. Importing the existing issues from github would be really nice for
that, indeed. Maybe I&#39;ll find a way to script the import functionality. As I
want a complete move, I do not have to keep the issue tracking mechanisms
(git-dit and github issues) in sync, so at least I do not have this problem
(which is a hard one on its own).</p>

<p>tags:  <a href="https://beyermatthias.de/tag:open" class="hashtag"><span>#</span><span class="p-category">open</span></a>-source <a href="https://beyermatthias.de/tag:programming" class="hashtag"><span>#</span><span class="p-category">programming</span></a> <a href="https://beyermatthias.de/tag:software" class="hashtag"><span>#</span><span class="p-category">software</span></a> <a href="https://beyermatthias.de/tag:tools" class="hashtag"><span>#</span><span class="p-category">tools</span></a> <a href="https://beyermatthias.de/tag:git" class="hashtag"><span>#</span><span class="p-category">git</span></a> <a href="https://beyermatthias.de/tag:github" class="hashtag"><span>#</span><span class="p-category">github</span></a></p>
]]></content:encoded>
      <guid>https://beyermatthias.de/why-i-think-about-closing-contributions-to-imag</guid>
      <pubDate>Fri, 15 Sep 2017 16:38:18 +0200</pubDate>
    </item>
    <item>
      <title>Why we need tools like git-dit</title>
      <link>https://beyermatthias.de/why-we-need-tools-like-git-dit</link>
      <description>&lt;![CDATA[Right now, github shows you this:&#xA;&#xA;github is down&#xA;&#xA;And these things will happen more frequently in future, I assure you!&#xA;&#xA;In the first half of 2017, we already had 3 major service outages, 3 minor&#xA;service outages and 21 other problems.&#xA;Yes, indeed, this is very good service quality.&#xA;It really is.&#xA;Anyways, it is not optimal.&#xA;Github advertises itself with 22M developers, 59M repositories and 117k&#xA;businesses world-wide, which is a freakin&#39; lot.&#xA;&#xA;I really like github, it is a great platform for the open-source community and&#xA;individual projects and developers.&#xA;&#xA;But. There&#39;s a but.&#xA;&#xA;Github will not scale endlessly.&#xA;It will vanish at some point.&#xA;Maybe not in 2 years, maybe not in 5 or even 10 years.&#xA;But at some point, a competitor will step up and get bigger and better than&#xA;github.&#xA;Or it will be taken down by someone.&#xA;Who knows.&#xA;&#xA;But when that happens we, as a community, have to be prepared.&#xA;And that&#39;s why we need distributed issue tracking like&#xA;we implemented with git-dit.&#xA;&#xA;Yes, it is unfortunate that git-dit itself is hosted on github.&#xA;And we do not have the issues from github in the repository, yet, as there is&#xA;no mapper available.&#xA;But we will get there.&#xA;&#xA;I won&#39;t go into detail how git-dit works here, there&#39;s a&#xA;talk from GPN17 on youtube&#xA;about that (in german), where you can learn about these things.&#xA;&#xA;With git-dit, we won&#39;t be tied to github and if github vanishes from today to&#xA;tomorrow, we would be able to continue development seamlessly because the&#xA;issues are mirrored into the repository itself.&#xA;In fact, we won&#39;t even need github in the first place, because the&#xA;repository itself would contain everything which is needed for development.&#xA;&#xA;But we are not there yet.&#xA;&#xA;If you&#39;re feeling brave, you&#39;re more than welcome to try out git-dit or&#xA;contribute to the codebase.&#xA;&#xA;tags:  #git #github #open-source #software #tools&#xA;]]&gt;</description>
      <content:encoded><![CDATA[<p>Right now, github shows you this:</p>

<p><img src="/2017-05-31-github-down.jpg" alt="github is down"></p>

<p>And these things will happen more frequently in future, I assure you!</p>

<p>In the first half of 2017, we already had 3 major service outages, 3 minor
service outages and 21 other problems.
Yes, indeed, this is very good service quality.
It really is.
Anyways, it is not optimal.
Github advertises itself with 22M developers, 59M repositories and 117k
businesses world-wide, which is <em>a freakin&#39; lot</em>.</p>

<p>I really like github, it is a great platform for the open-source community and
individual projects and developers.</p>

<p>But. There&#39;s a but.</p>

<p>Github will not scale endlessly.
It will vanish at some point.
Maybe not in 2 years, maybe not in 5 or even 10 years.
But at some point, a competitor will step up and get bigger and better than
github.
Or it will be taken down by someone.
Who knows.</p>

<p>But when that happens we, as a community, have to be prepared.
And that&#39;s why we need <em>distributed issue tracking</em> like
<a href="https://github.com/neithernut/git-dit/">we implemented with git-dit</a>.</p>

<p>Yes, it is unfortunate that git-dit itself is hosted on github.
And we do not have the issues from github in the repository, yet, as there is
no mapper available.
But we will get there.</p>

<p>I won&#39;t go into detail how git-dit works here, there&#39;s a
<a href="https://www.youtube.com/watch?v=jIs7thu7hQc">talk from GPN17 on youtube</a>
about that (in german), where you can learn about these things.</p>

<p>With git-dit, we won&#39;t be tied to github and if github vanishes from today to
tomorrow, we would be able to continue development <em>seamlessly</em> because the
issues are mirrored into the repository itself.
In fact, we won&#39;t even <em>need</em> github in the first place, because the
repository itself would contain <em>everything</em> which is needed for development.</p>

<p>But we are not there yet.</p>

<p>If you&#39;re feeling brave, you&#39;re more than welcome to try out git-dit or
contribute to the codebase.</p>

<p>tags:  <a href="https://beyermatthias.de/tag:git" class="hashtag"><span>#</span><span class="p-category">git</span></a> <a href="https://beyermatthias.de/tag:github" class="hashtag"><span>#</span><span class="p-category">github</span></a> <a href="https://beyermatthias.de/tag:open" class="hashtag"><span>#</span><span class="p-category">open</span></a>-source <a href="https://beyermatthias.de/tag:software" class="hashtag"><span>#</span><span class="p-category">software</span></a> <a href="https://beyermatthias.de/tag:tools" class="hashtag"><span>#</span><span class="p-category">tools</span></a></p>
]]></content:encoded>
      <guid>https://beyermatthias.de/why-we-need-tools-like-git-dit</guid>
      <pubDate>Wed, 31 May 2017 16:41:00 +0200</pubDate>
    </item>
  </channel>
</rss>