Difference between revisions of "Developer documentation"

From WormBaseWiki
Jump to navigationJump to search
Line 110: Line 110:
 
*[[Coding standards|Coding standards]]  
 
*[[Coding standards|Coding standards]]  
 
*[[Formal_development_strategy|Formal development strategy]] - ''An overview of the development process at WormBase''
 
*[[Formal_development_strategy|Formal development strategy]] - ''An overview of the development process at WormBase''
 +
 +
= Architecture =
  
 
== Software platform  ==
 
== Software platform  ==
Line 120: Line 122:
 
* [[Website:Controller| Controller]] -- ''Overview of controller files and actions''
 
* [[Website:Controller| Controller]] -- ''Overview of controller files and actions''
 
* [[Website:Software Platform]] -- ''The full software platform, including reverse proxy, webservers, and database node configuration''
 
* [[Website:Software Platform]] -- ''The full software platform, including reverse proxy, webservers, and database node configuration''
 
* [[Deployment|Deployment]] - ''How to deploy the web app for production use''
 
  
 
== Hardware platform  ==
 
== Hardware platform  ==
Line 136: Line 136:
  
 
== Administration  ==
 
== Administration  ==
 +
 +
=== Updates ===
 +
* [[Deployment|Deployment]] - ''How to deploy the web app for production use''
 +
* [[Updating The Development Server]] - ''Updating the development server with a new release of the database''
 +
* [[Updating The Production Servers]] - ''Updating production environments with a new release of the database''
  
 
=== Routine Administration Tasks ===
 
=== Routine Administration Tasks ===
Line 148: Line 153:
 
*[[Website:2010.12-Private Beta Notes|2010.12: Private Beta Notes]] -- ''Notes and documentation with respect to the private beta''
 
*[[Website:2010.12-Private Beta Notes|2010.12: Private Beta Notes]] -- ''Notes and documentation with respect to the private beta''
  
=== Updates ===
+
 
* [[Updating The Development Server]] - ''Updating the development server with a new release of the database''
 
* [[Updating The Production Servers]] - ''Updating production environments with a new release of the database''
 
  
  

Revision as of 17:36, 23 December 2010

This page contains information pertinent to employees of WormBase.

Project Management

Web Site Documentation

Development Milestones

Measuring Progress

July 14 - July 30th

  • Coronate Czars
  • Coding standards and best practices for CSS, Javascript, API in place
  • Release new pages to production powered by the new architecture (classic view only)
    • Variation, Protein, Sequence -- and maybe -- Gene
    • Todd to develop <strikethrough>deployment strategy</strikethrough>, hosting environment, and proxy configuration
    • Abby and Xiaoqi to work up templates and markup specific to the classic view
    • Norie to make requisite API changes as needed

July 30th - August 31st

  • Finish API development of critical classes
  • Finish migration of prominent CGI-based pages to new architecture and release into production (classic view only)
  • Solidify look-and-feel of new site: site map, browsing paths, design patterns, navigation
  • UI features to address/develop
    • Enhanced, high-performance search
    • External URL handling
    • Error trapping and reporting
    • Authorization/Authentication
    • Customizability
    • Configurable two-panel selector
    • Incorporation of old site elements like BLAST/BLAT
    • Top-level species pages (/celegans, eg) and UI clues for distinguishing them

December 1st

  • Begin public beta testing of new site
  • Launch surveys on UI

February 1st

  • Go Live with new site

Division of Labor

Duties, current as of July 2010.

Configuration Czar -- View and application configuration -- Norie

  • Keep configuration files neat, orderly, and documented
  • Create new configuration for hard-coded variables and UI elements when needed.
  • Enforce/evangelize configuration standards and formatting

CSS Czar -- Responsible for the maintenance of CSS files

  • Develop and document CSS best practices
  • Keep CSS files tidy and organized function
  • Enforce/evangelize standard CSS markup in templates

Javascript Czar -- Javascript use and maintenance

  • Develop and document Javascript best practices
  • Explore and advise on javascript plugins
  • Enforce/evangelize javascript standards and formatting

Template Czar -- Oversee template development

  • Develop and document template standards
  • Define and document shared template elements (ie tables, fields, widgets)
  • Keep template directory organized
  • Enforce/evangelize template standards

Controller Czar -- Maintain and develop new controllers as needed

  • Document existing controllers
  • Document logic flow through application
  • Develop new controller actions as requested/needed

WormBase::API Czar -- Oversee development of the external Model -- Norie

  • Develop and document API coding standards and best practices
  • Document shared API methods
  • Enforce/evangelize coding standards

Testing Czar -- Oversee testing of the web app -- Todd

  • Develop and document test requirements
  • Ensure adequate test coverage and performance
  • Develop global View and API tests
  • Stress Test app

Profiling Czar -- Track progress and performance of the web app -- Todd

  • See the Profiling documentation for additional details and progress.
  • Explore profiling options and discuss
  • Add dynamically configurable profiling
  • Identify and report bottlenecks
  • Develop caching mechanism of ajax-requested widgets

Coding standards and Best Practices

Architecture

Software platform

  • Application overview - A quick tour through the software platform, request flow, caching, etc
  • Configuration -- Application and view configuration: formatting and standards
  • WormBase::API -- The WormBase data model, maintained external to the web application
  • View -- Templating system, commom template elements, javascript, and CSS
  • Model -- The web application model; thin, glued to the external Model
  • Controller -- Overview of controller files and actions
  • Website:Software Platform -- The full software platform, including reverse proxy, webservers, and database node configuration

Hardware platform

--

Administration

Updates

Routine Administration Tasks



Load balancing and Failover

Monitoring and Crises Management

Frozen Releases

Source Code Repositories

We use the distributed source code management system Mercurial. Projects are hosted on BitBucket.

How-To create, check out, and manage our repositories

Deprecated Documentation

The good word gone bad. Cruft. Lint. Maybe useful. Probably not.

Frozen Releases as Virtual Machines