Thoughts
These are a few general thoughts and ideas that I have at the moment. Some of them have probably been mentioned on the Moin IRC channel. They are not finished ideas. The projects listed below reflect experimentation with some of my ideas. Perhaps as (if!) these ideas expand someone will create a page to discuss and implement the ideas.
Easy user experience
I've tried to introduce wikis (Moin) to two different companies. I read that the first wikis weren't concerned with ease of use, they were programmer oriented. Complaints that I have heard are:
Losing work because more than one person tries to edit the same page at once. This problem is now fixed using edit locking. i.e. HelpOnEditLocks.
Learning the formatting. Programmers may be familiar with structured text formatting and the likes of HTML but many casual users find the formatting fiddly. Whilst people can be taught to use wiki formatting it can be a tedious process tutoring everyone. Better documentation might help but replacing the simple text area editor with more of a word processor style interface would help more. MoinPageEditorApplet is a simple attempt to improve ease of wiki use. It might also provide extra functionality not provided in the default simple text area, e.g. indenting sections, highlight and apply style, syntax checking etc.
Processing of wiki content
Wikis are great for throwing information into and then refactoring slowly over time. Often "knowledge" is initially unstructured or evolves whilst ideas and information are added. Rigid content and information management system do not always allow the ease of refactoring which wikis allow. To assist in the usage of information the wiki it would be nice to search, sort and present wiki content in different ways.
WikiDb is a macro which implements a simple SQL like query system which can read information from Moin tables, filter it and present it. This currently only handles tables. It is intended eventually that data insertion will be allowed as well.
Data sources
Tables are just one source of information. File directories/trees of pictures, music, source code etc might be another. Newsfeeds, RSS readers, etc. Moin provides a Dataset class to represent information in a tabular form (MoinMoin/util/dataset.py). This can rendered using a Databrowser widget (MoinMoin/widget/browser.py). An abstract class DataSource might provide a interface to these various data sources. e.g.
1 class DataSource: 2 def createDataset(self): 3 pass 4 5 class MoinTableDataSource(DataSource): 6 def createDataset(self): 7 # create a util.DataSet which represents the table this class refers to 8 9 class FileTreeDataSource(DataSource): 10 def createDataset(self): 11 # create a util.DataSet which represents a file tree and the files therein 12 13 # User site defined 14 class StockPriceDataSource(DataSource): 15 def createDataset(self): 16 # read some stock prices from somewhere and create a util.DataSet
Different source might be added to customise a site. Perhaps there might be a DataSourceMarket?
Flexible presentation
It looks like the widgets will be set up to work like this (MoinMoin/widget/browser.py) so this idea might not be new. Information in a dataset might be presented in several different ways. Currently a table version is available but a browser widget might provide someway of altering the formatting to present the information as a table, a list, or an XML structure. Numerical data might be presented as a graph.
The Dataset could contain information about the type of a column, e.g. numerical, label and the ways the data could be presented. e.g.
- Table "Filelist" : label, filename, filesize, filetype
Graph "Ratios" : label, COUNT(filetype) - might be rendered as a bar or pie chart.
Moin stats
Moin stats might use the above mechanism to present the usage log. e.g.
A DataSource is created to read the editlog file.
A macro would associate the EditLogDataSource with a browser widget.
The Dataset created by the DataSource would provide information to the browser about the data contained.
- The browser renders the data according to users options.
The Dataset might be cached until the user exits the page or explicitly asks it to be updated to improve performance.
Should Moin stats move to PyTables the DataSource could encapsulate the change by handling reading and writing of data.
Current Projects
My mini Moin projects:
Contact
Nick Trout (wk) <ntrout AT rock star vancouver DOT NOSPAM com> or Sourceforge trout <trout AT users DOT sf NOSPAM DOT net>
Messages
Hi Nick, I added some comments to WikiDb concerning mktime / localtime / gmtime usage. -- ThomasWaldmann
Thanks Thomas. I've been trying to find time to do more work on WikiDb but had other jobs to do. I've mainly written WikiDb for my own selfish purposes and ignored making the macro generically useful until its useful to me! Once it is fuller in functionality I will try and address issues like the one you suggest. Thanks for pointing this issue out, undoubtably there will be others. --ndt