Building Interactive SSH Applications

After the announcement of shell access for builds.sr.ht jobs, a few people sent me some questions, wondering how this sort of thing is done. Writing interactive SSH applications is actually pretty easy, but it does require some knowledge of the pieces involved and a little bit of … | Continue reading


@drewdevault.com | 4 years ago

Shell Access to Builds.sr.ht CI

Have you ever found yourself staring at a failed CI build, wondering desperately what happened? Or, have you ever needed a fresh machine on-demand to test out an idea in? Have you been working on Linux, but need to test something on OpenBSD? Starting this week, builds.sr.ht can h … | Continue reading


@drewdevault.com | 4 years ago

DRM Leasing: VR for Wayland

As those who read my status updates have been aware, recently I’ve been working on bringing VR to Wayland (and vice versa). The deepest and most technical part of this work is DRM leasing, and I think it’d be good to write in detail about what’s involved in this part of the effor … | Continue reading


@drewdevault.com | 4 years ago

DRM Leasing: VR for Wayland

As those who read my status updates have been aware, recently I’ve been working on bringing VR to Wayland (and vice versa). The deepest and most technical part of this work is DRM leasing, and I think it’d be good to write in detail about what’s involved in this part of the effor … | Continue reading


@drewdevault.com | 4 years ago

FOSS Contributor Tracks

Just like many companies have different advancement tracks for their employees (for example, a management track and an engineering track), similar concepts exist in free software projects. One of the roles of a maintainer is to help contributors develop into the roles which best … | Continue reading


@drewdevault.com | 4 years ago

Announcing Code Annotations for SourceHut

Today I’m happy to announce that code annotations are now available for SourceHut! These allow you to decorate your code with arbitrary links and markdown. The end result looks something like this: | Continue reading


@drewdevault.com | 4 years ago

Absence of certain features in IRC considered a feature

The other day a friend of mine (an oper on Freenode) wanted to talk about IRC compared to its peers, such as Matrix, Slack, Discord, etc. The ensuing discussion deserves summarization here. In short: I’m glad that IRC doesn’t have the features that are “showstoppers” for people c … | Continue reading


@drewdevault.com | 4 years ago

How to write an IRC bot in 2 minutes

My disdain for Slack and many other Silicon Valley chat clients is well known, as is my undying love for IRC. With Slack making the news lately after their recent decision to disable the IRC and XMPP gateways in a classic Embrace Extend Extinguish move, they’ve been on my mind an … | Continue reading


@drewdevault.com | 4 years ago

Absence of certain features in IRC considered a feature

The other day a friend of mine (an oper on Freenode) wanted to talk about IRC compared to its peers, such as Matrix, Slack, Discord, etc. The ensuing discussion deserves summarization here. In short: I’m glad that IRC doesn’t have the features that are “showstoppers” for people c … | Continue reading


@drewdevault.com | 4 years ago

Make a Blog

Continue reading


@drewdevault.com | 4 years ago

My Personal Journey from MIT to GPL

As I got started writing open source software, I generally preferred the MIT license. I actually made fun of the “copyleft” GPL licenses, on the grounds that they are less free. I still hold this opinion today: the GPL license is less free than the MIT license - but today, I beli … | Continue reading


@drewdevault.com | 4 years ago

Initial pre-release of aerc: an email client for your terminal

After years of painfully slow development, the aerc email client has seen a huge boost in its pace of development recently. This leads to today’s announcement: aerc 0.1.0 is now available! After my transition to working on free software full time allowed me to spend more time on … | Continue reading


@drewdevault.com | 4 years ago

What is a fork, and how GitHub changed its meaning

The fork button on GitHub - with the little number next to it for depositing dopamine into your brain - is a bit misleading. GitHub co-opted the meaning of “fork” to trick you into participating in their platform more. They did this in a well-intentioned way, for the sake of thei … | Continue reading


@drewdevault.com | 4 years ago

Calculating your donation's value following Patreon's fee changes

In January 2018, I wrote a blog post which included a fee calculator. Patreon changes their fee model tomorrow, and it’s time for an updated calculator. I’m grandfathered into the old fees, so not much has changed for me, but I want to equip Patreon users - creators and supporter … | Continue reading


@drewdevault.com | 5 years ago

Announcing Wio: A Clone of Plan 9’s Rio for Wayland

For a few hours here and there over the past few months, I’ve been working on a side project: Wio. I’ll just let the (3 minute) screencast do the talking first: | Continue reading


@drewdevault.com | 5 years ago

The “shut up and get back to work” coding style guide

So you’re starting a new website, and you open the first CSS file. What style do you use? Well, you hate indenting with spaces passionately. You know tabs are right because they’re literally made for this, and they’re only one byte, and these god damn spaces people with their blo … | Continue reading


@drewdevault.com | 5 years ago

Choosing a VPN service is a serious decision

There’s a disturbing trend in the past year or so of various VPN companies advertising to the general, non-technical public. It’s great that the general public is starting to become more aware of their privacy online, but I’m not a fan of these companies exploiting public paranoi … | Continue reading


@drewdevault.com | 5 years ago

Announcing first-class Mercurial support on Sourcehut

I’m pleased to announce that the final pieces have fallen into place for Mercurial support on SourceHut, which is now on-par with our git offering. Special thanks are owed to SourceHut contributor Ludovic Chabant, who has been instrumental in adding Mercurial support to SourceHut … | Continue reading


@drewdevault.com | 5 years ago

The Case Against Fork

This article has been on my to-write list for a while now. In my opinion, fork is one of the most questionable design choices of Unix. I don’t understand the circumstances that led to its creation, and I grieve over the legacy rationale that keeps it alive to this day. | Continue reading


@drewdevault.com | 5 years ago

Rust is not a good C replacement

I have a saying that summarizes my opinion of Rust compared to Go: “Go is the result of C programmers designing a new programming language, and Rust is the result of C++ programmers designing a new programming language”. This isn’t just a metaphor - Go was designed by plan9 alumn … | Continue reading


@drewdevault.com | 5 years ago

My experiences at FOSDEM 2019

Currently in a plane on my way home from FOSDEM and, as seems to be a recurring pattern when I fly long distances home after attending a conference, a recap is readily flowing from my fingertips. This was my first year at FOSDEM, and I’m glad that I came. I’m already excited for … | Continue reading


@drewdevault.com | 5 years ago

Why I chose Flask to build sr.ht's mini-services

sr.ht is a large, production-scale suite of web applications (I call them “mini-services”, as they strike a balance between microservices and monolithic applications) which are built in Python with Flask. David Lord, one of the maintainers of Flask, reached out to me when he hear … | Continue reading


@drewdevault.com | 5 years ago

Why I use old hardware

Recently I was making sure my main laptop is ready for travel1, which mostly just entails syncing up the latest version of my music collection. This laptop is a Thinkpad X200, which turns 11 years old in July and is my main workstation away from home (though I bring a second moni … | Continue reading


@drewdevault.com | 5 years ago

I use old hardware

Recently I was making sure my main laptop is ready for travel1, which mostly just entails syncing up the latest version of my music collection. This laptop is a Thinkpad X200, which turns 11 years old in July and is my main workstation away from home (though I bring a second moni … | Continue reading


@drewdevault.com | 5 years ago

I'm doing FOSS full time

Sorry for posting two articles so close to each other - but this is important! As I’m certain many of you know, I maintain a large collection of free software projects, including sway, wlroots, sr.ht, scdoc, aerc, and many, many more. I contribute to more still, working on projec … | Continue reading


@drewdevault.com | 5 years ago

Backups and redundancy at sr.ht

sr.ht1 is 100% open source and I encourage people to install it on their on infrastructure, especially if they’ll be sending patches upstream. However, I am equally thrilled to host sr.ht for you on the “official” instance, and most users find this useful because the maintenance … | Continue reading


@drewdevault.com | 5 years ago

Patches welcome

Happy new year! This is always a weird “holiday” for me, since all of the fun happened last night. Today is just kind of… I guess a chance for everyone to sober up before work tomorrow? It does tend to invite a sense of reflection and is the ideal time to plan for the year ahead. … | Continue reading


@drewdevault.com | 5 years ago

Anatomy of a shell

I’ve been contributing where I can to Simon Ser’s mrsh project, a work-in-progress strictly POSIX shell implementation. I worked on some small mrsh features during my holiday travels and it’s in the forefront of my mind, so I’d like to share some of its design details with you. | Continue reading


@drewdevault.com | 5 years ago

Porting Alpine Linux to RISC-V

I recently received my HiFive Unleashed, after several excruciating months of waiting, and it’s incredibly cool. For those unaware, the HiFive Unleashed is the first consumer-facing Linux-capable RISC-V hardware. For anyone who’s still lost, RISC-V is an open, royalty-free instru … | Continue reading


@drewdevault.com | 5 years ago

How to abandon a FLOSS project

It’s no secret that maintaining free and open source software is often a burdensome and thankless job. I empathise with maintainers who lost interest in a project, became demotivated by the endless demands of users, or are no longer blessed with enough free time. Whatever the rea … | Continue reading


@drewdevault.com | 5 years ago

sr.ht, the hacker's forge, now open for public alpha

I’m happy to announce today that I’m opening sr.ht to the general public for the remainder of the alpha period. Though it’s missing some of the features which will be available when it’s completed, sr.ht today represents a very capable software forge which is already serving the … | Continue reading


@drewdevault.com | 5 years ago

It's not okay to pretend you're open source

Unfortunately, I find myself writing about the Commons Clause again. For those not in the know, the Commons Clause is an addendum designed to be added to free software licenses. The restrictions it imposes (you cannot sell the software) makes the resulting franken-license nonfree … | Continue reading


@drewdevault.com | 5 years ago

How does virtual memory work?

Virtual memory is an essential part of your computer, and has been for several decades. In my earlier article on pointers, I compared memory to a giant array of octets (bytes), and explained some of the abstractions we make on top of that. In actual fact, memory is more complicat … | Continue reading


@drewdevault.com | 5 years ago

Sway 1.0-beta.1 release highlights

1,173 days ago, I wrote sway’s initial commit, and 8,269 commits followed1, written by hundreds of contributors. What started as a side project became the most fully featured and stable Wayland desktop available, and drove the development of what has become the dominant solution … | Continue reading


@drewdevault.com | 5 years ago

Go 1.11 got me to stop ignoring Go

I took a few looks at Go over the years, starting who knows when. My first serious attempt to sit down and learn some damn Go was in 2014, when I set a new personal best at almost 200 lines of code before I got sick of it. I kept returning to Go because I could see how much poten … | Continue reading


@drewdevault.com | 5 years ago

Don’t sign a CLA

A large minority of open-source projects come with a CLA, or Contributor License Agreement, and require you to sign one before they’ll merge your patch. These agreements typically ask you to go above and beyond the rights you afford the project by contributing under the license t … | Continue reading


@drewdevault.com | 5 years ago

Sway and wlroots at XDC 2018

Just got my first full night of sleep after the return flight from Spain after attending XDC 2018. It was a lot of fun! I attended along with four other major wlroots contributors. Joining me were Simon Ser (emersion) (a volunteer) and Scott Anderson (ascent12) of Collabora, who … | Continue reading


@drewdevault.com | 5 years ago

How to make a self-hosted video livestream

I have seen some articles in the past which explain how to build the ecosystem around your video streaming, such as live chat and forums, but which leave the actual video streaming to Twitch.tv. I made a note the last time I saw one of these articles to write one of my own explai … | Continue reading


@drewdevault.com | 5 years ago

The Commons Clause will destroy open source

An alarmist title, I know, but it’s true. If the Commons clause were to be adopted by all open source projects, they would cease to be open source1, and therefore the Commons clause is trying to destroy open source. When this first appeared I spoke out about it in discussion thre … | Continue reading


@drewdevault.com | 5 years ago

I don't trust Signal

Occasionally when Signal is in the press and getting a lot of favorable discussion, I feel the need to step into various forums, IRC channels, and so on, and explain why I don’t trust Signal. Let’s do a blog post instead. | Continue reading


@drewdevault.com | 5 years ago

Setting up a local dev mail server

As part of my work on lists.sr.ht, it was necessary for me to configure a self-contained mail system on localhost that I could test with. I hope that others will go through a similar process in the future when they set up the code for hacking on locally or when working on other e … | Continue reading


@drewdevault.com | 5 years ago

Writing a Wayland compositor with wlroots: shells

I apologise for not writing about wlroots more frequently. I don’t really enjoy working on the McWayface codebase this series of blog posts was originally about, so we’re just going to dismiss that and talk about the various pieces of a Wayland compositor in a more free-form styl … | Continue reading


@drewdevault.com | 5 years ago

Git is already federated and decentralized

There have always been murmurs about “replacing GitHub with something decentralized!”, but in the wake of the Microsoft aquisition these murmurs have become conversations. In particular, this blog post is a direct response to forge-net (formerly known as GitPub). They want to fed … | Continue reading


@drewdevault.com | 5 years ago

Input handling in wlroots

I’ve said before that wlroots is a “batteries not included” kind of library, and one of the places where that is most apparent is with our approach to input handling. We implemented a very hands-off design for input, in order to support many use-cases: desktop input, phones with … | Continue reading


@drewdevault.com | 5 years ago

Simple, correct, fast: in that order

The single most important quality in a piece of software is simplicity. It’s more important than doing the task you set out to achieve. It’s more important than performance. The reason is straightforward: if your solution is not simple, it will not be correct or fast. | Continue reading


@drewdevault.com | 5 years ago

The advantages of an email-driven Git workflow

git 2.18.0 has been released, and with it my first contribution to git has shipped! My patch was for a git feature which remains disappointingly obscure: git send-email. I want to introduce my readers to this feature and speak to the benefits of using an email-driven git workflow … | Continue reading


@drewdevault.com | 5 years ago

A quick review of my Let's Encrypt setup

Let’s Encrypt makes TLS much easier for pretty much everyone, but can still be annoying to use. It took me a while to smooth over the cracks in my Let’s Encrypt configuration across my (large) fleet of different TLS-enabled services. I wanted to take a quick moment to share setup … | Continue reading


@drewdevault.com | 5 years ago

Should you move from GitHub to sr.ht

I’m not terribly concerned about Microsoft’s acquisition of GitHub, but I don’t fault those who are worried. I’ve been working on my alternative platform, sr.ht, for quite a while. I’m not about to leave GitHub because of Microsoft alone. I do have some political disagreements wi … | Continue reading


@drewdevault.com | 5 years ago