Created: 2010-07-28
Contributors: dholbach
Summary
The codebase of the Hall of Fame is not open-source right now and is not really maitainable, also does it contain password and all kinds of other horrible things. The only good thing about it is the theming.
The plan is to rewrite it in Django and make it more easily extensible and modifiable. Also make it open source.
Release Note
(Makes no sense, it's not part of Ubuntu itself.)
Rationale
Hall of Fame has no contributions to it, is not evolving and is not maintainable. It could be a bustling place of information about Ubuntu and its contributors.
User stories
Maria leads a new part of the community and would like to get some exposure to major contributions to the project. She reads a bit of documentation, sets up a data feed, gets it added to the Hall of Fame by the admins.
Vishnoo wants to have a friend and major Ubuntu contributor as "featured contributor" in the Hall of Fame. He writes up a short article, adds a link to a photo and submits to the Hall of Fame admins.
Design
Code changes
First of all the "Community Web Foundations project" will have to be sorted out. This will be used as a foundation, which will make the rest of the code a lot easier.
Data
Data is imported from other locations and expected to be either in .csv of .json format. The format will be documented on the Hall of Fame itself.
As an admin you will be able to
- specify the URL of the data file
- specify the number of shown data items
- specify the location on the page in a very primitive way
The data model could look like this:
class Person(models.Model): lpid = models.TextField(_("Name"), max_length=30) name = models.TextField(_("Name"), max_length=100, null=True, blank=True) mugshot_url = models.URLField(_("Picture URL"), max_length=150, null=True, blank=True) class Feature(models.Model): person = models.ForeignKey(Person) picture_url = models.URLField(_("Picture URL"), max_length=100) text = models.XMLField(_("Text"), max_length=4000) date = models.DateTimeField(_("Published Date")) published = models.BooleanField(_("Published"), default=False) class Thanks(models.Model): who = models.ForeignKey(Person) feature = models.ForeignKey(Feature) date = models.DateTimeField(_("Date")) class FeatureSuggestion(models.Model): who = models.ForeignKey(Person) suggestion = models.TextField(_("Suggested person"), max_length=100) why = models.TextField(_("Why"), max_length=2500) date = models.DateTimeField(_("Date"))
The data itself is collected and added to the database in a cronjob that runs a management command.
RSS export needs to be implemented too.
Theming
The theming will be reused. Maybe use https://launchpad.net/ubuntu-website/light-django-theme
Featured contributors
It will be possible to enter featured contributors using WYMeditor (a javascript editor).
Implementation
UI Changes
Reuse theming, but add additional pages that explain
- data / feature submission process
- link to "Ubuntu Hall of Fame" Launchpad project
Also add link to admin interface for Hall of Fame admins.
Code Changes
Complete rewrite, using python-django and python-django-openid-auth. (lp:loco-directory can serve as an example.)
Migration
Daniel can provide
- old "featured articles"
- list of people who "thanked" which featured contributor
Provide permalinks for old articles.
Unresolved issues
- Decide which RSS module to use.