Snakelets
Web application server.
It is not of much use to reimplement Snakelets because the web server part should be taken care of by a proper web server such as lighttpd or perhaps CherryPy or Sneaky if you want a server written in Python.
The application server logic then should be linked via WSGI to the web server to avoid server lockin.
What's left is the platform to build the web applications on. Lets just pick one of the existing ones out there instead of reinventing the wheel.
New implementation:
http server: Lighttpd, Apache, CherryPy web server.
- if needed, use a connection such as SCGI to connect the web server to the python world
python server: listens to the SCGI requests from the web server and provides a WSGI server for web applications. Use CherryPy3, Werkzeug or Pylons.
Additional technology if the WSGI server doesn't provide it by itself:
- database/ORM: SQLAlchemy (+addons such as Elixir?) or SQLObject or Storm.
- templates: Mako (text-based).
- Routes voor url dispatching
FormAlchemy / FormEncode / WTForm form libs
- i18n: Babel
Frog - a blogging system
multi-blog?
Most of these ideas came from playing with a blogging tool called DotClear (http://www.dotclear.net/ - the site is mostly in French but there is an English forum). It's not very appealing to me to hack on (it's PHP because I was looking for something to run on a basic hosting site) but it's well done and has some nice features that could benefit Frog.
A very interesting one is - not sure how to call it - the "multi-blog" : instead of creating a separate blog for each user, you create a blog and then add users to it, and all their posts go to the common list. User names work a bit like categories : you can have a list of posters in the side bar, and when you click on a name you get only the posts by that user.
Now add to this the ability to create "closed" blogs -- ie all users must login, even to only see the pages... probably very easy with Snakelets. Then add the very nifty file manager (which is lacking right now in dotclear), maybe with an "admin" module for security (like setting a common root for all user home dirs etc.). Then add a nice and simple picture manager (gallery) like dotclear has...
...and suddenly what you have is not just a blog anymore, but potentially a great collaborative space for small groups of users (like a club or a clan or just a bunch of friends), that's easier to use for non-geeks than a CMS or Wiki or Groupware app, but just as effective for sharing news and files and photos when that is all that's needed.
Future version
- /frog/user/irmen/* should http 301 redirect to just /blog/* (but only for certain urls - not every url works without the /user part yet!)
- rss feeds: /blog/feeds/irmen/feed.rss ;;
permalinks & article comment link: /blog/user/irmen/article/2010-01-30/183 ;; category links: (menu + article tag) /blog/user/irmen/category/11 ;; archive links: /blog/user/irmen/archive/2010-2 ook archive calendar links. (prev/next/permalink);; login link: /blog/user/irmen/?login ;;
- rss feeds: /blog/feeds/irmen/feed.rss ;;
just a link for possible use: Reverend bayesian classifier
Change the text editor to Markdown (Python implementation, Javascript implementation) Python markdown includes pygments syntax coloring it seems.
add the WMD editor or rather MarkItUp for easy markdown editing in textarea. Combine with Showdown for realtime preview, so no need for preview button
- True Single-user mode to allow "easier" urls (without webapp + username); i.e. ditch the multi-user blog server approach.
- 'popular': improve this a bit, show most viewed articles but also the articles with the most comments
- for RSS feeds: remove markup tags from summary article text
- on most popular page: list of articles that have the most comments (is currently very slow because this info is not cached!!)
- user self-registration (without need of admin pages)
- scan for "bad links" in all articles (useful when you move/rename files and images around)
- make main pages accessible without cookies. This also requires fixing of some urls: all urls should have the current blog username in them (profile, search, submit etc don't have this yet) -- no longer necessary if the multiuser mode is dropped
check issues mentioned on Anne's The Ultimate Weblog post
- use real database (mysql/postgres/sqlite) for storage instead of xml files. This allows for much easier selection/search/...
- make it possible to put an article in multiple categories instead of just one
- friendly article urls (based on subject of the article, instead of just the article id)
- trackback url (both outgoing and incoming)
Use Pysourcecolor or Pygments to syntax-color source codes (need attribute to code tag to tell what type it is...)
xmlrpc metaweblogAPI , blogger API , to allow remote blogging (using tools such as wbloggar
- secured areas: secured articles, secured download directories (only for registered users, only for specific users, only when you enter the right password, etc... Never secured for the submitter ofcourse.) This is to be able to create simple file sharing
- make main pages static or cached, otherwise a lot of memory is wasted in abandoned sessions (one per request) generated by things such as web robots
