Hello,

I have an python application which I've been developing for several years (off 
and on, mostly off for lack of time) which I'm considering putting up to open 
source if I can find other developers interested in contributing.

The application is a web publisher/information outliner.  (See an example of a 
beta here:  http://members.cox.net/ronpro/welcome.html where I test my ability 
to generate an interactive tree for the data in an outline.)

The application is 100% Python.  The gui is written using Tkinter and Tix -- 
I'm definitely open to other libraries for the GUI.  The app supports unicode 
in the outlines.  There's a spell-checker plugin (complements of the pyenchant 
project).  The application is written on top of an application framework and 
plugin framework both of which I developed myself.  Much of the application is 
actually plugins so it's very modular.  For screen shots of the app so far see: 
http://members.cox.net/ronpro/scrnCap1.JPG and 
http://members.cox.net/ronpro/scrnCap2.JPG

The development would probably be done through SourceForge.

I'm in the process of documenting the current design in UML class diagrams 
using the free version of Visual Paradigm (if another tool is suggested we 
could switch).

My motive:  I'm a research scientist.  My prefered method to record, review, 
edit and organize my notes is within an outline (rather than a flat notebook 
format used by most researchers).  The ability to consider new ideas can be as 
easy as moving items around in the outline.  I've used many commercial programs 
in the past but all have had some limitation or another.  Most don't support 
unicode (I need unicode characters to record mathematical and logical 
formulae).  Those that do produce html don't produce the side-by-side view of 
an interactive tree (able to expand or collapse nodes) beside the actual 
on-screen notes.  The interactive tree is a necessity for me with over 2000 
entries in my largest outline and growing fast.

Design Philosophy:  I've attempted to keep to the following design philosophy 
(prioritized by order).
- User Experience -- everything should be easy for the user.
- OO, Maximize modularity, minimize cross dependence.
  (e.g. The Application framework, plugin framework and word processor know 
nothing about the problem domain and nothing about the other modules in the 
application).
- KISS, I prefer simple straightforward code over speedy "tricks".  If it's 
hard to read or understand I'll probably hate it.
- Minimize 3rd party modules in the core application.  I know 3rd party libs 
can make it easier to develop and this would seem to violate KISS.  However, 
with User Experience being higher priority, the less there is for a user to 
install the easier.  Best case, the user installs Python and s/he's ready to 
go.  I don't mind requiring 3rd party libs for most plugins.  My take on this 
is here:
   - If it's part of the core distribution (the core application or a plugin 
that's part of the main distribution), do everything possible to avoid 3rd 
party libs.
   - For plugins distributed separately from the application installer, the 
plugin must check for the required libs upon loading and exit gracefully if the 
lib is not present (at most display a dialog stating that the required lib is 
not installed.)
- If at all possible, provide unit test with each module (including plugins)

Future Direction:
- Some of the features in the menus and on the toolbars are not yet implemented.
   (e.g. find, search/replace, bulletized and numbered lists, tables)
- The content of any tree entry is displayed in the content pane to the right 
of the outline.  Right now the only supported content is formatted text in a 
word processor (actually a glorified Text widget).  The Text widget is part of 
the core app.  I want this widget to be turned into a plugin so that other 
kinds of content are possible with other content editor plugins.  The main app 
would then select and display the appropriate content editor for a given kind 
of data.
- Currently, cutting and pasting is possible, however cutting and pasing 
formatted text is only possible within the application.  Want to support 
cutting and pasing stylized text with the system clipboard and other 
applications (word, star office, etc.)
- Import export other formats (importers and exporters are already plugins).  
We just need to write more of them.
- Support multiple views of a single outline so we can view different parts of 
the outline simultaneously.
- Support cutting and pasting, dragging and dropping across different outlines.
- Customizable appearance for HTML output.
- Anything else the development group or users can think of.


If you're interested in more information or trying out this app (note that it's 
very immature and probably only worthy of being called an alpa) please don't 
hesitate to contact me.

Thanks for reading,
Ron
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to