“Introducing” may not be quite the right verb there. “Announcing Into the Void Outil” might be closer to the truth.
Outil (pronounced “ooh-till”) is a project I’ve been working on for a little while now. What is up on github is an early version. Right now, it’s basically an interface for maintaing a persistent, project-agnostic set of helper methods. It’s like having a single “helpers” or “util” file for your entire Ruby environment.
I often find myself thinking “I feel like I’ve written this exact method in every project I’ve ever worked on.” Always some sort of mundane helper method that handles manipulation of core data types. It’s usually not enough to make a library out of, let alone gemify. It would take you another 5 or so minutes to write it again, so maybe you don’t even bother finding it in your old code to copy and paste from.
So I thought, what if you had something like a Git server, where you could just store persistent version of these methods, and have them available in a modular namespace in any Ruby program in your environment? Better yet, what if there were a sort of community these methods? You could browse other people’s ways of addressing the problem, fork your favorite and import them into your own Outil remote. You’d immediately have a robust, crowd-refined, and community-approved version of that function at your disposal. Maybe you even think of an improvement, tweak it, and you contribute an even better version.
The idea is that this might serve as a utility-focused version of what Stack Overflow does. Stack Overflow is full of threads where people ask “what’s the best way to do X?” and SO’s generous and often-belicose community pitches in. Usually responses come in the form of copied and pasted code snippets. Often, these snippets are straight-up self-contained functions. What if you could just link to your function on a Outil server? Not only would the writer of this code get credit were credit is due, but programmers would have automated access to what is genuinely the best answer available.
This is a somewhat utopian vision of what I think Outil could be, and the current version of it falls a damned sight short of it. It’s a work in progress. But I honestly believe that a library like this, and a service like this, could actually make the ecosystem of open source code leaner, less redundant, and actually better. Who knows.