Releasing code is a pain. It takes for ever to get it ready. You have to write tests (and run them in all the browsers), docs, tutorials, blog posts, yada yada yada. Something that might take me 20 minutes to write will take me an hour or more to release.
Previously when I’d write a new class for my own work, I’d throw it on the pile of things to release and then, once every few weeks, go through the trouble to put together all the assets and release it.
Starting today I’m going to start releasing my work as I write it. This is still somewhat infrequent – the majority of the code I write are classes for my own projects that would be of little use to anyone else. But instead of letting them pile up, I’m going to just drop them all in a “Beta” directory in my repository and get them onto the download page. I probably won’t blog about them so if you want to keep track I suggest you subscribe to the svn rss.
Don’t expect these beta scripts to stay as they are. They’ll likely get rewritten and tweaked as I go along. So why release them if they’re so brittle? Partly because they might actually be useful to others out there and hey, if you try it out and find a bug or wish it did something differently, that’s good feedback for me. Plus it exposes my work more quickly and easily for others, even if the work might change.
Today I released 9 scripts:
- DollarE – Brings back $E from MooTools 1.11. Returns a single Element for a selector.
- DollarG – Returns a collection when given an element, a collection of elements, an element id, or a selector.
- Hash.Run – Executes every method in a hash. Used for page init function groups.
- HoverGroup – Manages mousing in and out of multiple objects (think drop-down menus).
- InputFocus – Adds a ‘focused’ class to inputs when they have focus.
- MenuSlider – A simple dropdown class; see the menu at the top of Clientcide.com.
- Occlude – Mixin class for preventing a class from applying itself to the same element twice.
- String.FindAllEmails – Finds all the email addresses in a string.
- ToElement – Mixin class that returns *this.element*. Allows you to do $(myInstance).
There aren’t any docs for these either, though the source files often have a quick example of how you might use it.
As always, feedback is most appreciated.