Development Workflow
The ICT is responsible for many different web sites that support the organizing effort. This page is a general description of how to the ICT collaboratively develops these web sites and software used to power the US Social Forum.
You may also be interested in reviewing our toolset.
There are many sites in the ussf2010.org family, however, there are only three that are under active development by the ICT team:
- http://www.ussf2010.org/: the main brochure-like web site
- https://community.ussf2010.org/: the registration and donation site (running CiviCRM)
- http://organize.ussf2010.org/: the social networking site and workshop submission site (running Organic Groups)
We have three stages of workflow for our sites. Development environments are copies of the sites developers run on their own computers and are used for modifying and testing code, Sandbox sites are for trainings and for staging new changes prior to pushing them live, and live sites are the actual live versions of each site.
With a team of developers working on multiple sites it would be easy for one user to accidentally overwrite the changes of another user. To avoid this situation, we use a revision control system called git. Here's a helpful starter on learning git.
A revision control system allows multiple developers to check out a copy of the code to their development machine, make and test changes, and then check in their code for other people to see and review.
Developer sites
If you are interested in checking out and running a copy of the code used to develop the three USSF web sites, you are welcome to do so.
You must have:
- A working Apache, MySQL, and PHP environment that has mod Rewrite enabled (See clean URLs. Depending on your operating system, you can find more information about setting up a development environment for Debian/Ubuntu, Windows, or Macintosh.
- git installed and working on your computer
- An installed copy of drush (not absolutely required, but useful).
Cloning the code for read-only access
To work on the organize.ussf2010.org site, you would type the following command for read-only/anonymous access:
git clone git://git.ussf2010.org/organize.git
To work with the www.ussf2010.org site you would type:
git clone git://git.ussf2010.org/ussfhome.git
To work with the community.ussf2010.org site you would type:
git clone git://git.ussf2010.org/community.git
Developing the code (read/write access)
Requires read/write access (provided you have been given write access):
organize.ussf2010.org
git clone gitosis@git.ussf2010.org:organize.git
www.ussf2010.org
git clone gitosis@git.ussf2010.org:ussfhome.git
community.ussf2010.org
git clone gitosis@git.ussf2010.org:community.git
Additional Setup
These commands will create a directory called organize or ussfhome or community which contains a directory called web. This web directory should be configured as your document root (a.k.a DocumentRoot in Apache lingo).
You will need to copy the web/sites/default/default.settings.php to web/sites/default/settings.php and manually edit the database information to reflect the database setup on your local development environment.
Next, contact ict@lists.ussf2010.org to receive a copy of the our working database.
And lastly, please see the directions for handling Drupal Views.
Sandbox sites
Every site managed by the ICT has a live version (e.g. community.ussf2010.org).
In addition, we have sandbox sites for both the main web site (sandbox.ussf2010.org) and the community site (community.sandbox.ussf2010.org).
The sanbox sites are password protected (user: sandbox, pass: sandbox - password intended to keep our robots and accidental tourists). They are provided to allow us to publish new functionality for feedback without making non-fully tested features available on the live sites. The sanbox sites are also available for training purposes.
Periodically, we need to synchronize the sandbox site to the live site so it reflects the most recent changes. You can sync the sandbox sites using the following methods:
community.sandbox.ussf2010.org
Note: The community sandbox site does not include the database of people from the live site for privacy reasons.
To sync the community sandbox site with the live community site:
- Pull the latest changes from the git repository:
ssh ussf2010-sandbox@mendes.mayfirst.org "cd community.sandbox.ussf2010.org && git pull"
- Sync the database (note: you must have access to ussf2010-community user)
ssh ussf2010-community@mendes.mayfirst.org "sync-civi-to-sandbox && sync-drupal-to-sandbox"
sandbox.ussf2010.org (the main web site)
To sync the sandbox site for the main web site with the live www.ussf2010.org web site:
- Pull the latest changes from the git repository:
ssh ussf2010-sandbox@mendes.mayfirst.org "cd sandbox.ussf2010.org && git pull"
- Sync the database (note: you must have access to the ussf2010 user)
ssh ussf2010@mendes.mayfirst.org sync-drupal-to-sandbox
Live site
Revision Manager
We are currently simply pushing all changes to the head of the master repo and then:
For organize.ussf2010.org, ssh into mendes.mayfirst.org as the ussf2010-organize user and then type:
cd organize.ussf2010.org/web # fetch changes git fetch # view changes git diff origin/master # merge changes git merge origin/master
For www.ussf2010.org, ssh into mendes.mayfirst.org as the ussf2010 user and then type:
cd www.ussf2010.org/web # fetch changes git fetch # view changes git diff origin/master # merge changes git merge origin/master
For community.ussf2010.org, ssh into mendes.mayfirst.org as the ussf2010-community user and then type:
cd community.ussf2010.org/web # fetch changes git fetch # view changes git diff origin/master # merge changes git merge origin/master
We should be using tags and have a more thought out process for pushing changes to the live site...
Testing
Because we want to ensure that our websites are cross-browser and accessibility compliant, a series of test must be passed before our sites can be launched.
web content accessibility guidelines (WCAG): http://www.etre.com/tools/accessibilitycheck/
multiple browser checking: http://browsershots.org/ or http://ipinfo.info/netrenderer/ (doesn't suport ssl)
