18 July 2017 -
elementals.js 3.0 RC 1 -- Took a while
By Jason M. Knight (aka Deathshadow)
Release candidate 1 of elementals.js 3.0 has been released. This breaks from the compatibility chain of 2.x/earlier and should be treated as a whole new and different project.
What took so long, and why the break?
YES, this release took FAR longer than planned -- to the tune of nearly four months.. The biggest reason was I had a full-time job consuming the share of my time; paying work comes before stuff I do basically for free to at least TRY and help others... but now that said job is past (after a breakup that makes most divorces look civil), back to plucking away at this.
It was also delayed as I wanted to get as much feedback as I could on what was already in place. That feedback caused me to reconsider at a low level how not only elementals.js worked, but also how it was laid out and organized both internally, and from a documentation standpoint. Switching to Objects with sub-methods for a lot of common operations simply makes more sense and allows me to create the list of what needs to be documented and how the navigation on the site for that documentation works automatically. All I have to do when something new is added is pull up a list that says "Hey, you need to document this function/method!". This sped the development process greatly despite the relative lack of time I had to put into things.
I've also gathered a small team of testers who have provided invaluable insight into both real world deployment situations, as well as tracking down bugs and corner-case scenarios I probably wouldn't have thought of on my own. This too took time to organize and provided even more things for me to run around fixing and changing.
Several bits of new functionality have also been added including a polyfill for RequestAnimationFrame, Cookie handling, cross-browser copying to the clipboard, and Element positioning/scroll metrics.
The re-orgnaization has moved many sibling-level functions into sub-objects. For example _.nodeReplace is now _.Node.replace -- this is part of that object based adjustment to ease documentation above. Some functions also got renamed due to major expansions in what they can do. _.Node.write for example is a vastly more powerful routine than 2.0's _.nodeAdd ever would/could have been. Several "constant" values have also been added such as _.EMPTY_TAGS for easy use in the number of cases where knowing whcih elements can and cannot have innerText might be useful.
As part of the functionality changes the size limits for the 'raw' non-minified codebase have been lifted. It took a bit for me to be convinced, but really when it comes down to it there are only TWO numbers that really matter on filesizes here... gzipped, and minified + gzipped. To that end the library currently is set for a hard ceiling of 12k gzipped for the 'raw' fully commented and verbose source, and 8k for the minified version. As of this writing 3.0 RC1 comes to 8.98k and 6.13k respectively for each of those limits -- plenty of room to still add things if need be.
Finally nearly an entire month was put into improving the navigation of the reference pages and rewriting them to match the current implementation. Honestly it took more time to bring that part of the website up to snuff than was actually put into elementals.js itself. The site design has also been tweaked based on user feedback to try and be a hair more useful. Probably the biggest change you'll notice is that on really large screens the sub-navigation is on the left instead of sandwiched between the content and the advertisement/donate are. That navigation is now far more useful, with more subsections, and when diving "deep" into the "underscore" object you will be far, far less overloaded with choices.
Likewise a general "automation" script to allow classed based addition of select/copy buttons as well as some other handy features is likely to emerge with or before the next major elementals update.
I am HOPING to port over my lightbox script and make it far more 'content neutral' as well -- likely with specialized subversions for images, media, frames, and AJAX'd into place content. On that particular front though such a script is currently firmly in the "It's done when it's done" status.
When will it be production ready?
All goes well barring any major bugfixes, I'm HOPING to take it from "release candidate" status to "production" on 4 August 2017; though that will hinge greatly on what/if the public finds that my newly minted internal testing working group didn't come across during the EXTENDED Beta period. (aka May and June) It's actually interesting as during that time those of us working on it behind the scenes were arguing as to whether to preserve how 2.0 works and make a 2.1, or to make a clean break and call it 3 -- just as 2 was a clean break from 1. Bottom line is I want this to be the best script I can make, and sticking with a number of the failings of how 2.x was organized wasn't going to deliver that.
Finally I would like to give a shout out to those of you who have donated to the project. YOU are one of the few reasons this project has remained afloat at all, and your advice and encouragement is the only thing that prevented me from abandoning it altogether. Things have been rough the past few months, it's been really hard to find the time to devote to this that it deserved... so I thank you for your patience and time.
In many ways you folks are the ones who kept the lights on the past four months as I was occupied elsewhere.