Changelogs are a frequently overlooked aspect of software release management. I’m going to outline the different approaches to keeping them, and describe a dumb yak shave I undertook to improve the situation for my own projects.
Changelogs are a frequently overlooked aspect of software release management. I’m going to outline the different approaches to keeping them, and describe a dumb yak shave I undertook to improve the situation for my own projects.
In my previous blog post I mentioned that I intend to begin a regimen of smaller, more frequent releases in my open source projects. Afterwards, I started thinking more about what this meant and how software release schedules work in general. This is the result.
Deciding when to release software can be difficult. Releasing after every patch or merge is typically too much, though some argue otherwise: it depends how you define “often” in “release early, release often”.
The other options are “whenever you feel like it” and “have a specific schedule”.
Until now I’ve always gone with that middle option, waiting until a large-enough set of changes had piled up to merit a new release.
Graphite is a popular metrics collection, storage & graphing tool. Unfortunately, clear info on how it works in a cluster configuration is hard to come by. I’ve done a lot of reading on the topic and want to share the result.
Some quick release-note style announcements for Fabric and Paramiko!
I recently played a free trial weekend of Guild Wars 2. The tl;dr is that I enjoyed myself quite a bit, but am on the fence about purchasing. Below are my thoughts on various aspects of the game, prefaced with some background.
Just some quick announcements this time!
This post evolved out of an update to this long running Fabric feature request that got too long for a Github comment.
The tl;dr for that issue is: folks want gateway support, the ability to bounce SSH connections off an intermediate host. This is useful for setups where you cannot reach your target node directly, but do have access to some gateway or staging box.
(Side note: this feature’s languished because I personally never needed it: ever since I picked up Fabric I’ve worked in environments savvy enough to have VPNs but small enough they didn’t have multiple networks.)
Recently, I reread most of Fabric #38, and there’s two solutions / SSH features contributors kept arriving at: ProxyCommand and direct-tcpip. I’ll explain what these are (insofar as I understand them myself), then compare/contrast.
I run a handful of related open source projects, and two of them are merging. Specifically: the Python ‘ssh’ library is merging with Paramiko, of which it was a public fork. The bulk of the work for this merger is already done, and new releases of Paramiko and Fabric (the high level library which has over time used both Paramiko and ‘ssh’) will be out soon.
Implied by the above: I am now the maintainer of Paramiko! Huge thanks to Robey Pointer for creating it & maintaining the project for nearly a decade. I can only hope folks are still using software I wrote ten years out.
Vendorizing. Including dependencies inside your own source tree as if they were part of your application. Also known as ‘bundling’, ‘omnibus’ etc. I’m going to be talking about Python software specifically, but it’s a general problem.
I’m weighing the pros and cons of vendorizing vs relying on externally-installed libraries, as I don’t see a strong consensus on the topic – and am curious what others with different experiences and use cases have to say.