Project:Portage/Proposals

This is where we will flesh out ideas for the direction to take areas of portage's code.

Portage sync
This is the proposed layout of a totally revamped sync system. It uses the plug-in manager already in portage.

portage.sync.pdf


 * Advantages


 * 1) Flexible
 * 2) Easily extended
 * 3) Less maintenance, core sync manager does not need changes for new modules
 * 4) Add on modules can be user installed for special types

Proposed To Do

 * 1) Determine the information the module_spec needs to provide to the sync manager and clients
 * 2) Move the plug-in manager code out of emaint's namespace, into portage's
 * 3) Put a freeze on the current sync code to reduce the rebasing needed for the merge on completion
 * 4) Create a new feature branch to use for this change
 * 5) Code the sync manager code
 * 6) Make the sync manager provide any common services functions such as dropping from root down to user priveledges
 * 7) Move the sync code to a new rsync module
 * 8) Move the git code to it's own module
 * 9) re-write the code in action_sync.  Nearly done in my diagram example
 * 10) Begin testing, debugging
 * 11) Move the web-rsync code from emerge into a module
 * 12) Modify emerge-webrsync cli to use the new webrsync module
 * 13) MORE testing, debugging.
 * 14) merge the branch back into master

Examples
__init__.py from binhost module

Discussion
portage-dev mail list thread: todo