GeekBlog Stories |
by Ted Neward, Nick Chalko
User Stories
The proposed features of GeekBlog are done in XP-style "stories": one-sentence descriptions that hopefully convey the basic heart of the idea. Some are in varying degrees of support already, but need either further extension, revision, refactoring, or amendment. They are listed roughly in the desired order of completion. If anybody is already at work on this, their name is listed in brackets following the story. Please contact Ted Neward before starting to work on a particular feature, so as to avoid accidental duplication of effort.
The following list of stories need to be done to call GeekBlog a 1.0 release:
- Allow posting entries via EMail from weblogauthor
- EMail subject == blog title
- EMail body == blog body
- Attachments == files to store on site (???)
- Verify From: address is on accepted list of inputs. (This won't protect against all forms of attacks--for example, attackers can always mock up the From: address in a bogus email attack--but at the moment it's not worth spending a million to protect a dime.)
- (Other security options include doing PGP or hashing the message; basic goal here is to be able to post new blog entries from Microsoft Outlook running NewsGator--in essence, make Outlook the one-stop blog center.)
- Validate user-entered blog text against RSS validator before accepting;
also, do basic screening against malicious HTML (only allow certain HTML
tags, toss out anything that smells suspicious--failfast, as opposed to
failopen behavior)
- Auto-submit to RSSValidator online?
- Do simple XML parse of entry-as-RSS?
- CDATA-escape the whole entry?
- Allow entries to be marked as "articles":
- List 10 most recent articles on sidepanel
- Provide "All articles" link to list of all articles on sidepanel
- Nospam email from blog comments; this means when Don Box posts a comment and gives his email address, turn "dbox@microsoft.com" into "dbox_at_microsoft.com" so as to help him avoid being victimized by spam harvesters [Ted Neward] -- DONE!
- External configuration (don't rely on web.xml anymore) [Ted Neward] -- DONE!
- Allow file(s) upload for entry reference; this means when a new entry is posted, accept a (dynamically-growing) list of files to upload, as well as the relative filepath to store those files at. Make it easy to upload images, binary archives, and so on, to the site. Create directories as necessary. [Ted Neward] -- DONE!
Any database changes should be auto-upgrading; DataManager should be able to automatically install the schema if GeekBlog has never been run before, or else alter an existing schema to upgrade it to latest versions.
The remainder of the list is as follows:
- Add commenter URL to comments as optional data item
- A few different "skins" for the site (CSS and possibly different-looking JSP pages) would be nice just to verify that it can be done. What might *really* be interesting would be to randomly select the skin, like the headshot currently does.
- Provide HTTP If-Modified-Since and Last-Modified headers for RSS feed
- WYSIWYG HTML editor in edit.jsp
- Support "quoting" a la Radio
- Lucene integration for fast content searches [Brian Maso]
- "Remember" comment information in cookie
- Offline entry support (WebService to accept posted entries) [Steve Loughran]
- Pingback client support
- Pingback server support
- Trackback client support
- Trackback server support
- Collapse similar referrals
- JDBCDataManager implementations: MSSQLDataManager, MySQLDataManager, ...
- XindiceDataManager
- PropertiesDataManager
- General statistics reporting
- Weblog hit count, RSS hit count, etc.
- Complete referral hit report
- Email statistics to weblogauthor
- Add comments as part of RSS feed
- Entry categories
- Add "category" to all DataManager APIs
- Entries can belong to 0..* categories
- Allow viewing blog by category axis ("category" query param)
- Import entries from RSS (for restoration)
- Export entries as PDF (RSS->FO->PDF) (for readable archival)
- Realistically this would be easier if we had an XSL:FO tag; is this under way at the Jakarta Taglibs XTags project? Should it be?
- Mailing list integration:
- New users sign up via weblog; users must confirm by clicking link; etc.
- Provide mailing list removal page
- EMail posted entries to mailing list
- EMail posted comments to mailing list
- Multiple user weblog support
- userid becomes part of URLs; may require "hiding" all endpoints
behind a single servlet with mapping--FrontController servlet that
redirects to JSP based on part of the URL. For example:
- http://host/geekblog/ted/ ==> go to Ted's index.jsp
- http://host/geekblog/ted?date=20030101 ==> go to Ted's index.jsp?date=20030101
- http://host/geekblog/ted/login ==> go to Ted's login.jsp
- http://host/geekblog/kevin/ ==> go to Kevin's index.jsp
- http://host/geekblog/brian?date=20030101 ==> go to Brian's index.jsp?date=20030101
- http://host/geekblog/nick/login ==> go to Nick's login.jsp
- . . .
- Add user to all DataManager APIs
- userid becomes part of URLs; may require "hiding" all endpoints
behind a single servlet with mapping--FrontController servlet that
redirects to JSP based on part of the URL. For example: