Developer documentation
From WormBaseWiki
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
- What criteria should a genome meet before we accept it for integration?
- WormBase Models
- Orthologs: use cases for searches
- Genome sequence changes
Web Site Documentation
- Installing the Web Application (legacy code) - Here's how to install the classic WormBase web site for development purposes
- Installing the Web Application - Here's how to install the WormBase web application -- including Catalyst -- on your system
- 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
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)
July 30th - August 31st
- http://wiki.wormbase.org/index.php/AceOjbect_Redesign_Page
- 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
September 1st
- Begin beta testing of new site to invited parties
October 1st - November 1st
- Begin public beta testing of new site
- Launch UI and general surveys.
November 1st - December 1st
- Address survey issues
- Test, test, test
December 1st
- Go Live with new site
Division of Labor
Duties, current as of July 2010.
Configuration Czar
View and application configuration
- Keep configuration files neat, orderly, and documented
- Create new configuration for hard-coded variables and UI elements when needed.
- Evangelize configuration standards and formatting to dev group
CSS Czar
Responsible for the maintenance of CSS files
- Develop CSS best practices for the dev group
- Keep CSS files tidy and organized function
- Help enforce standard CSS markup in templates
Javascript Czar
Template Czar
Define and document shared elements, keep template directory organized, enforce standards
Major UI features
- Searches Czar
- External URLs
Controller
WormBase::API Czar
document shared API methods; enforce coding standards
Testing Czar
- Develop and document test requirements for the dev group
- Ensure adequate test coverage and performance
- Develop global View and API tests
Profiling Czar
Measuring Progress
Coding standards and Best Practices
- Developer notes - Best practices, conventions, etc
- Coding standards
- Formal development strategy - An overview of the development process at WormBase
Software platform
- Application overview - A quick tour through the software platform
Configuration
WormBase::API
- Common Model elements - reference list of common model elements like Species
- Data structure documentation - codified data structure that should be returned by API classes
View
- Template Overview -- a quick tutorial on the templating system
- Common template elements -- how to include common elements like references and species in a page
- Things to document: evidence handling, linking entities, external URLs, searches
Model
Controller
Hardware platform
- MySQL database replication - Mirroring mysql databases across production nodes
- Performance optimization - Memory, Disk, and Network I/O troubleshooting
- WormBase Infrastructure - A complete accounting of WormBase compute resources and topology.
- WormBase Development Environment - Building, Configuring, and Administering the WormBase development server
--
- GBrowse Administration -- building, configuring, and maintaining production GBrowse nodes.
- Webserver Administration -- building, configuring, and maintaining non-GBrowse production nodes.
Administration
Routine Administration Tasks
- Testing - Testing guidelines for the web application and hardware platform
- Deployment - How to deploy the web app for production use
- Cronjobs
- Creating a Google Sitemap
- Managing Perl Libraries - Managing Perl libraries across projects and architectures
- Managing GBrowse - Quick HowTo for managing GBrowse in development and production environments
- Log file management and analysis - rotating and analyzing logs.
- Site statistics
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
- Building WormMart - How to convert a WormBase AceDB database into WormMart
Load balancing and Failover
- Building Squid - How to build and install Squid
- Configuring Squid - basic squid configuration at WormBase
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
Developer Tools
- Twitter: General announcements
- FriendFeed: WormBase FF room
- WormBase Forum: Developer Forum
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
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