Difference between revisions of "Developer documentation"

From WormBaseWiki
Jump to navigationJump to search
 
(139 intermediate revisions by 10 users not shown)
Line 1: Line 1:
 
This page contains information pertinent to employees of WormBase.  
 
This page contains information pertinent to employees of WormBase.  
 +
 +
= Navigating and Editing the Developer Documentation =
 +
 +
 +
 +
== [[:Category:Web Dev| Web Dev Category Hierarchy (Under Construction)]] ==
 +
 +
'''You will be able to navigate the Developer Documentation by browsing through the [[:Category:Web Dev| Web Dev Category Hierarchy (Under Construction)]] above, which is under construction right now. In the mean time, please browse through this page or search for information that you need.'''
 +
 +
<categorytree mode=pages showcount="on" hideroot="on" depth=4 >Web Dev</categorytree>
 +
 +
== How to Contribute to the Documentation ==
 +
If you'd like to help out adding to the documentation, that's great! Here is some general good practice that will help keeping the documentation organized, navigable and up to date.
 +
* Ensure a page is tagged with a category, when you add or edit a page. You can browse through our [[:Category:Web Dev| high level categories]] and locate the '''most specific category''' that describes your page.
 +
<blockquote> For example, include the following code at the bottom of a page will make the page appear under the category [[:Category: Getting Started (Web Dev)]] :
 +
 +
<code><nowiki>
 +
[[Category: Getting Started (Web Dev)]]
 +
</nowiki></code>
 +
 +
</blockquote>
 +
 +
* '''Update''', deprecate or remove old documentation when appropriate.
 +
 +
* Any documents that contain potentially '''sensitive information''' belong on Google Docs (Contact Todd for details). This might reasonably include anything that reveals information about '''our systems or architecture'''.
 +
 +
* Additional guidelines on [[Documentation and Communication Standards]]
 +
 +
* '''Other ideas?''' Please update the wiki here!
 +
 +
= New Employee Orientation =
 +
* [https://docs.google.com/document/d/1E37IgK1gsaw6ZXa3cYFz2HPVPuB__KmNs5tErO6VXDY/pub New Employee Orientation] -- ''Getting started at WormBase, for employees at any location. Read this first.''
 +
* [https://docs.google.com/document/d/1Xm1aQTm7zXapfirgD1PP7KWNjPlXHNw_iaLLAVvZ-Gg/pub Webdev team/OICR Orientation] -- ''For new employees of the web development team at OICR.''
 +
*[[Co-op Documentation]]
  
 
= Project Management =
 
= Project Management =
*[[Project Calendar|Project Calendar]]  
+
*[[Project Calendar|Project Calendar (Google)]]
*[[Conference call agendas and minutes]]
+
 
 +
==== Conference call agendas/minutes ====
 +
 
 +
*[[Conference calls| Conference call agendas and minutes (All WormBase)]]
 +
*[[Conference call agendas and minutes| Conference call agendas and minutes (WebDev team)]]
 
*[[Project meeting agendas and minutes]]
 
*[[Project meeting agendas and minutes]]
 +
*[[InterMine Strategy Meetings]]
 +
 +
==== Source Code Repositories ====
 +
 +
''We use the distributed source code management system git.  Projects are hosted on [http://github.org/WormBase Github].''
  
 +
*[http://github.org/WormBase/website website] - ''The WormBase web application (public)''
 +
*[http://github.org/WormBase/website-admin website-admin] - ''Administrative code (private)''
 +
 +
Recommended reading (learning git):
 +
* [http://try.github.io/levels/1/challenges/1 try.gihub.io]
 +
 +
= General Documentation =
 +
*[[Co-op Documentation]]
 
*[[SOPs|Internal documentation and standard operating procedures]]
 
*[[SOPs|Internal documentation and standard operating procedures]]
 +
*[[Feature WishList]]
 +
 +
= The Web Application =
  
= Website Releases =
+
* [[Website:Application overview|Application overview]] - ''An overview of the web application, including MVC structure, request flow, caching, etc''
 +
* [[Website:Configuration|Configuration]] -- ''Application and view configuration: formatting and standards''
 +
* [[Website:WormBase::API|WormBase::API]] -- ''The WormBase data model, maintained external to the web application''
 +
* [[Website:View| View]] -- ''Templating system, commom template elements, javascript, and CSS''
 +
* [[Website:Model| Model]] -- ''The web application model; thin, glued to the external Model''
 +
* [[Website:Controller| Controller]] -- ''Overview of controller files and actions''
 +
* Genome Browsing
 +
** [[Website:GBrowse Set-up on dev.wormbase.org|GBrowse Set-up on dev.wormbase.org]] -- "Updating/rolling-back GBrowse installations on a per user basis"
 +
** [[Website:Genome Browser Survey|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"
  
*[[Website:Version 1.0]] - ''Feature list and objectives for the 1.0 release of the website''
+
* [[Website:WormMine| WormMine]] -- ''How to install, update, and maintain the InterMine instance at WormBase''
 +
** [[Website:WormMine Builds]] -- Summary stats of WormMine builds
 +
*[[Website:Contribute_from_GitHub|Contribute from Github]]
  
 +
== The Mobile Website ==
 +
* [[Website:Mobile| Mobile]] -- ''Overview of the mobile website''
 +
* [[Website:MobileRouter| Router]] -- ''A definition of the possible routes of the mobile website''
 +
* [[Website:MobileModels| Models]] -- ''Details about the models''
 +
* [[Website:MobileCollections| Collections]] -- ''Details about the collections''
 +
* [[Website:MobileViews| Views]] -- ''Details about the views''
 +
* [[Website:MobileWidgets| Widgets Porting]] -- ''Details about the porting of widgets in the mobile website/app''
 
= Data Model and Data Development =
 
= Data Model and Data Development =
  
Line 18: Line 92:
 
*[[Suggested pre-release data checks|Suggested pre-release data checks]]  
 
*[[Suggested pre-release data checks|Suggested pre-release data checks]]  
 
*[[modENCODE Analysis & metadata discussion|modENCODE Analysis & metadata discussion]]
 
*[[modENCODE Analysis & metadata discussion|modENCODE Analysis & metadata discussion]]
 +
*[[modENCODE Integration status|modENCODE Integration status]]
 
*[[Genome sequence changes]]
 
*[[Genome sequence changes]]
 
*[[WormBase Genomes]]
 
*[[WormBase Genomes]]
 +
*[[GFF Release Data and Changes]]
  
= Web Site Development Guidelines =
+
= Development Guidelines =
 
+
* [https://docs.google.com/a/wormbase.org/document/d/1jps4_bTrsR-Km0QTKk3ENRckbKyK3y8jZwSvq3rh2lo/pub Setting up your development environment] -- ''How to set up your development environment on dev.wormbase.org''
'''Documents pertaining to WormBase 2.0'''
+
*[https://docs.google.com/a/wormbase.org/document/d/1ONNKWe82OL5oZoPBmQ3nOZ_EZuzDfjbVpYvMkjnfULc/edit#heading=h.3t2png3rdgj8 Developer Resources at WormBase] -- ''Available developer resources, including the shared development space''
*[[Website:Development Milestones|Development Milestones]]
+
*[https://docs.google.com/document/d/1zIOm95tV9A14n9xnkPkMgiOTGcOIzx161y9UbDZvfW4/pub WormBase Release Workflow] -- ''Project-wide schedule that documents what is happening when and where. ([[WormBase Release Workflow|original wiki version)]]''
*[[Website:Design Specifications|Requirements analysis / Design Specifications]]
+
*[[Development_workflow_-_webdev|Formal Development Strategy]] -- ''An overview of the development process at WormBase''
*[[Website:Rearchitecture Development Duties|Rearchitecture Development Duties]]
+
*[[Documentation and Communication Standards|Documentation and Communication Standards]]
* [[AceOjbect_Redesign_Page|AceDB classes -> API progress matrix]] (index of classes; see [https://spreadsheets.google.com/a/wormbase.org/ccc?key=tygSYCz49YW5hyCcYMHUZ1Q#gid=2 official matrix])
 
 
 
 
 
*[[Formal_development_strategy|Formal development strategy]] - ''An overview of the development process at WormBase''
 
 
*[[Coding standards|Coding standards]]  
 
*[[Coding standards|Coding standards]]  
 
*[[Developer_notes|Developer notes]] -- ''Best practices, conventions, etc''
 
*[[Developer_notes|Developer notes]] -- ''Best practices, conventions, etc''
 
*[[Browser Support Statement]] -- ''official graded browser support statement''
 
*[[Browser Support Statement]] -- ''official graded browser support statement''
*[[Review Call Agenda and Minutes]]
 
  
= The Web Application =
+
== Testing ==
 +
*[[Unit Testing]]
  
* [[Website:Application overview|Application overview]] - ''An overview of the web application, including MVC structure, request flow, caching, etc''
+
== Help us maintain the site ==
* [[Website:Configuration|Configuration]] -- ''Application and view configuration: formatting and standards''
+
*[[Website:Contribute from GitHub|Contribute from GitHub]]
* [[Website:WormBase::API|WormBase::API]] -- ''The WormBase data model, maintained external to the web application''
 
* [[Website:View| View]] -- ''Templating system, commom template elements, javascript, and CSS''
 
* [[Website:Model| Model]] -- ''The web application model; thin, glued to the external Model''
 
* [[Website:Controller| Controller]] -- ''Overview of controller files and actions''
 
  
 
= Information for third party developers =
 
= Information for third party developers =
Line 55: Line 123:
 
'''Software Platform'''
 
'''Software Platform'''
 
*[[Administration:Installing WormBase|Installing WormBase]] - ''How to get a basic installation of WormBase up and running''
 
*[[Administration:Installing WormBase|Installing WormBase]] - ''How to get a basic installation of WormBase up and running''
 +
*[[Administration:Installing WormMine|Installing WormMine]] - ''How to get a basic installation of  WormMine up and running''
 
*[[Administration:WormBase Production Environment|Production Environment]] - ''Building and Maintaining the WormBase production environment; extends the "Installing WormBase" document''
 
*[[Administration:WormBase Production Environment|Production Environment]] - ''Building and Maintaining the WormBase production environment; extends the "Installing WormBase" document''
 
* [[GBrowse Administration]] -- ''building, configuring, and maintaining production GBrowse nodes.''
 
* [[GBrowse Administration]] -- ''building, configuring, and maintaining production GBrowse nodes.''
Line 62: Line 131:
 
*[[WormBase_Infrastructure|Hardware Platform]] - ''A complete accounting of WormBase compute resources.
 
*[[WormBase_Infrastructure|Hardware Platform]] - ''A complete accounting of WormBase compute resources.
  
== Updates ==
+
== Software Life Cycle ==
* [[Updating The Development Server]] - ''Staging a new release of the database on the development server''
+
* [https://docs.google.com/a/wormbase.org/document/d/1oPpj8d5gibUc-gpUZorl6ETT5baE6mp-v2bMedKauiA/ Software Life Cycle: 1. Build] -- ''Preparing a new release for the website''
* [[Updating The Production Servers]] - ''Testing, staging, and deploying the web app; updating to a new release of the database''
+
* [[Software Life Cycle: 2. Software development period|Software development period]] - ''Once a new database has been staged, the development phase begins in earnest on private development sites''
 +
* [[Software Life Cycle: 3. QA/QC and Performance Benchmarking|QA/QC and Performance Benchmarking]] - ''Integrating changes and staging the code for QA/QC and performance testing prior to deployment''
 +
* [https://docs.google.com/a/wormbase.org/document/d/1KlweWzfxc9-uKxR1dJwuPfR4NPJs-H1S8Yxg_V1Ha8U/edit#heading=h.e2m5ps3gnzcs Software Life Cycle: 4. Production] -- ''Deploying a new release to production''
 +
 
 +
== Measuring Application Performance ==
 +
 
 +
* [[Website:Testing_And_Profiling|Unit Testing and Profiling]] - ''Testing and profiling protocol for the web application''
 +
* System Testing
 +
* [[Website:Validation|Standards Validation]] - ''Validation of HTML, CSS, XML''
 +
* Security Assessment
 +
* Accessibility
 +
* [[Website:Usability Testing|Usability Testing]] - ''usability testing strategies and evaluation''
 +
* [[Website:Browser Compatibility Statement|Browser Compatibility Testing]] - ''browser support matrix and testing protocol''
 +
* [[Website:Load Testing|Load Testing]] - ''Performance and load testing; historical benchmarks''
 +
----
  
 
== Routine Administration Tasks ==
 
== Routine Administration Tasks ==
* [[Testing|Testing]] - ''Testing guidelines for the web application and hardware platform''
 
* [[Website:Profiling|Profiling]] - ''Profiling the web application, performance tuning, identifying memory and I/O bottlenecks, and historical benchmarks''
 
 
* [[Cronjobs|Cronjobs]] - ''a full accounting of all cronjobs at WB''
 
* [[Cronjobs|Cronjobs]] - ''a full accounting of all cronjobs at WB''
 
* [[Creating_a_Google_Sitemap|Creating a Google Sitemap]] - ''how to tell Google which URLs to index''
 
* [[Creating_a_Google_Sitemap|Creating a Google Sitemap]] - ''how to tell Google which URLs to index''
Line 76: Line 157:
  
 
== Monitoring and Crises Management ==
 
== Monitoring and Crises Management ==
*[[Crises Recovery Plan|Crises Recovery Plan]] - ''Everything breaks. Here's how to fix it.''
+
*[https://docs.google.com/a/wormbase.org/document/d/18oRqTtC-q1P1bPyLAjo4XkqMGzepPi5Be1w7CfLuzg8/edit?hl=en_US Crises Recovery Plan] - ''How to diagnose and recover from service interruptions.''
* [[General_administration|General administration and monitoring notes]] - ''Partially redundant, sorry''
+
*[https://docs.google.com/a/wormbase.org/document/d/18G-lemZ0zKXraQlzXqNmsUCWwZmjuUHIipF6uRd0R0k/edit Monitoring services and servers] - ''Keeping tabs on the production architecture''
*[[Monitoring services and servers|Monitoring services and servers]] - ''Current version of the document''
 
  
 
== Frozen Releases ==
 
== Frozen Releases ==
 
*[[Building Frozen Releases]] - ''The most current documentation on how to build a frozen release''
 
*[[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 [http://bitbucket.org BitBucket].''
 
 
[[WormBase Source Code|How-To create, check out, and manage our repositories]]
 
 
*[http://bitbucket.org/tharris/wormbase WormBase] - ''The WormBase web application (public)''
 
*[http://bitbucket.org/tharris/wormbase-admin WormBase-admin] - ''Administrative code (private)''
 
  
 
= Deprecated Documentation =
 
= Deprecated Documentation =
Line 96: Line 167:
 
''The good word gone bad. Cruft. Lint. Maybe useful. Probably not.''
 
''The good word gone bad. Cruft. Lint. Maybe useful. Probably not.''
  
== Load balancing and Failover  ==
+
==== Rearchitecture ====
*[[Building Squid|Building Squid]] - ''How to build, install and configure Squid''
+
*[[Website:Development Milestones|Development Milestones]]
 
+
*[[Website:Design Specifications|Requirements analysis / Design Specifications]]
== Rearchitecture ==
+
*[[Website:Rearchitecture Development Duties|Rearchitecture Development Duties]]
 +
* AceDB classes -> API progress matrix (index of classes; see [https://spreadsheets.google.com/a/wormbase.org/ccc?key=tygSYCz49YW5hyCcYMHUZ1Q#gid=2 official matrix])
 
*[[HOWTO migrate a CGI|HOWTO migrate a CGI]] - ''quick overview of how to migrate an existing CGI into a Model, Controller, and View. Sparse''
 
*[[HOWTO migrate a CGI|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|Building Squid]] - ''How to build, install and configure Squid''
  
 
+
==== Administration ====
 +
*[[Formal_development_strategy|Formal development strategy]] - ''An overview of the development process at WormBase'' -- THE OLD VERSION
 
*[[MySQL database replication|MySQL database replication]] - ''Mirroring mysql databases across production nodes''  
 
*[[MySQL database replication|MySQL database replication]] - ''Mirroring mysql databases across production nodes''  
 
*[[Trac installation notes|Trac installation notes]]
 
*[[Trac installation notes|Trac installation notes]]
Line 109: Line 184:
 
* [[Establishing the SVN repository]] - ''Setting up the subversion repository''
 
* [[Establishing the SVN repository]] - ''Setting up the subversion repository''
 
* [[Managing GBrowse]] - ''Quick HowTo for managing GBrowse in development and production environments''
 
* [[Managing GBrowse]] - ''Quick HowTo for managing GBrowse in development and production environments''
 +
*[[Website:Monitoring services|Monitoring services and servers]] - ''Monitoring services and servers''
  
== Frozen Releases as Virtual Machines ==
+
==== Frozen Releases as Virtual Machines ====
 
* [[How_to_build_a_WormBase_Virtual_Machine|How to build a WormBase Virtual Machine]] -- ''also describes how to create a VMX for a frozen release''
 
* [[How_to_build_a_WormBase_Virtual_Machine|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|Configuring a server to host virtual machines]] -- ''quick guide to setting up a frozen release server''
 
* [[Configuring_a_server_to_host_virtual_machines|Configuring a server to host virtual machines]] -- ''quick guide to setting up a frozen release server''
Line 116: Line 192:
 
* [[How_to_build_a_frozen_release|How to build a frozen release]] -- ''how to configure a WormBase VM as a frozen release server''
 
* [[How_to_build_a_frozen_release|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''
 
* [[Creating Virtual Disks]] - '' How to create VMDKs for unlimited portable storage''
 
 
 
 
  
  
 
[[Category:Developer documentation]]
 
[[Category:Developer documentation]]

Latest revision as of 18:25, 18 June 2014

This page contains information pertinent to employees of WormBase.

Navigating and Editing the Developer Documentation

Web Dev Category Hierarchy (Under Construction)

You will be able to navigate the Developer Documentation by browsing through the Web Dev Category Hierarchy (Under Construction) above, which is under construction right now. In the mean time, please browse through this page or search for information that you need.

<categorytree mode=pages showcount="on" hideroot="on" depth=4 >Web Dev</categorytree>

How to Contribute to the Documentation

If you'd like to help out adding to the documentation, that's great! Here is some general good practice that will help keeping the documentation organized, navigable and up to date.

  • Ensure a page is tagged with a category, when you add or edit a page. You can browse through our high level categories and locate the most specific category that describes your page.

For example, include the following code at the bottom of a page will make the page appear under the category Category: Getting Started (Web Dev) :

[[Category: Getting Started (Web Dev)]]

  • Update, deprecate or remove old documentation when appropriate.
  • Any documents that contain potentially sensitive information belong on Google Docs (Contact Todd for details). This might reasonably include anything that reveals information about our systems or architecture.
  • Other ideas? Please update the wiki here!

New Employee Orientation

Project Management

Conference call agendas/minutes

Source Code Repositories

We use the distributed source code management system git. Projects are hosted on Github.

Recommended reading (learning git):

General Documentation

The Web Application

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

Data Model and Data Development

Development Guidelines

Testing

Help us maintain the site

Information for third party developers

Administration

Architecture

Software Platform

Hardware Platform

Software Life Cycle

Measuring Application Performance


Routine Administration Tasks

Monitoring and Crises Management

Frozen Releases

Deprecated Documentation

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

Rearchitecture

Load balancing and Failover

Administration

Frozen Releases as Virtual Machines