Looking at Lithium

In the announcement, Elizabeth told us about a little Lithium and why Engine Yard chose to sponsor the project. In this post, I hope to provide a bit more detail about Lithium, its origins, goals, along with the current and future status.

Every project originates from a unique place. For Lithium, that place was CakePHP. The years of experience gained by the founders from interacting with the community, learning from their challenges, and experimenting with solutions provided invaluable insight into how to design and build a high-performance, high-adoption, easy-to-use tool. Lithium focuses on applying that insight to a blank slate where the best framework possible could emerge. This allows Lithium to push the boundaries in pursuit of the project goals. Lithium strives to be a quality, fast, and flexible framework, with the simplest API possible.

Quality has to be first because everyone relies on a stable foundation. At times, stringent requirements like test cases and code sniffing for every change can get in the way of greater contribution. To compensate, Lithium implemented a custom test suite that provides a solid interface and quick execution. In addition, the team offers the li3_quality plugin to make sure every commit conforms to coding standards. Running this through Travis for continuous integration ensures Lithium continues to work on PHP 5.3 and 5.4 the way anyone would expect.To be fast, Lithium is consistently profiled through XHprof. There are cases where the pursuit of the simple API costs milliseconds. In these cases, choices are made that balance rapid development and execution speed, always giving developers the opportunity to break out of the framework with a hand-tuned solution. Currently, Lithium stands up as one of the fastest full stack frameworks available.

To be flexbile, Lithium implements variants on Dependency Injection, Aspect Oriented Programming, Hierarchical Model View Controller, and other useful patterns. This enables Lithium to push extra features to plugins and external libraries, and keep the core light, sleek, and agile.

To be simple, the team draws on experience and continued education to craft the most succinct API. Sane defaults, environment based configuration, and consistency drive every decision. Developing frameworks is constantly evolving with new ideas presented and new projects appearing to expose the next great feature. Growth adds complexity, but with easy integrations for third party libraries and tools, Lithium can maintain the simple approach.

There are still a few things left on the roadmap. Some of them relate specifically to core code, like model relationships, others like completing the documentation and plugin repository are important to provide the best experience. Stop by #li3-core on freenode.net to learn more.

The future is bright for Lithium. Now is a great time to start contributing. Help Lithium get to the all-exciting 1.0 release.

The Lithium community continues to grow with projects like lithium101.com, sphere.orchestra.io, over 200 plugins, and plenty of friends in the #li3 IRC channel. Hope to see you there.

Want to find out more about Lithium? Join us for a special webinar tomorrow at 9:30AM PST. Register for it here!

Or follow @UnionOfRAD on twitter or github.