== Interfaces == This page is dedicated to the dicussion over the implementation of storage engine interfaces. There are significant problems in regards to elegence of design and maintainability in the future. === Pros === * Acts as a buffer between the main code and the abstract storage engine. The interface would delegate its functions to the appropriete place in the storage engine. Later alterations/refactoring on the storage engine would not be so difficult as the interface would just have it's mapping changed. * This draws from some areas of MVC, with the abstract storage engine the model, and the interface a controller. Alterations to module would just require controller changes and not every calls from all over the system. === Cons === * Suggested implementation too procedural and not pythonic. ---- Some idea about modularization: {{{ MoinMoin/item/ __init__.py # class Item == generic stuff, plugin loader + proxy text.py # class Item implements text/* mimetype text_editor.py # class ItemEditor implements text/* mimetype editor text_moin_wiki.py # class Item implements text/moin-wiki mimetype text_moin_wiki_editor.py # class ItemEditor implements text/moin-wiki mimetype editor image.py # class Item implements image/* type MoinMoin/storage/ __init__.py # class Storage == generic stuff, plugin loader + proxy filesystem.py # class Storage == fs storage impl. mysql.py # class Storage == mysql storage impl. mercurial.py # class Storage == mercurial storage impl. }}}