The OSAF Hosted Service will manage a "Preview" release in synchronization with the overall OSAF effort. The important tracking items are:

This effort is composed of these following "must have" tasks:

Additional Preview "nice-to-haves" tasks are:

Some inactive tasks for the service include:

Milestones

These major milestones are important to track for the OSAF Hosted Service Preview launch.

2007-01-24: Place production server order

2007-01-30: Terms of service tenets and revised draft available

2007-02-04: osaf.us updated to Cosmo 0.6.0 (with data migration)

2007-02-05: Preview metrics list drafted

2007-02-15: osaf.us/ shows web presence (instead of Cosmo redirect)

2007-02-18: Final domain name secured

2007-02-20: Metrics infrastructure running regularly to produce updates

2007-02-20: Production hardware up at colo

2007-02-24: osaf.us also available via final domain name

2007-02-28: osaf.us updated to Cosmo 0.6.1 (with data migration)

2007-03-05: Metrics available on dashboard

2007-03-10: Public help email (for password changes, etc) available

2007-03-15: Final name, marks, domain, and URLs

2007-03-25: NOC runbook available

2007-03-25: Presence revised to incorporate final name and domain in copy and marks

2007-03-30: Web presence look-and-feel at sufficient quality, signed-off

2007-03-30: osaf.us updated to Cosmo 0.7.0 (with data migration)

Dependencies and support needed

To achieve the OSAF Hosted Service Preview launch, the following dependencies need to be met and resources made available:

Dependencies

Solution branding

Solution name

Hosted service full name

Logo graphical mark (vector)

Cosmo production releases

Chandler production releases

Domain name registration

Legal council for terms of service

Resources

Visual design and production graphics for web presence

Copy proofing

QA (specifics TBD)

KEI IT

Barracuda spam filtering

Ticket tracking system (RT) and dedicated queues

NOC (Network operations center)

Colocation space (6U)

Bandwidth (<1mbps)

Web presence

Last update: 2006-01-19

Goal

Provide a simple, but complete web presence for service; a "wrapper" around Cosmo.

Context

Currently, most URLs direct to Cosmo homepage; wrapper placeholder available at osaf.us/dashboard

Should have a consistent design and look-and-feel with other OSAF properties

Service should probably "sit inside" the same site (domain) as other products

Timeline

2007-02-15: osaf.us/ shows web presence (instead of Cosmo redirect)

Wireframe

Match cosmo.o11n.org/chandler.o11n.org design using osaf.us

Signoff on final service naming

2007-02-18: Final domain name secured

2007-02-24: osaf.us also available via final domain name

2007-02-20: Wireframe of integrated site proposed

2007-03-01: Review of proposed marks

2007-03-15: Final name, marks, domain, and URLs

2007-03-25: Presence revised to incorporate final name and domain in copy and marks

2007-03-30: Web presence look-and-feel at sufficient quality, signed-off

Effort

Registration of domain names

Redo current site with chandler/cosmo.o11n.org look-and-feel

Acquire/procure primary domain names

Make any secondary additional domain names/redirects operational

Finalize name and marks for hosted service

Service full name: Chandler Foo

Vector of full service logo

Bitmaps at useful sizes

Migrate new domain into simultaneous usage as osaf.us

Acquire and configure the domain name used for the Preview hosted service

Prepare backend and maintenance mechanism for "status of the service" page

Finalization of formal terms of service

Preparation of usage documentation, customer FAQs, etc

Good-enough art direction, graphical design, and copywriting for all osaf.us-specific web content

Polish to high-quality, commercial standards

Make XHTML compliant

Issues

Need to develop service/org-wide "sitemap"

Blocked, pretty much, until branding and domain final

Possible overlap/confusion with Cosmo design/look-and-feel

Need brand-wide URL design/discussions to determine final implementations

Need to revamp existing spec to attempt alignment with single-brand

Need to determine full name of service. Proposal include "Chandler Service" and "Chandler Online".

Acceptance criteria

Service homepage on final domain name

Specifications "must have" (below) included

Should be capable of dynamic and session-based operations

URL namespace is documented, clean, and extensible

Implementation

Backend in Python dynamic content technology

Probably just extend the existing Myghty implementation

Preview specifications

Early draft specifications. Additional updates, review, and integration of these lists is pending.

Must have components

Homepage

Terms of service. Privacy policy.

Email address for support

Getting additional help

Signup

Log in

Free signup and usage

Usage docs

List of clients supported

"How to configure client X" docs

Favicon (ICO format for IE6 support)

Nice-to-have components

Template synced/identical with other landing areas

Short-domain URLs (www redirects to base domain) for main web presence

Separate "status of service" site (chandler.info)

Blog (with Atom feed)

Wiki

Forum

Ticket web UI

Copy: relationship to OSAF

Copy: relationship to Cosmo

Copy: relationship to Chandler desktop

Assets

Domain names

.com, .org, .net, .info, .mobi, .us, international

Trademark

Service mark

Copyright

Graphics elements

Page components

Left nav

About

Signup

Help

Blog

Bottom nav

Terms

Privacy

Help

Copyright

Help

Contacting us

Service FAQs

Links to client usage docs

Links into OSAF wiki

Links to Chandler usage

Links to Cosmo usage

Links for Outlook, iCal, Evolution, Sunbird/Lightning

"How to set up clients" documentation

Outlook 2007 (Webcal) configuration

Outlook 2003 (TBD) configuration

iCal 2.x (Webcal) configuration

Sunbird/Lightning (CalDAV) configuration

Evolution (CalDAV) configuration

Errors

404 page

500 page

"All other errors" page

Service page patterns:

http://twitter.com/

http://www.icalshare.com/faq.php

Hosted service ontology

Server

Production server

Staging server

Metrics

Dashboard

Cosmo

Interop

Outlook 2003/ics

Outlook 2007/webcal

iCal 2.x/webcal

iCal 3.x/CalDAV

Evolution/CalDAV

Email clients

SMS

Cosmo 0.6 update

Last update: 2006-12-31

Goal

Update osaf.us production service to Cosmo 0.6 release

Context

Currently awaiting release

Estimated release date Jan 30, 2007

Need to run a data migration

Timeline

Now until release: test

2007-02-02: Cosmo 0.6.0 is released

2007-02-04: osaf.us updated to Cosmo 0.6.0 (with data migration)

2007-02-26: Cosmo 0.6.1 is released

2007-02-28: osaf.us updated to Cosmo 0.6.1 (with data migration)

2007-03-28: Cosmo 0.7.0 is released

2007-03-30: osaf.us updated to Cosmo 0.7.0 (with data migration)

Effort

Test migration

Run migration

Watch for errors

Issues

Production data migration

URL changes

Acceptance criteria

Wide acceptance after migration that new system is working

Implementation

Update punchlist

Installation of release candidate, with full migrated data

Manual test against release candidate

Cosmo 0.6 final release

Announce upcoming release and downtime

everyone@osafoundation.org, general@osafoundation.org

service-users@osaf.us

Specific 2 hour window announced 3 days ahead of time

Build new Tomcat and Cosmo instance: dogfood-03 on host app-dogfood

Service manager signoff to begin downtime

Switch on "service is down" mode: no changes

Run migration

Scripted procedure:

lab: /home/osaf.us/bin/manage stop,rebuild,configure mig06-test-post

lab: time /home/osaf.us/bin/mig-test

lab: /home/osaf.us/bin/manage start mig06-test-post

Down production instance: dogfood-02

Take final backup of production database: cosmo_dogfood_02

Take copy of final backup to use as import file

Update import file to use InnoDB for all tables

Update import file to use UTF-8 for all tables

Drop/create database cosmo_dogfood_03

Import the import file into cosmo_dogfood_03

Add three needed foreign key constraints to production tables

Run Cosmo 0.5-0.6 migration application on cosmo_dogfood_03

Take a copy of post-migrated DML-only, no schema structure

Drop/create cosmo_dogfood_03 database

Start dogfood_03 instance to recreate fresh cosmo_dogfood_03 schema

Stop dogfood_03 instance

Drop all rows from all cosmo_dogfood_03 tables

Import DML-only copy of migrated data

Start dogfood_03 instance

Turn on "service is up" mode

Run spot-check

Homepage

Root login

User login

User calendar

Runtime unit test

Announce on IRC

Collect feedback for 20 minutes of OSAF staff checks

Announce on service-dev

Announce on blog ==== Changes

Support casual collaborator workflows

Include logging features

New signups now require round-trip email validation

Production servers

Last update: 2007-01-14

Goal

Move OSAF Hosted Service to a set of servers capable of supporting a large number of users, specifically targeted for 10k regular Chandler users.

Context

Should be in place in and well tested perhaps a month before Preview launch

Timeline

2007-01-24: Place production server order

2007-02-20: Production hardware up at colo

Effort

Specify servers

Get quote

Place order

Receive order

Install OS

Configure OS

Install into colocation

Deprecate/shut-off cosmo-demo

Server specifications

1x server, 8 cores, 500Gb disk space (more is better)

CPU 2x Quad-core Intel Xeon LGA771 1333FSB 8MB

RAM 8x 4Gb FB PC5300 667Mhz ECC DDR2

Disk 8x 300Gb 15K SAS 3.5" hard drives

Hardware SAS RAID 8x card with battery backup

Redundant (N+1) power supply, hot-swap

Dual gig-E NICs

DVD-R slim drive

Rack sliding rails

3 year warranty

Procurement execution

To be run by KEI IT

Purchase date: 2007-01-20

Probable vendor: ASA Computers

Probable CPU: Xeon Clovertown 5355 2.66Ghz

Possible chassis: SuperServer 6025B-3RB 2U

Possible RAID: Adeptec 4805SAS

Probable drives: Seagate Cheetah 15K.5 300Gb 3.5" ST3300655SS 5 Year Warranty

Configuration

Debian Etch 64-bit

RAID 1+0 (3-disk RAID 0 sets, mirrored) + 2 hot spares

Partitioning 1Gb boot, 50Gb root, 50Gb spare, rest LVM physical

/home on 100Gb LV

/var on 300Gb LV

Accounts for Jared, Dave

Drive bays numbered and checked

Software

JRockit R27.0 in /opt

Runit

Tomcat+Cosmo in /home/cosmos/

/home/osaf.us working area

Apache 2.2 with reverse proxy as runit service

Cosmo 0.6.0 instance as runit service

mysql-server-5.0 package

Vendor RAID management package (as runit service)

NTP synchronization via chrony

Installation checklist

Versions of OS, architecture are correct

Available via IP KVM

Managed power is available

Dual power supplies are installed

Labeled with hostname and contact

Boots from scratch in final position, no-hands

Timezone, hwclock, localtime, and NTP are all working after final boot, no-hands

Strategy

We don't really know if the application server or the database server portions of this configuration will "max out" first on this box. We have the ability, on pre-clustered versions of Cosmo, to separate the database onto a separate machine, yielding a 2-box cluster. Beyond that, we will (likely) need development support to properly support a very large user population.

Metrics infrastructure

Last update: 2007-01-25

Goal

Address core issues needed to collect base metrics

Context

Technically, it's about more than the hosted service metrics; the overall community metrics are important to track and integrate too.

There's a few existing codebases which will likely be updated, integrated, and/or rewritten.

Metrics-related features can be rolled out incrementally.

Effort required pretty much scales linearly with the number of metrics and reports implemented (once a base infrastructure for analysis is complete).

Timeline

2007-02-05: Preview metrics list drafted

2007-02-15: osaf.us has at least two metrics being regularly submitted to time-series web service

2007-02-20: Metrics infrastructure running regularly to produce updates

2007-03-05: Metrics available on dashboard

Launch+20d: Improved dashboard

Effort

Now

2h: Create metrics VM

Define "core management" metrics (list of 5)

Later

8h: Update the prototype time-series web service to CherryPy 3.0

Define full list of preview metrics available

15h: Build lightweight, dynamic, Python dashboard framework

8h: Write prototype code to parse Cosmo 0.6 access log

Issues

This work is a little behind; we should already have a shortlist of needed metrics agreed upon.

It's a little hard to specify properly until one really sees the data produced by new-logging-style Cosmo 0.6 in production.

More work is necessary to distinquish "metrics" (single numbers) from "reports" (tables/drill-down)

Are we ok with a fully-public metrics system?

Acceptance criteria

Running regularly

Some counts of daily visitors broken down by user profile

A dashboard page is available to see the resulting analysis

Implementation

(Strawman) list of "core management" metrics: Total number of unique visitors this week (broken down by category) Number of signups this week Number of Chandler downloads Retention analysis (users still using after 30/60/90/180/360 days of signup)

Dashboard has two base features: a graph of the "recent" history of the monitored metrics, and an ability to retrieve the history in a CSV format.

(Strawman) list of "preview" metrics: - People chandler users per week casual collaborators per week consultative users per week standalone users per week interop users per week number of signups per day percentage accesses by various clients - Traffic total hits per day total bandwidth (in/out) per day - Community number of Chandler downloads per week

Architecture

Metrics are built on top of each other. From raw information, some "base" metrics are calculated. By combining (addition, subtraction, multiplication division, statistics, time analysis) the base metrics, additional metrics ("derived metrics") are calculated. All metrics carry units, which carry all the semantics and context of each metrics.

The hosted service metrics framework consists of three main components: Collection scripts Time-series web service * Dashboard

Most metrics are based on a time-series, which means measurements taken over time. Time-series metrics have handy properties, like being easy to visualize (ie, turn into graphs). They are useful for spotting trends that are important to product and strategic management.

Design tenets

We are very interested in "how many people are using our services", this lets us measure our impact on the public and guides our potential for sustainability. The most interesting metrics will therefore revolve around usage, people, frequency, and user profiles.

If the guiding principle is to "count people", propose core metric is "number of visitors per week", broken down into major user profiles:

chandler users per week

casual collaborators per week

consultative users per week

standalone users per week

interop users per week

So primary tenets for Preview metrics are:

Counting number of people using the system, matching user profiles, is a requirement

Community metrics should be revamped before Preview

Retention rates are very important to overall management, but complicated to implement. A "number of people using this week divided by total number of accounts signed up" will need to be included to serve as a primitive retention metric.

Two critical scaling factors are: 1) rate of updates, and 2) rate of synchronization. Rate of synchronization is hard, and we know what the default is for Chandler at least. But "average number of changes per day" should be included in Preview metrics.

Details

Additional dimensions:

Change of events vs change of other stamps

Read vs writes

Authenticated versus anonymous

Recency, frequency, depth

Bandwidth

Performance

Low hanging fruit:

total hits per day

total bandwidth

total accounts accessed per day

chandler users per day

anonymous hits per day

percentage breakdown of chandler users by OS/platform

percentage breakdown of chandler user by version ID

percentage breakdown of all user agents

percentage breakdown by top-level domain

percentage of users from domains "probably" outside US

number of emails submitted to support queue

number of signups per day

number of authenticated logins per day

average number of items per collection

average number of collections per user

Important, non-trivial:

retention

consultative, standalone, mashup usage percentages

depth, average session length/ops

number of updates via chandler per user

getting user counts vs hit counts (interop users per day kinda hard)

weekly views of all "per day" metrics, in order to smooth daily fluctation, and better match spread-out usage patterns.

number of casual collaborators per chandler hub user

Need platform support:

Add authenticated user to Tomcat access_log

Clear marker for successful logins

Clear marker for anonymous access to collection

Clear marker for Chandler update

Clear marker for via-web-UI update

Clear marker for names of people using Cosmo UI

Implementations:

chandler visitors per day: distinct accounts accessed with authenticated access users with chandler user-agent

casual collaborators per day: "entry" urls followed using anonymous authentication to shared collection

consultative users per day: distinct accounts accessed with authenticated access with cosmo ui who have accessed with a chandler-user agent in the last 7 days

standalone users per day: distinct accounts accessed with authenticated access with non-chandler user-agent who have not accessed with a chandler-user agent in the last 7 days

interop users per day: distinct authenticated accounts acccess with non-chandler user agents, or maybe all accesses to non-cosmo UI URLs

retention: number of users who have had an access with 30 days of signup, 60 days, 90d, 180d, 1y

Help system

Last update: 2006-12-30

Goal

Provide a clear help and support system for service users

Context

Currently have internally-published addresses

OSAF will not build service capacity ahead of the demand for it.

Support labor costs are a large component of operational costs and should be kept low; self-service is assumed to major component of how we'll manage the customer support load.

Timeline

2007-02-01: Internal-review draft available

2007-03-10: Public help email (for password changes, etc) available

Preview: TOS published on web site

Effort

Have internal review of last-state

Identify legal representation

Acceptance criteria

Reviewed by lawyer

Posted on site

Easy-to-find on site

Implementation

Publish help@osaf.us on the service homepage

help@osaf.us goes through KEI Barracuda and then into KEI RequestTracker instance and a service-specific queue. Submissions initially emailed to service-dev as well for audit and awareness.

Terms of service

Last update: 2006-01-19

Goal

Provide service customers a clear, published terms of service and privacy policy.

Context

Currently awaiting re-kickoff.

A substantial portion of work was done by pro-bono lawyer 12 months ago. Should use that as a base.

Terms of service must be in line with OSAF values.

The service will be used by both authenticated/personal-account access, as well anonymous users (say via tickets). Terms need to be broad.

Timeline

2007-01-19: Legacy draft document distributed internally

2007-01-30: Terms of service tenets and revised draft available

2007-02-05: Primary lawyer resource identified

2007-02-25: Pretty-darn-solid draft available

2007-03-25: Post final TOS document

Effort

Now

Define tenets

Review existing draft

Identify Preview lawyer who will review/update/sign-off on TOS

Later

Integrate comments into new draft

Finalize draft

Post terms of service

Issues

Need to strike nice balance of protections and tone

Need to identify lawyer resource

Need to pick a name to refer to the service by in the TOS. First draft says "OSAF Service". Current best proposal is "Chandler Service".

What constitutes acceptance of the terms? Implicit in any anonymous or authenticated use?

What belongs in a TOS vs a privacy policy?

Any additional

If a user "owns their data", and you lose or break their data, need to carefully disclaim liability or assume risk.

Would like to maintain "common carrier" status and avoid assuming publisher risk.

Subject to any handicap-accessibility regulations?

Pre-set usage maximums or just say "reasonable"?

Acceptance criteria

Protects OSAF

Protects customers

Reviewed by lawyer

Posted on site

Easy-to-find on site

Implementation

Pick up last TOS developed for our service. Distribute around. Fix up and integrate comments. Have reviewed by one more lawyer. Signoff internally. Post publicly.

We'll review a few other terms of service for ideas: - http://twitter.com/tos - http://code.google.com/tos.html

Specifications

Some work Jared did inititally (2005) to define tenets, needed terms, and other specifications can be dug up someday. We'll probably start with a new, community list.

Terms of service tenets

Plain language

You own your data. We will provide mechanisms for you to retrieve the contents of any records or data you store in our service.

You can't sue us if we lose or corrupt your data, or if you can't get to your data.

We will not sell, rent, or otherwise make available your account information, data, or transaction history to anyone. Except where required to be handed over by law.

We can revise these policies.

You won't do things that endanger the viability of the service for others. This can mean "too much" usage, illegal usage, attacks on other accounts, etc.

Standard terms: Jurisdiction, Severability, Limitations of liability to fees paid, No Warranty, Indemnification, Entire Agreement, Internet not under our control, Assignment,

Additional terms

No fees for usage

We need to be able to monitor the system, possibly inspect your data during debugging or service investigations.

We comply with DCMA. We'll try to contact you, and will protect your rights, but your data may be taken down.

Strategy

A clear, well-posted, user-friendly terms of service is an strong consumer expectation for any hosted service. OSAF should satisfy this requirement and provide a good terms of service.

Blog

Last update: 2007-01-08

Goal

Provide an easy-to-track, lightweight channel channel for people to track changes to the service.

Context

Not a must-have for Preview, but having something would be nice.

Easy to do if it starts as just an "announce" channel, so as to skip comment-related effort.

Timeline

Target 2007-01-12: Have all comments checked, with simple HTML page having all announcements

Target 2007-02-15: Have home-page "last 3" announcements in-line with a more link

Target 2007-03-01: Single-page HTML and RSS feeds in production

Effort

Now

Implement a read-only blog

Seed blog with historical postings

Later

Update to a best-practices blog

Acceptance criteria

Users can subscribe via RSS to a list of service announcements

Implementation

Baby steps

Collect all posts into individual files (format probably XHTML snippet). Name them so they sort lexically in a directory. Update the Myghty web site wrapper to process them and put them on a page, both HTML and ATOM.

Order: 1) single-page with all; 2) home-page blurb; 3) RSS feeds; 4) comments

Strategy

Support service-to-consumer communications. In particular, broad announcement channels help to manage rapid changes possible in early-phase services.

Metrics dashboard

Last update: 2007-01-08

Goal

Provide product management, business development, and promotional insight by showing core metric trends visually on a web page.

Strategy

Business aphorism: you can't manage what you can't measure.

The dashbaord provides the primary presentation of metrics maintained for the hosted service. The dashboard selects a few "core metrics" and presents them well and in context with other metrics.

Of the hundreds of possible metrics, it's inevitable that management attention and focus become centered on a smaller shortlist of core metrics. These receive priority attention in the dashboard.

Context

Need a backend implementation of core metrics before presentation.

Traditionally, we're talking graphs or tables kept up-to-date on an HTML page.

There's a basic daily and weekly analysis codebase available that will likely be reused.

Issues

Open to the public or password-protected only? Would love to just do it all public and retract some later if needed.

Implementation

Need a graphing engine.

Inclined to keep around all source data and generate graphs as-needed. Avoid RRD implementation (round-robin) data backend for now (and thus probably avoid RRD graphs).

Timeline

Target 2007-02-15: Firstgraphs on dashboard page

Runbook

Timeline

2007-03-25: NOC runbook available

Goal

To document systems operations procedures sufficiently to provide solid guidance to network operations staff.

To upgrade to a new production instance of Cosmo on osaf.us:

Edit /home/osaf.us/conf/cosmo-service-instance.conf. Find the old production configuration stanza, and mostly cut-and-paste it into a new instance definition. You will need to decide:

instance root (/home/cosmos/INSTANCE is the standard)

Cosmo and Snarf SVN URLs and revision numbers

MySQL database name

Tomcat HTTP port number (and shutdown port number)

Reverse proxy configuration Save the configuration file.

Create the new instance: sudo -u cosmo /home/osaf.us/bin/manage build,start INSTANCE_NAME

Check in changes into osaf.us svn repository.

A data-preserving update is a separate procedure, which needs
further exploration and definition in this runbook.

To update an instance's configuration:

Edit /home/osaf.us/conf/cosmo-service-instance.conf. Tweak what you need, probably a port number or something.

Run: sudo -u cosmo /home/osaf.us/bin/manage stop,config,start INSTANCE_NAME

You can also reconfigure multiple instances in one command by
placing additional instance names on the bin/manage command line,
spearated by spaces.  This is useful for taking one instance off the
proxy_port config, and putting another one into that config quickly.

The production hardware:

Production Cosmo+Postgres server

ASA Computers

1x SuperServer 6025B-3RB 2U

2x Xeon Clovertown 5355 2.66Ghz

8x Seagate Cheetah 15K.5 300Gb 3.5" ST3300655SS 5 Year Warranty

1x Adeptec 4805SAS, battery backup

Debian Etch 64-bit

RAID 1+0 (3-disk RAID 0 sets, mirrored) + 2 hot spares

Partitioning 1Gb boot, 50Gb root, 50Gb spare, rest LVM physical

/home on 100Gb LV

/var on 300Gb LV

JRockit R27.0 in /opt

Runit

Tomcat+Cosmo in /home/cosmos/

/home/osaf.us working area

Apache 2.2 with reverse proxy as runit service

Should get user-friendly error pages when Cosmo is down and with

Apache keeps three files. HTTP access (extended common log format), error log (Apache logging), and Apache detailed format. Uses cronolog for rotation.

Tomcat keeps access log (common log format), cosmo log (osafsrv.log).

Nagios configuration (provides NOC-level availability alerts) - Production service HTTP:80 is up - "Runtime integration test" script succeeds (signup, put, get, report, webcal, delete)


You are viewing a mobilized version of this site...
View original page here

Mobilized by Mowser Mowser