The first week back was consumed with an internal IBM conference and organizing roles and staffing for the new year. The good news - from my perspective at least - is that we will be continuing this cloud exploration project even though I am back full-time at IBM.
A significant decision we took this week was to start to implement a more realistic application, or more accurately a suite of applications that together look like one web site. There were two obvious alternatives - pick something inspired by our own product needs, or pick an IBM customer problem. The latter would have many benefits, but it would us take longer to find a suitable customer organization and get their agreement to share a problem specification with us, so while this might be the preferable longer-term approach, we have decided to defer that for now. For now we will focus on a Rational product scenario. Our choice is to implement what we call "life-cycle concepts". Life-cycle concepts is a term Rational has coined for those concepts that are common to almost all software development tools, and specific to none. Life-cycle concepts are the things that need to be shared and understood by all the members of a development team, regardless of whether they are programmers, testers, requirements engineers, project managers or whatever. Examples are the concepts of projects, products, releases, milestones, team members, accounts and so on. Note that it is not enough to just share the concepts across the team, the actual instances need to be shared too. Because of this, these instances do not really belong in any particular tool (bugs, tests, requirements, code, ...), but need to be referenced by them all.
Working towards this goal, we started constructing a simple wire frame for a UI for these concepts. A design for the names of the concepts and their principal relationships was developed last year by Julian Jones et al and we are building on that work. Since we are programmers with little UI design skill we have been consulting others, most notably Kim Peter, one of Rational's lead UI designers, who has been generous with her time. Currently we are looking at implementing this function in 2 or 3 separate applications (or "services" if you prefer):
- An application that manages accounts and their passwords and logon. Pretty much every site needs some sort of account management, even if it is just an implementation of a strategy to delegate to accounts implemented elsewhere (e.g. Google or Facebook)
- An application that implements the URLs for people and the web documents that describe them. The most common practice is to conflate people and accounts, but this practice has some significant drawbacks in a more distributed world. The deluxe approach is for each person to identify themselves everywhere with a web-registered URL - mine is http://martin-nally.name and I pay a web registrar $10 or $20 a year for it. This "service" will define URLs for people who choose not to take the path I did.
- An application that implements projects with their milestones and products with their releases. Defects are logged against releases and tasks contribute work to milestones.
Another common need for a site is to implement common navigation bars and other common UI elements. This week we implemented an initial version of a service that does this. It needs much more work, but we hope our initial version will set us in the right direction from both the provider and consumer perspective.
Lastly we have made some amount of progress towards a document that describes the high-level implementation design (or "architecture" if you like that word) we propose for our site and we hope more generally for similar sites. we'll POSt a copy here when we are a little further along.