It took (much) longer than anticipated, for a number of reasons, and like any good .0 release it’ll take a few minor releases to really get up to speed – but it’s here! Fabric 2.0.0 is now out on PyPI, along with the project that does much of the heavy lifting, Invoke 1.0.0.

Please see the upgrade documentation for the gory details, and if you like, read on for some non-instructive reflection on the occasion.

The world - for Python generally and the niche Fabric occupies in particular - is a different place than when I first picked up Christian’s and wondered how it would look if souped up and made a little more Unix-y (resulting in Fabric 0.9.x-1.x). Other programming language ecosystems have started eating Python’s lunch in multiple problem domains, and people are finding more and more ways to avoid using SSH.

To someone wholly focused on the bleeding edge (as us computer types so often are!) that paragraph would’ve fit equally well in a “why the project is no longer needed/is retiring” post. I’ve got some misgivings there – but the simple fact is, an enormous number of people continue to prefer Python and tools like Fabric, for all sorts of reasons, and this doesn’t seem likely to change anytime soon.

Thus, I’m glad to finally share these shiny modern codebases which collectively make up Fabric 2: easier to use for all cases beyond the most basic, test-friendly (and test-driven), object-oriented, and much more.

I learned a lot working on Fabric 1.x and even more developing (and using!) its replacement, and while the new code isn’t perfect, I think you’ll find it provides a significantly better foundation for the future.

Thanks to everyone who’s ever downloaded a copy of my software, left a kind word, or submitted a patch (even those I never find the time to merge). Being able to change so many lives for the better, in even a small way, is a rare privilege.