With over [260 commits](http://rad-dev.org/lithium/wiki/releases/0_3) since the last release, [Lithium 0.3 is now ready for the world](http://rad-dev.org/lithium/versions/view/3). But is the world ready for it? We often get questions about Lithium's stability — whether it's ready to be used in real-world applications. Sometimes we mention, [the Lithium Bin](http://rad-dev.org/lithium_bin) that was updated for 0.3. But we can also answer this question by looking at Lithium's structure. ## Structure The Lithium framework breaks down into 10 packages, each oriented around a specific set of functionality, and dependent on one or more other packages in the framework. At the base of these dependencies are the interdependent `core` and `util` packages — the nucleus of the framework. These packages provide basic bootstrapping and other utility services made use of by almost all other packages in the framework. For very small applications or custom micro-frameworks, you could use just these two packages. While many of the frameworks higher-level features are still brand-new, these and other foundational packages have been in development for almost a year and a half, and are stable and well-tested. Many other packages, such as `storage`, `console` and `data`, are very robust as well, and include a comprehensive suite of tests to verify their functionality — however, they still have a ways to go in terms of features before we'll be comfortable slapping the 'stable' seal of approval on them. Fortunately, Lithium's decoupled and highly extensible design allow you to swap in your own custom classes, replacing core classes in almost any of the framework's dependencies. You can also extend and override core functionality using the innovative [filters system](http://li3.rad-dev.org/docs/lithium/util/collection/Filters). We hope that when you see the power of the framework's core in action, you'll be as excited as we are to begin using it in your own applications. It's only going to get better from here. ## Updates Among the many updates made in the last 3 weeks, here are some of the particularly noteworthy ones: - **Better stability in database interaction classes**: The data layer has seen a great deal of work — with bug fixes and additional features for MongoDB and CouchDB, as well as some progress on the MySQL and SQLite adapters. - **Windows support**: Thanks to David Persson, Joël Perras and Neil Archer, Windows is now fully supported both in the dispatch cycle and on the console — with even more support to come, directly from Microsoft. For more details on this, see below. - **Session and cookie support, unified interface**: Session and cookie support is now fully implemented, and accessible through a single, consistent interface. See the documentation for more details. - **Improved globalization support**: The message translation system has been updated to allow for different kind of usages and workflows. The system itself is now in itself feature complete. - `Message::translate()` is now filterable to allow, for example, logging messages that failed to translate or marking them as untranslated. - The extract command is a lot more robust now, and has a more intuitive interface for extracting messages from source code as well as supporting custom adapters for extraction (see the [docs translation extension](http://rad-dev.org/li3_docs/source/extensions/adapter/g11n/catalog/Docs.php#numbers)). - Translation methods for templates have been updated. `$tn()` was added to the already available `$t()`. The syntax of both methods has been updated. - The parser for extracting messages has been updated to correctly parse `$tn()`. - For the upcoming releases it is planned to add support for normalizing and globalizing dates and numbers as well as finding the best way that allows to transparently set and obtain current locale information. ## News Among the many Lithium plugins currently in development, [the OAuth plugin](http://rad-dev.org/li3_oauth) has made some significant strides, and can now be used to enable your applications to act as clients for OAuth providers (maybe for your next Twitter client). The provider interface is on it's way to completion as well. In our predecessor framework, distributing and updating plugins was always a bit of a pain point. We're turning this around in Lithium, and we have a few surprises planned — stay tuned. Finally, in our ongoing efforts to provide the highest level of support and integration for all Lithium developers, the Union of RAD team has recently set up a fully functional Windows Server 2008 VPS with IIS, with a FastCGI PHP 5.3 instance. This server was graciously donated to us by Microsoft at the MS Web Developer Summit that occurred the last week of November 2009, where Lithium was represented by one of it's core members. This means that Windows will become a first-class deployment platform option for Lithium, ensuring that developers have the maximum number of options at their disposal.