Welcome to Rainbow Portal Community Sign in | Join | Help

Rahul's Notes

Notes on Software Production
Generally speaking the development process in open source projects is very organic and depends on the process. I have seen development in small groups ( 5 people ) to large groups ( 100 people) and have seen the things that work and the things that don't.

If Rainbow is to be commercial grade it has to be developed using at least some of the commercial industry's methods. I think the open source methodology has some merits so here's what I think is a balanced approach to Production.

Product Design:
The Business team's responsibility is to understand and analyze the Customer and conceptualize the best product. There is a great virtue in separating the product decisions from the implementation. Architects from the Production team will be involved in helping define the product as far as what is possible and what isn't.

Product Development:
The Production team's responsibility is to understand the Business team's decisions and implement them in the best way possible.

SANDBOX: "Sandboxes"

Each developer will have their own sandbox so that they can experiment with the software in their own environment with free reign.

DEVINT: "Development/Integration"
Once developers have something concrete, Architects will decide whether or not to integrate the changes into "DEVINT". The Development environment will be used to do the first level of integration and testing. The purpose of the DEVINT environment will be to see what all the developers are working on in one area. Daily builds will be nice, but we will have to atleast start out with weekly builds. The DEVINT environment's purpose is to solidify the work of many people into ONE product. Although "Integration" usually would fall in it's own environment, we're not that big yet.

TEST: "Testing"
After modules and code sections are approved in development, changes can be pushed to Testing from development. The "TEST" environment will be used to do polish up the changes for different types of Testing. There will need to be System Administrators, Designers, Developers, and end Users which will be asked to use and try to break the software.

STAGE: "Staging"
By the time code enters the Staging environment, it's pretty much ready to be shipped. In this environment, everyone from the Business and Production teams will be required to a series of sanity checks to make sure that the product is infact ready for release. You can consider this "Quality Assurance" to a certain degree. Stress Tests might also be done to see that the software can withstand load.

PROD: "Production"
Production is the real thing. This environment is used to create the publically available binaries and source. Most end users will be using the code released from here. The Release Manager's jobs are extremely important. Their deliverable is what thousands of people will use.

How to handle Releases in their respective Environments.

SANDBOX don't have to have any particular release schedule because they are "owned" by individual developers. The DEVINT environment should try to produce a periodic release so that TEST can go through and send back feedback to DEVINT.  Once TEST is satisfied with the product,
STAGE can start tearing it apart for PROD release.

I really don't have much to comment on source control except that it should cater to the environments above. All environments should have their own trunk/tags/branches. The regular releases can go through trunk, and each periodic build should be tagged. Any Emergency fixes/patches should be done as a branch and changes should be manually merged back into trunk.

How to handle multiple products? I will figure this out later. Right now I'm concentrating on getting out a badass 2.0 Rainbow.

Published venerdì 10 febbraio 2006 4.42 by anantatman

Comments

# re: Notes on Software Production @ venerdì 10 febbraio 2006 13.46

Rahul,
Looks pretty standard. I do have a couple questions and comments.

1. Usability Testing - I would encourage EARLY usability testing. One way to do this is through prototyping or mocking up a feature. Other portals are getting increasingly sophisticated in their UI design. It would be great if we had a couple top notch interaction designers working with us to help ensure everything we put out is intuitive and brilliantly conceived. Where will early usability testing be done? Can we recruit someone with a good background in this area to lead the usability testing?

2. When bugs are found, especially show stoppers, what is the process for addressing them? Sometimes things work in the sandbox but break when brought together with others' code. This could certainly be the case when working with things as fundamental as the membership, role, and profile API's. How does this process differ in:

a. DEVINT?
b. TESTING?
c. STAGING?
d. PRODUCTION?

3. One think I've seen work well is to have a dual role defined: business analyst/tester. The business analyst documents the business requirements (not the technical requirements or the design) and also is the tester of those features. This requires someone with good analyst skills and testing skills (I don't think developers generally make good testers).

4. I think this project would benefit from some good requirements gathering and prioritization based on importance from a feature standpoint, but as importantly, from an architectural standpoint.

Yogi

yogi

# re: Notes on Software Production @ venerdì 10 febbraio 2006 17.10

Yogi,

Emergency fixes are handled in "branches" just as a regular release is. It's just that the fix moves are expeditied due to priority. The same branch names of course are used from environment to environment.

e.g. "RB.2006.1.EFX.21" -> Rainbow 2006, Q 1
Release, Emergency Fix 21.

As far as usability testing is concerned. I have taught non-technical as well as technical people how to use the software. I know what frustrates them and me to get simple things done.

I have also worn the hats of the target users, so I know what their goals are and what they are trying to do.

I use a mixture of what my experience has gotten me as well as from such books as Alan Cooper's Inmates are Running the asylum.

Read this to get my point of view on the subject.

http://anant.us/blog/blogs/anant/archive/2005/12/14/inmates_summary.aspx

Requirements.. Well there are too many requirements right now and I am refining exactly what requirements and what features to include in the next public release.

Priorities are being set and right now delivering an extraordinary CMS in a small package is what I'm working on.

I also like to follow something similar to Palm's Zen Tap approach. "if it takes more than 3 taps then its too many taps". I define personas and contemplate what goals they have to achieve. After I have this, I create the best possible sequence of events for them to follow in order to accomplish that goal.

Usability "experts" are ok, but they get a little to purist on me and I really hate that when a product is need NOW. Getting active feedback from our users is the best usability knowledge that I can get. Getting it from students is even better.

It's one thing to make software to help people make websites. It's a totally different thing to outline all the steps for them to carry it out.

anantatman

# A taste of our style. : Progress on Rainbow @ domenica 12 febbraio 2006 14.11

Over the last week, I have been giving a good portion of my time to the Rainbow Project. With the help...

kono

Anonymous comments are disabled
 
Powered by Community Server (Personal Edition), by Telligent Systems