Temporary Roadmap before inclusion in trunk

Mn : Milestone n
- : done
+ : to do
# : in progress
! : cancelled or postponed

Inception Phase
---------------

M1 Architecture design and quick prototyping
- Prepare architecture view for handling hardware discovery, power management and
  networking (done)
- Prepare a high level model for hardware handling (done)
- Implement partly (no capability support) this high level model using HAL as
  backend (done)
- Make a tiny 'lshal' clone using the implementation (done)

M2 Cleaning up and preparing construction
- Fully document implemented classes and methods
- Split out the HAL specific code in its own backend
- Implement the stub backend for unit testing
- First unit tests
- Syncing with D-BUS, HAL and KDE latest version
- Add unit tests in the HAL backend


Construction Phase
------------------
From here, a feature is considered implemented when:
1) The classes and methods are fully documented
2) Unit tests for the feature are implemented

M3 Completing hardware handling
! Implement bus specific data gathering in the backends:
	Postpone? might not be useful...
- Implement job support for slow operations (mount/umount for example)
	- Reuse the Job logic from KIO, provides progress, etc.
	- Means that we'll have to track the refactoring that will happen there
	  KIO::Job should become more generic in the future (KJob is in now in
          kdecore)
- Implement support for the first capabilities
-   Storage and Cdrom
-   Volume and Disc
-   Camera
-   PortableMediaPlayer

M4 Network Management
- Select a first backend target : NetworkManager is the current candidate
- Prepare a high-level model
- Implement support for the following capabilities in the hardware layer
-   NetworkHw (handle both Ethernet and Wireless)
# Implement the network management model and the first backend

M5 Power Management
- Prepare a high-level model
! Implement suspend/resume notification and inhibit
- Implement support for the following capabilities in the hardware layer
-   AcAdaptor
-   Battery
-   Button
- Implement the power management model and the first backend

M6 Migration to trunk
- Clean up code and comments
+ Prepare documentation about how to work with this new framework
- Add even more unit tests if appropriate
- Merge to trunk

M7 Make use of it
+ Port the mediamanager and the medianotifier to this framework
+ Make a Plasma Engine to encapsulate this framework
+ Reimplement the media applet using the new engine

Stop a bit... And rethink the way the user will be able to interact with the hardware.
If we reach M7 we'll have a strong base to create a great new interaction model with
the hardware.

