home / about / roadmap
# Development Roadmap

This is the set of features that the Lithium team is focusing on in the near-term. If your must-have feature or favorite new technology doesn't appear here, don't fret: Lithium is very flexible and has a robust plugin API. Extending the core framework is trivial, and it's possible that someone has already developed a [project that meets your needs](http://rad-dev.org/projects).

### Session/Cookie Handling

  - Cookie and PHP-based session adapters need integration tests with the `Session` class. (jperras)
  - A mechanism to optionally encrypt cookie data (strategy?) (jperras)
  - A mechanism to optionally sign cookie data to ensure it has not been tampered with. (jperras)

### Model/Data Layer & Validation

  - The filter hooks system in the `Validator` class needs additional work, cleanup, and test coverage. (**complete as of 0.6.**)
  - SQL querying support is currently very basic. See `lithium\data\model\Query` and `lithium\data\source\Database` / subsidiary drivers.

Support for joins / relationships --  **in progress**.


### Test Suite

  - Refactor test filters to not munge object state (`$Filter::$_results`). An instance of `Report` should instead be composed into each filter, which can then be used to push results back up, e.g. `$report->header($name, $title)` (**complete as of 0.6.**)
  - Common Report output formats of `header`, `message`, `table`, etc. should replace what is currently in `$Filter::output()` to better decouple the concepts of test data collection, aggregation and display.
  - Implement XML and JSON display formats for test data, with the intent on utilizing this for a continuous integration solution.

### Error Handling System

  - Needs additional filtering rules and interface testing.
  - Integration tests
  - Class documentation & example configurations

### Strategies

  - The current implementation of strategies is broken. It has been removed from the stable point releases until it can be properly re-implemented. (jperras)

### Globalization

More information about Globalization in Lithium can be found in [the specification](http://rad-dev.org/lithium/wiki/specs/globalization).

* Static dependencies on `g11n` classes should be refactored out of the `template` (**complete as of 0.6.**) and `console` packages if possible. 
* Translation methods outside templates (i.e within commands and controller flash messages). -- **complete as of 0.6.** 
* Relocation of template translation methods to <strike>a g11n helper?</strike> `Message` class -- **complete as of 0.5.** 
* Introduce environment settings as described in _Identifying, Setting and Passing Locale Settings_ of the spec. -- **in progress.** 
* G11n routing.
* Accepted languages parsing from request. -- **complete as of 0.6.** 
* Implicit current locale (negotiation between accepted from request and available locales). -- **complete as of 0.6.** 
* Support for number formatting.
* Support for date formatting.
* Support for _direction_.
* Support for retrieving plural functions via `Catalog` for `Cldr` and `Gettext` adapters.
* Uniform plural functions (in `Cldr`, `Gettext` and `Memory` adapters).
* Move `Validator` class's locale specific rules to g11n resources. -- **complete as of 0.5.** 
* `Inflector` g11n resources?
* A g11n guide.

### Queuing 

  - Actual work on the plugin needs to start/resume (jperras)

### Security

  - Authentication: Additional unit tests, integration tests & adapters.
  - Access control: Needs to be implemented.

### Static Code Analysis

  - The `lithium\analysis\Parser` class has only very rudimentary support for recognizing code patterns.  Possibility: implement an object-oriented abstract syntax tree.