[Flexpw-planning] General design idea
Status: Pre-Alpha
Brought to you by:
berniebln
|
From: Bernhard S. <ber...@us...> - 2009-12-02 00:04:30
|
Hello there,
here are some design ideas I have about the general concept of the
application ("the app").
I like the idea of considering the app a universal store of private
information ("something") that are locked away in a file ("somewhere"),
protected by some means of encryption ("with some kind of protection").
In short: an app that stores something somewhere with some kind of
protection.
Cool - a Swiss Army Knife, we can store our passwords, our secret
thoughts, our diary, our hidden plans, our notes there, with adequate
interfaces for each of these different kinds of information. We could
store it in a local file, on a ftp server, maybe to a web app that makes
this data available to us through HTTPS over the internet, to our
mobile. And so many kinds of protection and identification: master
passwords, key files, using the fingerprint reader, eye recognition...
Unfortunately, if we want to implement all of these, there is a slight
chance that the planning phase will not be finished until 2020, and a
small possibility of a little loss of motivation might come along with
it also.
But why limiting the project to the storage of passwords only, if the
coding that has to be done to encrypt the data, to perform the
authentication etc. anyway?
In my opinion, the best idea is to establish a simple and
easy-to-understand plugin system:
* That will more or less automatically establish a good structure on
the core modules of the app
* It will make it easy to create first running prototypes
* If someone decides to extend the app herself, it will be more
encouraging to do that, because with a good plugin architecture, it will
be much easier to understand how to extend the app, and the coding goes
all into one plugin, that means, to one place - it will make it easier
to debug etc.
* Plugins can be shared, switched on and off - easy customisation!
I already see a Mozilla-like add-on library for FlexPW :))
Okay, back to reality. I think it would be a good idea to think of a
simple plugin design for the three core parts, that is,
* saving data encrypted to somewhere ("storage plugins"),
* authenticating the user by certain means ("authentification
plugins"),
* and modelling and displaying data ("data item plugins").
To the last point: any kind of data has to be stored into a python
object, and there must be a mask that allows the user to edit this data.
So if anyone wants to extend the app by, say, a possibility to save
diary entries, he or she has to define that a diary entry has a date and
a memo field, and for the edit mask, there should be a label and a date
picker to specify the date, and a multiline text area to enter the memo.
For the saving, it should be discussed whether Python pickeling is an
appropriate method to store the content of data item plugins. Otherwise,
we could request some special export function for internal storage by
these plugins.
As a first step, it might be a good idea to start with a light-weight
controller, that gets the three plugins assigned manually (later, a
plugin management can be written or imported from some library, if there
is anything like that).
I assume that even with some very simple sample plugins, we will already
gain quite a lot of knowledge about how to design the plugin
architecture.
I'm going to write another message about import and export architecture,
since it seems to be a little more complex.
Bernhard
|