a place for things

A blog for things that don't belong on psych0tik

The Point of Writing Software Isn’t to Maintain It Forever

Today I went to install twat, an admittedly slightly buggy piece of software I wrote when I was first learning Ruby. It more or less does what it says on the tin, but when I went to install it, I discovered that all the versions of the twitter gem it used have been yanked. I get it. You shouldn’t be writing new software using old, unmaintained versions of gems.

However, releases are just that. Released. Snapshots. Yanking them will break things. Unless something is actually broken (critical bug, security issue) I don’t understand the rationale for doing this. The only explaination is that you want people to update, which hinges on the predicate that people are still working on all the software it uses.

This isn’t always the case. The version of cron(8) that OSX ships with hasn’t been touched since 1994. (From it’s release notes, I can’t find it’s homepage:

Vixie Cron V3.0 Patch 2 notes Paul Vixie 12-Dec-1994

Can you imagine if someone broke a dependency of this arbitrarily? Do you think Paul Vixie really wants to hack on this for the first time in 20 years to bump some version and change some internal details?

TL;DR why on earth would you yank working software?

So I Presented Groundstation

So this evening I presented groundstation at Melbourne Hack and Tell (Which is badass and if you’re in Melbourne you should show up to the next one), but I wanted to wrap up some of the content.

First off, what is groundstation, specifically?

  1. It’s a framework for syncing string of immutable objects.
  2. It dynamically discovers any peers on it’s local network.
  3. It uses git as it’s underlying storage, but it does NOT use git’s data structures.

Right now, it can do two main things.

The first is importing issues from github or jira. The included web interface, airship, can let you and anyone else using groundstation interact with the database, and your changes will be synced.

It currently can’t push it’s changes back up to those systems.

Secondly, it can sync a git repo, however it CANNOT sync your refs, so you’re on your own to communicate updates to branches amongst your peers.

My next steps are optimising the sync protocol for multiple peers, implementing a routing layer for nodes that aren’t on the same local network, and implementing tip signing.

The primary purpose of this post is to reach out to anyone who’s using or considering using it. I’d love to hear from you, hear what you’re doing and issues you’re having.

My intention is to build a distributed platform on which other apps can be built, so please if you’re doing something cool (or thinking about it!) let me know.