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