Revision 2 as of 2006-08-24 23:57:49

Clear message

Development of python.org Website to promote and inform about python

Note: This proposal was funded and completed. See PythonWebsite for information on ongoing content and tool development for the python.org website.

The python website development started approximately a year ago. Over the period of the last year there has been significant input from Python users, advocates and board members which has resulted in the following deliverables

     1. Logo
        
     2. Website design
        
     3. Website Template Build
        
     4. An initial information architecture
        
     5. An implementation plan

The site has been built as XHTML 1.0 Transitional using CSS Positioning techniques. This is widely accepted best practise for reasons of usability, accessibility and forward compatibility. It also ensures that pages are small and hence the site is quick. A final advantage is that, if desired, the site can be re-skinned without replacing the HTML and hence without rebuilding the templating system. The site design can be seen as built and tested HTML at www.pythonworld.com (there have been some changes since it was tested across browsers so compatibility may be lacking, full cross browser testing of this template will take place and any problems fixed).

The current state of the project has been inspected and given verbal approval by Steve Holden and has no outstanding issues held against it. The next stage of the project is to develop the following components

       1. The templating system (prototype nearly complete)
        
       2. Final information architecture
        
       3. A set of conversion modules that will allow changes made to the
           current content to be kept largely in sync until such time as
           the site is deemed ready to launch.

This step needs some intensive effort which we (myself and Matt Goodall) will undertake. Unfortunately we estimate that it would take approximately three weeks for two people to complete and we think this would take more than four months to do in our spare time (even that presumes that our company doesn't place too many demands on us).

We are proposing to contribute one month of work and we ask the Python grant fund to provide the other one month at Pollenation's cost rate.

This would work out as 4,000 GBP. If this is possible we would look to complete the work during February/March

Our company's payment terms are typically 50% initial payment. 50% on delivery. Our deliverables would be

     1. Final testing of the website HTML/CSS to ensure cross browser
         compatibility and accessibility
        
     2. a completed templating system - a nevow/yaml/rest command line
         driven system of generating a html website. (initial template
         data - http://pythonworld.com/resources).
        
     3. set of modules that implements over 90% of the current Python
         website - It is desired that the website content be dynamically
         converted from existing ht files. This will ensure that any
         revisions that take place between the start of the project and
         the site launch will be included. A framework will be built that
         reads the ht files and generated YAML content in a format
         suitable for the templating system. For ht content that is not
         in a 'typical' format, custom modules will be added to the
         framework.

Because the templating system is driven from plain text files, which contain a combination of YAML data and ReST blocks, the site will be simple to edit with command line tools. It is expected that a standalone webserver be included with the svn repository such that editors may run the website on their own computers before committing any changes.

The modules will also provides a simple to use framework under which existing content which doesn't currently integrate into the existing site framework, may be repurposed. We will also provide templates under which dynamically generated content (pypi, python wiki) can be included in the new design.

It goes without saying that just as our current work has been made without expected recompense, once the project is complete we would continue to work at the framework and commit ourselves to supporting an administration server that would host the templating and content system. It is expected that the flat html files that the systems generated will remain hosted at it's current location.

Although the work will be completed as a collaboration between our developers, each developer will have a main responsibility. Matt Goodall (one of the two main Nevow developers) will be creating the templating system. Tim Parkin will be working on the content storage framework and any modifications needed on the PyYaml module (which is currently maintained by Pollenation Internet). Certain pages will require additional templates building in order to accommodate their different layouts; these templates will be provided by Pollenation.

Pollenation would like to have a small credit in the footer (which would help enormously - the text 'web design' in a small font in the footer with a link to our website would be more than adequate. It could appear alongside the hosting credits - a small icon would be sufficient if text is unacceptable). This credit would help use continue in business and enable our business to continue offering web support for the Python site.

Yours sincerely

Tim Parkin

Managing Director


APPENDIX - Details of YAML page generation

The following is a draft example of how the YAML template data files would look. The example is based on the home page of the site and is consequently more complex than typical pages would be. This does demonstrate the flexibility of the proposed system however.

---
# Type of template to use
template: standard

# Page components
contents:  { meta: +meta.yml, topnav: +topnav.yml, nav: +nav.yml, main: _homepage }

# variables references above
vars:
  homepage:   { content: [ _title, _photos, _sidebars, _intro, _news ] }
  title:     'The Official Home of the Python Programmming Language'
  photos:     +photos.yml
  sidebars: [ +sidebar_using-python-for.yml, +sidebar_python-projects.yml ]
  intro:      +intro.rst
  news:       +news.rst

The standard template contains 'holes' labelled 'meta','topnav','nav' and 'main'. Where a yaml file appears, it is used to file the 'hole'. For example, the 'nav' yml file looks like this

---
# Type of template to use
template: navigation

# Contents of the template
contents: 
  # Main Navigation
  main-navigation :
  - [ABOUT, about]
  - [NEWS, news]
  - [DOCUMENTATION, docs]
  - [DOWNLOAD, download]
  - [COMMUNITY, community]
  - [DEVELOPERS, dev]
  - [LINKS, links]
 
  # Additional to make certain sections default open
  open-navigation: [about]

  # Quick links for navigation
  quick-links:
    documentation:
      - [languages, docs/lang]
      - [libraries, docs/libraries]
      - [modules, docs/modules]
      - [more, docs]
    downloads:
      - [python-2.3.tar.bz2, ftp/python/2.3/python-2.3.tar.bz2]
      - [python-2.3.exe, ftp/python/2.3/python-2.3.exe]
      - [more, downloads]

It can be seen that it is simple to add a new top level navigation item or quick link. The template has to have some knowledge of how it is to be rendered (to understand a list of links or a group of lists of links, as in the quick links case: or that 'open-navigation' refers to the 'main-navigation' and what it means.

A typical page would not have to include the navigation section as it can be inherited from it's parent; This is also true for the meta and topnav elements. The only important items are the contents (which can be just a ReST file) and optionally the sidebar (which may be a table of contents, possibly auto generated from the document itself).

From this it can be seen that to generate a new page is as simple as generating a new directory, copying an index.yml, changing the contents mapping to include a 'main: +main.rst' and adding a ReST document named 'main.rst'.

-- 
Tim Parkin, Pollenation Internet Ltd
e: tim at pollenation dot net   w: http://www.pollenation.net 
t: +44 (0)113 2252500    m: +44 (0)7980 594768
f: +44 (0)845 2802368

Unable to edit the page? See the FrontPage for instructions.