Difference between revisions of "Developer documentation"
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'' | ||
− | |||
− | |||
== 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'' | ||
− | + | ||
− | |||
− | |||
Revision as of 17:36, 23 December 2010
This page contains information pertinent to employees of WormBase.
Contents
Project Management
- Project Calendar
- Conference call agendas and minutes
- Project meeting agendas and minutes
- Linking To WormBase
- Suggested pre-release data checks
- Internal documentation and standard operating procedures
- modENCODE Analysis & metadata discussion
- Genome Standards -- What criteria should a genome meet before we accept it for integration?
- WormBase Models
- Orthologs: use cases for searches
- Genome sequence changes
- WormBase Genomes
Web Site Documentation
- Installing the Web Application - Here's how to install the WormBase web application -- including Catalyst -- on your system DEPRECATED
- HOWTO migrate a CGI - quick overview of how to migrate an existing CGI into a Model, Controller, and View. Sparse
- Requirements analysis / Design Specifications
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
- Browser Support Statement -- official graded browser support statement
- Developer notes -- Best practices, conventions, etc
- Coding standards
- Formal development strategy - An overview of the development process at WormBase
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
- MySQL database replication - Mirroring mysql databases across production nodes
- WormBase Infrastructure - A complete accounting of WormBase compute resources.
- Development Environment - Building, Configuring, and Administering the WormBase development server
- Production Environment - Building, Configuring, and Maintaining the WormBase production environment
--
- GBrowse Administration -- building, configuring, and maintaining production GBrowse nodes.
- Webserver Administration -- building, configuring, and maintaining non-GBrowse production nodes.
Administration
Updates
- 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
- Testing - Testing guidelines for the web application and hardware platform
- Profiling - Profiling the web application, performance tuning, identifying memory and I/O bottlenecks, and historical benchmarks
- Cronjobs
- Creating a Google Sitemap
- Managing Perl Libraries - Managing Perl libraries across projects and architectures
- Log file management and analysis - rotating and analyzing logs.
- Site statistics
- 2010.12: Private Beta Notes -- Notes and documentation with respect to the private beta
- Building WormMart - How to convert a WormBase AceDB database into WormMart
Load balancing and Failover
- Building Squid - How to build, install and configure Squid
Monitoring and Crises Management
- Development Server Administration - Monitoring and fixing the development server
- General administration and monitoring notes - Partially redundant, sorry
- Monitoring services and servers
- Crises Recovery Plan - Everything breaks. Here's how to fix it.
Frozen Releases
- Building Frozen Releases - The most current documentation on how to build a frozen release
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
- WormBase - The WormBase web application (public)
- WormBase-admin - Administrative code (private)
Deprecated Documentation
The good word gone bad. Cruft. Lint. Maybe useful. Probably not.
- NFS at WormBase
- Trac installation notes
- Trac Feature Tracker / Subversion repository
- Establishing the SVN repository - Setting up the subversion repository
- Managing GBrowse - Quick HowTo for managing GBrowse in development and production environments
Frozen Releases as Virtual Machines
- How to build a WormBase Virtual Machine -- also describes how to create a VMX for a frozen release
- Configuring a server to host virtual machines -- quick guide to setting up a frozen release server
- Managing servers hosting virtual machines
- How to build a frozen release -- how to configure a WormBase VM as a frozen release server
- Creating Virtual Disks - How to create VMDKs for unlimited portable storage