Developer documentation
From WormBaseWiki
This page contains information pertinent to employees of WormBase.
Contents
Project Management
Conference call agendas/minutes
- Conference call agendas and minutes (All WormBase)
- Conference call agendas and minutes (WebDev team)
- Project meeting agendas and minutes
- WormMine development status
- InterMine Strategy Meetings
Source Code Repositories
We use the distributed source code management system git. Projects are hosted on Github.
How-To create, check out, and manage our repositories
- website - The WormBase web application (public)
- website-admin - Administrative code (private)
Recommended reading (learning git):
General Documentation
Data Model and Data Development
- WormBase Models
- Genome Standards -- What criteria should a genome meet before we accept it for integration?
- Suggested pre-release data checks
- modENCODE Analysis & metadata discussion
- modENCODE Integration status
- Genome sequence changes
- WormBase Genomes
- GFF Release Data and Changes
Web Site Development Guidelines
- Developer Resources at WormBase -- Available developer resources, including the shared development space
- WormBase Release Workflow -- Project-wide schedule that documents what is happening when and where.
- Formal Development Strategy -- An overview of the development process at WormBase
- Coding standards
- Developer notes -- Best practices, conventions, etc
- Browser Support Statement -- official graded browser support statement
Testing
Help us maintain the site
The Web Application
- Application overview - An overview of the web application, including MVC structure, 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
- Genome Browsing
- GBrowse Set-up on dev.wormbase.org -- "Updating/rolling-back GBrowse installations on a per user basis"
- Genome Browser Survey -- "Community survey for evaluating use cases and required functionality of a WormBase genome browser"
- Visualization
- Website:Visualization Library Assessment -- "Assessment of several visualization options for integration in the Website"
- Website:Visualization with ggplot2 of the R-Project -- "Installation, set-up, and other information about the R-project based visualization"
- WormMine -- How to install, update, and maintain the InterMine instance at WormBase
- Contribute from Github
The Mobile Website
- Mobile -- Overview of the mobile website
- Router -- A definition of the possible routes of the mobile website
- Models -- Details about the models
- Collections -- Details about the collections
- Views -- Details about the views
- Widgets Porting -- Details about the porting of widgets in the mobile website/app
Information for third party developers
Administration
Architecture
Software Platform
- Installing WormBase - How to get a basic installation of WormBase up and running
- Installing WormMine - How to get a basic installation of WormMine up and running
- Production Environment - Building and Maintaining the WormBase production environment; extends the "Installing WormBase" document
- GBrowse Administration -- building, configuring, and maintaining production GBrowse nodes.
- Building WormMart - How to convert a WormBase AceDB database into WormMart
Hardware Platform
- Hardware Platform - A complete accounting of WormBase compute resources.
Software Life Cycle
- Staging a new release - how to stage a new release of WormBase on the development server and cloud instances
- Software development period - Once a new database has been staged, the development phase begins in earnest on private development sites
- QA/QC and Performance Benchmarking - Integrating changes and staging the code for QA/QC and performance testing prior to deployment
- Release to Production - Deploying the web app; updating to a new release of the database
Measuring Application Performance
- Unit Testing and Profiling - Testing and profiling protocol for the web application
- System Testing
- Standards Validation - Validation of HTML, CSS, XML
- Security Assessment
- Accessibility
- Usability Testing - usability testing strategies and evaluation
- Browser Compatibility Testing - browser support matrix and testing protocol
- Load Testing - Performance and load testing; historical benchmarks
Routine Administration Tasks
- Cronjobs - a full accounting of all cronjobs at WB
- Creating a Google Sitemap - how to tell Google which URLs to index
- Managing Perl Libraries - Managing Perl libraries across projects and architectures
- Log file management and analysis - rotating and analyzing logs.
- Site statistics
Monitoring and Crises Management
- Crises Recovery Plan - How to diagnose and recover from service interruptions.
- Monitoring services and servers - Keeping tabs on the production architecture
Frozen Releases
- Building Frozen Releases - The most current documentation on how to build a frozen release
Deprecated Documentation
The good word gone bad. Cruft. Lint. Maybe useful. Probably not.
Rearchitecture
- Development Milestones
- Requirements analysis / Design Specifications
- Rearchitecture Development Duties
- AceDB classes -> API progress matrix (index of classes; see official matrix)
- HOWTO migrate a CGI - quick overview of how to migrate an existing CGI into a Model, Controller, and View. Sparse
Load balancing and Failover
- Building Squid - How to build, install and configure Squid
Administration
- Formal development strategy - An overview of the development process at WormBase -- THE OLD VERSION
- MySQL database replication - Mirroring mysql databases across production nodes
- 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
- Monitoring services and servers - Monitoring services and servers
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