Roadmap

Of course, such a project needs a clear roadmap with well defined goals. The milestones given below are subject to change and some of the task can be done in parallel inside a given phase. Milestones are, however, ordered roughly in a "what needs to happen first" order.

Inception Phase

During this phase we're focusing on rapid development. We want to put the basis of the framework as soon as possible and see feasibility. When done we start focusing on quality particularly by preparing the necessary tools for unit testing.

Milestone 1: Architecture design and quick prototyping

Status: Completed

Prepare the general architecture for handling the three primary tasks : hardware discovery, power management and networking. Then continue the effort by focusing on the hardware handling. This effort is done while developing a tiny test application.

Milestone 2: Cleaning up and preparing construction

Status: Completed

Early cleaning of the code in order to keep it as readable as possible. Documenting the classes is also an important goal. The existing parts of the framework are split using a frontend/backend separation. An extra backend providing fake hardware discovery is developped to easier unit testing. The first unit tests are introduced in the framework and its backends.

Construction Phase

During this phase we introduce features in the framework. Unit testing and documentation coverage will be important goals. A feature is considered fully implemented when the relevant classes and methods are documented, and unit tests implemented.

Milestone 3: Completing hardware handling

Status: Completed

Implement more data gathering from the hardware (vendor name, pci info, etc.). Add specific interfaces needed for volume management (cdrom, camera, usb storage, etc.). Evaluate the need of asynchronous calls for slow operations handling (like mounting).

Milestone 4: Network Management

Status: Completed

Detail the domain model we want to support for network management. A first backend complying to this model will be implemented. The hardware layer will be upgraded to add the support for network related hardware (ethernet, wireless).

Milestone 5: Power Management

Status: Completed

Detail the domain model we want to support for power management. A first backend complying to this model will be implemented. The hardware layer will be upgraded to add the support for relevant hardware (a/c adaptor, battery).

Milestone 6: Polishing

Status: In Progress

Clean up the code, and improve the comments. A how to about this framework will be written. More unit tests will be added if appropriate.

Milestone 7: Make use of it

Status: In Progress

Port the old kio_media (or what will replace it) to this framework. Make a Plasma Engine to encapsulate this framework and make it easier to develop applets exposing hardware related features. Then, reimplement the media applet using this new engine.

From here, we'll be able to completely rethink the way the user will have to deal with his hardware.