Matthew Lang avatar

GitHub

Notes on using GitHub and open source development.

Every morning is the same. I close tabs for pull requests I reviewed yesterday and check which ones have been merged.

GitHub’s favicon shows a green tick for a pull request ready to merge, but it would be nice if it updated to a purple indicator when a pull request is already merged.

Moving on from GitHub

It’s been quite a week for GitHub and not in a good way.

It’s no secret that GitHub outages have been more frequent recently. The Missing GitHub Status Page definitely paints a more accurate picture of the outages that GitHub have been experiencing.

This week, Kev Quirk shared his reasons for migrating his public repositories away from GitHub to Codeberg. While he acknowledged the significant downtime, Kev’s main reason for leaving GitHub is to reduce reliance on big tech.

Recently, Mitchell Hashimoto, author of Ghostty, also indicated that the Ghostty project will be moving away from GitHub. Mitchell cited the increasing outages of GitHub as being the main driver behind the project moving elsewhere.

My move away from GitHub stemmed from a sense of division between work and personal life. I use GitHub for work and for personal projects. Despite using separate laptops for work and personal, I actually have the same GitHub account for both. So while I changed my laptop, the GitHub account was still the same. GitHub was convenient, and that convenience blurred the line between work and personal. Eventually, I found myself tuning out more on my personal projects as I felt I was still in my work environment in GitHub. It was time to consider another place for my personal projects.

GitHub’s centralisation made it hard to consider leaving. Everything is already there. All the popular open source projects, lots of social features and thousands of developers that you can follow. I imagine it’s the Facebook for developers (even though I don’t have a Facebook account).

I started looking for an alternative platform to host my projects on and eventually settled on Sourcehut.

Yes, it lacks several features that are perhaps taken for granted in other platforms like GitLab and GitHub, but it was this minimalism that attracted me to the platform. It just had the essentials that I needed. Git hosting for my projects and the ability to track tickets for those projects. I can still manage my personal projects with ease, perhaps even easier now that I do everything through the terminal.

As for the social side of GitHub, I don’t feel I have missed out on anything by moving to SourceHut. I’m still keeping up to date with new open source projects and libraries through the different RSS feeds and newsletters I subscribe to. As for people, I subscribe to their blogs. If it’s important, they’ll write about it.

GitHub’s recent outages have sparked several conversations on websites like Hacker News and Lobsters. It would be easy to identify outages as the main reason people are moving away from GitHub, but clearly, it’s rarely the whole story.

Ghostty is leaving GitHub

Mitchell Hashimoto writes about the decision to move the Ghostty project away from GitHub.

I’ve felt this way for a long time, but for the past month I’ve kept a journal where I put an “X” next to every date where a GitHub outage has negatively impacted my ability to work. Almost every day has an X. On the day I am writing this post, I’ve been unable to do any PR review for ~2 hours because there is a GitHub Actions outage. This is no longer a place for serious work if it just blocks you out for hours per day, every day.

I don’t think this will be the last open source project to leave GitHub in the coming months. And I don’t think that’s a bad thing either. It’s good to have competition, and there are a number of great Git platforms elsewhere on the internet for developers.

Maybe GitHub has had its day in the sun with developers. I’ve no doubt it will remain the largest platform for developers and their projects. But given the outage history over the last few months, I’m curious to see if other projects follow suit.

You probably don't need GitHub

All too often, I would start a new project on GitHub, only for it to gather dust. It’s one of the reasons I moved my personal projects to SourceHut: I don’t need the social interactions GitHub provides. I still have a couple of larger Rails applications that I host on GitHub, using a separate account.

A minor revelation struck me last night when I was trying to merge another pull request for one of these Rails applications. I probably don’t need to merge this pull request or any other pull request. Since I’m the only one with access to the repository, I can skip creating, monitoring, and merging pull requests and simply use git merge when I am ready to merge the branch into the main Git branch.

Why am I even using issues, projects and milestones in GitHub? Again, it’s just me on the repository, and I don’t need to collaborate in the sense that GitHub allows.

The only reason I am left with using GitHub is that the hosting provider my Rails application runs on uses Git to track changes and automatically deploys them to the server when changes are detected. I have it set up to use GitHub.

Suppose I can handle deploys on another Git service or even from my local laptop. In that case, I can switch away from GitHub for this account.

Still, when it’s just you and the repository, you probably don’t need several of GitHub’s features or even GitHub itself. Just a remote Git repo, and there’s plenty of other options out there.

I have a second Github account that I wish to use with co-pilot in VS Code, but it seems that VS Code does not allow multiple accounts when using this extension. Considering a second text editor now as the only option to do this. Does anyone know if Nova has extensions for GitHub and co-pilot?

Trying to promote myself a bit more on Github

I’ve been looking at my GitHub profile over the last couple of days. It seems like a graveyard of half-finished or throwaway projects that do not show my best work.

While I’m not in the freelance market and not looking for any roles soon, I would like my GitHub profile to reflect some of my better work. There are a few things I am going to do from now on to achieve this.

I have a backlog of projects that I’ve used for exploring different parts of Ruby, Rails and JavaScript. These primarily reside on my laptop and be shared for others to use with a bit of a polish. These projects are not, by any means, world-changing ideas. They are just projects that I used to try something out.

What I plan to do, is publish one project/application a month on my GitHub account. I will provide some instructions on running the application and any updates that I may do on it in the future.

I also have several other repositories on GitHub that are quite frankly just sitting there doing nothing, and they’re not worth much, so I’ll delete these from my account. There’s not much sense in having on my account if they’re not doing anything.

This month I’ll be wrapping up and publishing a ruby script that generates an image for your Twitter lists. I’ve been trying to get my head around the Twitter API over the last week and the different authentication methods needed to access other endpoints. After working this out on Wednesday night, I’m now making good progress with this script. I may try this out as a web application later in the year. I’m not sure yet.

That’s the plan anyway for my GitHub profile. 

Amazed by GitHub Copilot

I must admit, I am blown away by GitHub’s latest technical preview, Copilot, despite not having access to it yet. It’s almost like having Stack Overflow, your favourite snippets collection, and a pair programming buddy rolled into one.

There are some concerns being voiced about how this will impact the value of a developer’s role.

While GitHub’s Copilot will in time automate a fair amount of time in a developer’s typical day, it can’t account for the complexity involved in solving real-world problems using code. While the snippets generated by Copilot look to solve simple tasks, it’s piecing these tasks together by the developer that counts. A developer’s role is not just to write code but to understand the code being written. GitHub’s Copilot looks to do both by providing generic suggestions that the developer can change to solve the problem they face.

Given that my brain is not quite as sharp as it once was, I welcome any tool or product that helps me write and understand better code. GitHub’s Copilot will definitely help me do both. While it won’t make me a 10x developer in the future, it will definitely make me understand and be more proficient with more programming languages.

Where does the open source community go after GitHub?

The decision by GitHub to renew their contract with the Immigration and Customers Enforcement agency is still a significant point amongst developers. Despite several GitHub staff who have quit over the decision, it still looks like the company will not back down.

There is now an open letter and petition from many of the open-source contributors and maintainers who chose to host their projects on GitHub. In it, they are asking GitHub to cancel the contract and commit to a higher standard when it comes to making business decisions that have an ethical impact.

I think it’s excellent that organisations are being called into question about their business dealings. However, what happens if a company doesn’t change its position on an ethical stance.

If GitHub doesn’t cancel the contract, will we see a mass migration of projects away from GitHub? That’s an option. That is until the next source code hosting is called into question about a business deal.

Curious to know if the Ruby on Rails framework and any other frameworks and languages are considering moving away from GitHub.

Wondering now if the Microsoft acquisition of GitHub is just a ploy to keep devs busy on Monday and distracted from the WWDC announcements.

Microsoft to acquire GitHub?

My first impressions of this are nervousness.

I always liked that GitHub were a separate business from Google, Facebook, Apple and Microsoft.

Back to GitHub

A few months ago I started a GitLab account out of curiosity. I wanted to see if there was anything that GitLab offered that GitHub didn’t.

In the last two weeks though, I’ve been moving my repositories back over to GitHub from GitLab.

There’s nothing wrong with GitLab, it’s an excellent source code management platform, and it has many great features. However, GitLab just didn’t make the grade that GitHub has set when it comes to source code management and hosting.

Heroku integration

Heroku’s pipeline integration is an excellent feature for managing the deployment process, but the only dependency for this to work is that you need to use GitHub for your source code management.

GitLab does offer their continuous integration tool, but it’s highly dependent on some different configurations and settings, all of which I don’t have the inclination to read up about or even research. To be honest, I would love to use GitLab’s tools, but the problem with them is that they require too much fussing.

GitHub, on the other hand, does one thing well and that’s host your source code for you. Sure you can also do pull requests, code reviews and many other great things but this is all nice to have besides being able to have one place to manage and host your source code.

Issue management

I have to say that GitLab’s issue management tools are very much on par with GitHub but where GitHub excels is their project, milestone and issue integration with pull requests. I find GitLab’s way of handling pull requests complex. I tried using them for a few months, but the whole process just didn’t feel as straightforward as GitHub’s.

Maybe it’s a familiarity with GitHub that stopped me from getting on with GitLab’s issue management tools. I’ve been using GitHub with some clients, and I have to say that managing their pull requests is a simple process.

A bigger community

There’s no doubt that GitHub has the more prominent community and despite attempts by others to create communities elsewhere it just isn’t possible to do so. It’s a bit like building another Twitter. There has been plenty of attempts, but nothing compare’s to Twitter when it comes to micro-blogging.

It would be nice if all GitHub, GitLab and Bitbucket could integrate with each other seeing as they all support using Git, but then what would be the incentive to pick one?

I’ve been hesitant about the number of businesses and organisations the use GitHub for their source code management, but as long as GitHub continues to support them and the rest of the GitHub community with great features and integration with others tools, then I don’t see a problem in sticking with GitHub.

More features for GitHub please

There’s no doubt that GitHub is a much bigger and better-suited source code management tool for me. I’ve used Bitbucket in the past, but even it can’t compare to the ease with which I can use GitHub. It’s time to hang up my projects on the GitHub website and start creating more projects there for people to see.

That doesn’t mean though that GitHub has all the features that I need. I would like to see a few more options and features on GitHub though.

A repository template for labels and project columns would be a good thing. I’ve managed to replicate the labels I used for my Trello boards in GitHub issues as labels.

Another thing I would like to see is the assignment of labels to issues as I move them across project columns.

I would like to see the addition of an avatar for repositories. GitLab is on to a winner with their avatars for repositories.

I would also love to see greater management of repositories. Being able to group repositories into folders would make my job a lot easier and would also let me create a showcase folder where I could highlight all my best work.

Between GitHub, GitLab and Bitbucket there’s plenty of options for developers of all types for their source code management and hosting. For me though, GitHub ticks all the rights boxes.

Exploring alternatives to GitHub

I’ve been a user of GitHub for a long time now. Ever since I started my career in Ruby on Rails I’ve had a GitHub account.

I’m looking again at alternatives to GitHub mainly out of curiosity. There’s been some improvements to GitHub over the last few years and new features are gradually coming out but there are other options out there.

I did move some private repos to BitBucket a few years ago, but due to the lack of any extra features I moved these repos back. BitBucket just didn’t have anything of added value that would keep me using it.

I tried GitLab a few months ago but I didn’t really give it a fair go. I spent a couple of weeks using but I didn’t really dig into it too much. I created my account there again to give it a try. I’ve been using it now for a week and I’ve moved a number of private repos over from GitHub. The nice thing is that as well as my repo GitLab has moved over my issue list for each repo. Another thing I don’t have to worry about moving it across.

It’s still early days to make a final decision on this but I’ve been impressed with not only what GitLab does at the moment, but the pace in which they are releasing new features.

The best thing and worst thing about GitHub is its community size. A lot of developers use only GitHub for source code hosting and although some people might see this as a good thing, it’s like saying that Facebook is the only social network platform out there. Yes, there are a lot of people using GitHub but there are alternatives to it and I’m always willing to explore the alternatives to any development tool that I use.

Once I’ve spent another few months using GitLab I’ll probably have a final decision on where I’ll be hosting the bulk of source code. I won’t be closing down my GitHub account if I do decide to use GitLab for hosting my source code. I still need a GitHub account for client work, but that’s all it will be used for.

Looks like I’m not worthy to be testing @github’s new repo design. Guess I’ll just have to wait then.