Minified.js Blog

Minified 1.1

Minified 1.1 is a long overdue maintenance release. Most importantly, it solves issues with 'swallowed' exceptions in promise handlers. They will now be reported. Unfortunately, the new promise implementation is slightly incompatible with the earlier releases.

Please read the release notes for details.

Minified 1.1 is also the first release that breaks the 4kB/8kB barrier. That's mostly caused by the new promise implementations.

Minified 1.0

After a year of beta releases, Minified 1.0 is ready for download!

Version 1.0 is a pure bug-fix release and does not offer any new features over beta 6.

As explained in an earlier post, this will likely be the last major release of Minified, aside from bug fixes. Because of the self-imposed size limit, there is hardly any room for improvement left in Minified.

Its successor Nia will break out of the size limit to become a friendlier and more practical library, albeit with a larger footprint.

Minified 1.0

After a year of beta releases, Minified 1.0 is ready for download!

Version 1.0 is a pure bug-fix release and does not offer any new features over beta 6.

As explained in an earlier post, this will likely be the last major release of Minified, aside from bug fixes. Because of the self-imposed size limit, there is hardly any room for improvement left in Minified.

Its successor Nia will break out of the size limit to become a friendlier and more practical library, albeit with a larger footprint.

Announcement: Minified Reboot

Minified 1.0 will be released in the next 1-2 weeks. Before I release it, I wanted to announce my future plans for Minified. 1.0 will not only be the first non-beta, it will also likely be the last major release in its current form. So let me explain my plan for a Minified reboot:

Minified started with the goal of being a library that's almost as capable as jQuery or Mootools, but at a fraction of the size. Its name reflected that goal. The name also describes my development process pretty accurately. Typically I write a first implementation of a feature in an hour or less, and then spend many hours or sometimes even days trying to get that code as compact as possible. In the last months optimizing the modified function itself was usually not enough to add a new feature into Minified without breaking its self-imposed 4kb/8kb size limit, so I spend even more time finding other places to optimize. For me, developing for Minified is less than 10% about writing features and more than 90% is optimizing the code for size.

Minified's first beta has been released exactly one year ago. In this past year Minified has evolved more than I would have ever imagined. Despite of its initial focus on size, I was able to add a lot of higher level functionality that I didn't think would be feasible. It now has a template engine, date arithmetics, a Promise implementation, number formatting and other things far exceeding what the other libraries can offer. Even though Minified is still a very small library, in many aspects it does not feel like one anymore.

I am very glad that so many people are trying out Minified and some are even using it in real projects, and I think Minified has the potential for even more widespread adoption. But for this Minfied needs to be a bigger improvement over the pre-existing libraries. So far size was Minified's most visible advantage. That's not enough to convine most people to switch. A kB more or less does not matter as much as their productivity. In order to succeed, a library needs to be significantly more pleasant to use, or offer features unmatched by the competitors. I am striving to achieve both. Minified also needs to become a bit more accessible. Developers coming from jQuery often have a hard time finding some of the features they are used to, because Minified does a lot of things differently, and sometimes because the feature just does not exist.

So hereby I am officially changing my mission. Instead of being 'almost as usable', I want it to be easier to use and more powerful than any other comparable library. And in order to do this, I need to make some changes:

  • Minified's core will always stay small, but there is a lot of stuff that needs to change for a truly easy and powerful library. Therefore I am increasing the size limit. I think the initial size of the next version will be either 11 or 12 kb.
  • In order to allow useful features to be added as needed, but at the same time prevent feature creep and also keep at least some focus on size optimization, I still intend to have a size limit, but I am going to increase it by 10% every year.
  • Because of the very granular builder-tool and the 5 different distributions (web, headless and complete, with and without legacy IE support), Minified's source code has become quite a mess. That's why the Builder tool needs to go, and also the web-only distribution. Sorry, I know both are quite popular, but they are not sustainable. The 1.0 builder will stay on the site though.
  • The build process will be cleaned up and reduced to a single-pass compilation. Also, I am replacing Google Closure with Uglify as primary minifier. That alone will help making the source code more friendly.
  • The three additional kB will allow not only some new features, but they will allow me to get rid of the API's rough edges that were caused by its size limitation.
  • The next version will be more similar to jQuery where it makes sense. For example, text() will work like jQuery's text() and allow setting text. ht() will be renamed to html() and behave more like jQuery's version, just with additional template support. And on()'s default prefix will be '|', to work more like jQ. But I do not plan to change any of Minified's essentials, like the get()/set() syntax.
  • Despite those changes, the number of backward-incompatible changes won't be larger than in some of the previous betas. To stay compatible with existing code, I will provide a Minified-compatibility module that makes the new version fully backward-compatible.
  • The license will change from a Public Domain-like license to MIT. While I personally like the freedom that PD offers, the MIT license will make it easier to incorporate code from other sources, adds some more legal protection and may be friendlier to contributors.
  • I have been preparing Minified for additional modules for a while, and now is the time. Be prepared for a number of modules that add additional capabilities such as SVG-support, keyframe/timeline-based animation, touch event support and Sizzle as alternative selector engine.

Last, but not least: The name 'Minified' has always been a somewhat unfortunate choice. It's hard to Google and confusing to many people. I kept it because it described the library for me very well, and also because I had no better idea. But with the planned change of direction after the 1.0 release there's just no good reason to keep it, other than inertia.

The rebooted Minified will be called Nia.

You can track its development here. Actually the Core module is already pretty far. I hope to have it released, together with several modules and a brand new site, by the end of the year.

Beta 6 released

Beta 6 is likely the last Minified beta. It contains a large number of smaller improvements and prepares Minified for the next step. Expect some surprises! You can find a detailed list of changes here.

Beta 5 released

Even more features, still under 8kB: beta 5 is ready for download.

As usual, you can find a detailed list of changes here.

Minified Components by Moloc Lab

@molocLab released some awesome components for Minified, be sure to check them out. First lib using Minified, thanks!

Beta 4 is out!

This is a rather small release, but with some backward-incompatible changes for event handlers. It was important to me to get them out as soon as possible, so I can now focus on stabilizing Minified and stop breaking existing code.

Beside the event handler changes, I am really happy with the new iteration method per(), which has been very helpfully for me in several situations. HTML() and ht() are now capable of reading templates directly from <script> tags, to make it easier to use large templates.

You can find a changelog here.

Beta 3 released!

After several months of development, I am very happy and also a bit relieved to announce that Minified beta 3 is finally ready. It features the new Util module, HTML templates and many smaller changes. Also, Minified's build system has been overhauled and is now based on grunt.

A complete description of all changes can be found here. Please note the incompatibilities section, because there are some backward-incompatible changes, especially in on().

Beta 3 Update

Just wanted to give you an update about my plans for Minified Beta 3.

First of all, beta 3 will officially introduce the Util module. The Util module is roughly inspired by Underscore and similar libraries. It provides helpers for collections, functions, string manipulation, Date arithmetics, number and date parsing and formatting, a Promises/A+ implementation as well a template system - in less than 4kB. Both modules share the list implementation, so you can use all of Util's methods to manipulate a list of elements or use Web's set() to modify Util's list.

The Util module has been on Github for a long time, but I have finally extended the build system so that it is capable of merging the Web module and the Util module into a single module which currently weighs about 7.5kB. Both modules will, of course, also stay available as stand-alone downloads. In addition to that, the Util module will be available as a CommonJS module ready for use in Node.js and available on npm.

The changes to the existing Web module are relatively small. Two new features have been added: offset() will allow you to get a element's position on the page, very similar to jQuery's function of the same name. And the universal get()/set() syntax will get two new virtual properties $$scrollX/$$scrollY that allow you to scroll the current page. This, and some smaller changes, can also be found in the CHANGES.md file on Github.

Beta 3 will also replace the ant-based build-system with a new one based on Grunt. I hope that this will make the source code more accessible, as relatively few JavaScript developer are familiar with ant and the old build system is pretty slow. Replacing the current XML/XSLT-based template system was a bit more complicated than I anticipated though, which is why I came up with a new side-project called HanSON. HanSON extends JSON's syntax with multi-line strings and some other things to make larger, hand-written JSON files possible. Together with the Util module's template system, HanSON is will be used to create Minified's web site.

There's still a lot of work to be done, but if everything works out I expect Beta 3 to be ready in September or early October.

Minified Web beta 2 is out

This is mainly a feature release and adds many much requested features. For a complete overview, follow this link.

Redefining the 4kB size limit

After the beta 1 release I got a lot of great feedback. Most of the feedback was about missing features or things that were too hard to do with Minified. There were also event handler memory leaks in the legacy-IE version that need to be fixed, but require a lot of code and thus would break the 4kB limit.

So I made the hard decision to modify my self-imposed 4kB limit. In beta 1, the goal was to get even the full version with legacy IE support under 4kB. But with beta 2, the goal will be to get only the version without IE support under 4 kB.

This allows me to add some much requested, missing features and will also ensure that I do not need to remove anything just to get Minified working correctly in the older IEs. At the same time, I keep a limit that will hopefully prevent feature-bloat in the library.

You can see new features as they are being added in CHANGES.md.

Minified Web beta 1 released!

After over 1 year of development I am proud to release the first version of Minified Web, my tiny but fully featured alternative to libraries like jQuery and MooTools. 

Archive: 2013 - 2014 - 2015