The prototype method allowed developers to extend the JavaScript language in ways that I never even could have imagined to be possible, and I clamored to join the cool kids on the block when I saw what people like Sam Stephenson were doing with prototype.js.

Needless to say, all of these new and improved libraries have one major problem: they don't play well together. I've spent hours upon hours debugging prototype.js for things like crazy errors that only occur if you import the js file in a script tag twice on the same page. Basically, I'm sick of it. If I want a feature from prototype.js and a few clever little effects from Scriptaculous, I shouldn't have to load over 2500 lines of JavaScript code just to make it work.

As a perl developer by day, a CPAN like solution seemed to be needed. As a clever JavaScript fanboi that I am, I am aware of the OpenJSAN Project and I fully support their work. It just left me feeling lacking. I'm sick of the same old routine in my development. I've typed so many functions named things like 'import()' and 'use()' and 'require()' and 'define()' and on and on and on that I just snapped.

And here, when the dust settles around my pissed off corpse, you find lying in the mud next to my body, a JavaScript library that attempts to kick more ass than anything else with no apology for hurt feelings. pirate! may be a waste of time, but dangit, it's going to be a fun waste of time.

So, without further ado, I give you pirate! The JavaScript library for people who are ticked off about how boring programming is becoming.

What's New in This Release:

· Two Pirate Notifications were added to Pirate.Ship for Ship.Load and Ship.Complete.· A custom pirate! event system was added (Pirate.Watch && Pirate.Notify).· All of the global function handles that pirate.js was providing were removed.· The only one that still exists is Try.· In the future, only Ships should do anything to the global scope.