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.
