Accessibility: Build Plan

Table of contents

Scope

A build plan for the Accessibility team's efforts in bringing accessibility to mono by implementing the managed UI Automation framework.

Build Team

Stephen Shaw (aka decriptor)
Ray Wang (aka Ray)

Full A11y team

Build Meetings

As needed on irc

Where: #mono-a11y on irc.gimp.org

Outline

Deliverables

Intervals
  • Maybe disk images with everything pre-installed?
Software

Packages from our codebase:

mono-uia

  • UIAUtomationBridge.dll
  • UIAutomationClient.dll
  • UIAutomationProvider.dll
  • UIAutomationSource.dll
  • UIAutomationTypes.dll

uiaatkbridge

  • UiaAtkBridge.dll
  • libbridge-glue.so

uiautomationwinforms

  • UIAutomationWinforms.dll

uiadbus

  • UiaDbus.dll
  • UiaDbusBridge.dll
  • UiaDbusSource.dll

atspiuiasource

  • AtspiUiaSource.dll

Moonlight UIA

  • novell-moonlight-a11y.xpi

Note: This might change as this is still being developed.

FAQ:

  • Why not include UIAtomoationWinForms.dll in mono-uia.rpm? This layout would allow one user to install moonlight accessibility but not Windows.Forms accessibility (by installing uiaautomationmoonlight but not uiaautomationwinforms).
  • Why not include UiaAtkBridge.dll in mono-uia.rpm? This layout would allow one user to install UIA without bridging to ATK technology (that is, using UIA Clients to inspect UIA Servers).

Other Packages

at-spi-sharp

  • at-spi-sharp.dll
Possible Packages
  • iron python


Packages Dependencies

  • libgdiplus-2.4
  • mono-core-2.4
  • mono-winforms
  • mono-winfxcore (part of mono as of 2.6)
  • gtksharp-2.12
    • gtksharp-2.12.7 for 0.9.1
    • gtksharp-2.12.8 for 1.0.0
  • at-spi2-core
  • at-spi2-atk


Current Build Systems

Hudson

  • UIAutomation
  • UiaAtkBridge
  • UIAutomationWinforms
  • mono/mcs
  • gtk-sharp2
  • moonlight
  • moonatkbridge
  • firefox
  • at-spi2
  • at-spi-sharp


OBS

   nightly builds
   currenty released
 

Build Distributions

Current

  • openSUSE 11.1
  • openSUSE 11.2
  • SLE 11
  • Fedora 12
  • Ubuntu 9.10

Future (definite)

  • openSUSE 11.3
  • Fedora 13
  • Ubuntu 10.4

Distros that have packaged it (or parts of it)

  • Debian
  • Mandriva

Build Architectures

Current

  • i586
  • x86_64

Build risk issues

This section describes any risks resulting from lack of time and/or resources.

  • New deliverable files that aren't currently handled in the build file, ie. .spec
  • Code that compiles with errors
  • Missing dependencies


General Guidelines

  • All builders shall be on the team IRC channel (#mono-a11y on irc.gimp.org) during work hours.

  • Builds shall be automated whenever possible. Time constraint is not a good excuse not to automate.


Suspension criteria and Resumption requirements

Suspension criteria:

  • Unavailability of external packages/dependencies
  • Source Code no longer compiles
  • A specific holiday shuts down both development and testing.
  • Build servers become unavailable

Resumption requirements:

  • Consider building those dependencies
  • Find out who was working on that code and contact them
  • The holiday period ends.
  • Building resources become available

Build preparation and setup

set of tasks necessary to prepare for and perform a build

Individual Preparation:

  • Have access to the build server
  • Correct packaging files (spec/deb)
  • Available jail for distro/arch
  • RPMs for latest dependencies

Environmental needs

Hardware, software, data, interfaces, facilities, publications, other requirements that pertain to the testing effort

Build Servers with root jails for each of the various architectures and distributions. This is largely taken care of by the build service and osc. osc creates jails on the fly.


Hardware:

Currently there are 2 build servers (build0 and build1) There are now several other machines

Build0
  • openSUSE 11.2 32 bit
  • hudson master
  • osc tools
Build1
  • openSUSE 11.2 64 bit
  • hudson slave
  • osc tools
  • location of per rev svn snapshot rpm
Architectures
  • i586
  • x86_64
Software:
  • Hudson
  • OBS
  • osc
  • nunit

Responsibilities

Coordinate Build Maintain Hudson Maintain OBS Maintain Patches Nightly Builds Weekly Builds Release Builds
Stephen Shaw (Build Engineer) X X - X X - X
Ray Wang (Build Engineer) - - X - - X X

Staffing needs

  • Build Engineers
    • Programming experience with C#, Python, and bash
    • Build Engineer experience
    • Autotools experience
    • Build system experience
    • Solid Linux experience in the command line (CLI)
    • Writing rpm and/or deb build files experience

Anyone interested in learn/helping with build is welcome to join our team.

Schedule

Built around the roadmap

Based on Q2 in roadmap, our initial testing schedule is below:

Task Start Time End Time Percent complete Owner Notes
Update/Maintain build page on A11y pages July Stephen & Ray Ongoing
Design build plan July July Stephen & Ray Stephen needs to inform Ray of this page :)
Build Initial RPMs and Make sure they work! June July Stephen & Ray done, moved to continuous builds
Install Build servers June July Stephen
Set up build environments July July Stephen & Ray Build0 is the hudson master and Build1 is the slave
Get full build server access to Ray July July 100% Stephen Depends on servers being installed
First Release Dec 2008 100% Stephen & Ray Provider
Next Release 2009 100% Stephen & Ray On hold until 0.9 is ready for release
Build 1.0 2009 100% Stephen & Ray On hold until 1.0 is ready for release
Post 1.0 work 2009 0% Stephen & Ray Anything that comes after 1.0

Ongoing tasks

Task Owner Notes
Maintain Mono Accessibility wiki build pages A11y build team As new information or decisions come about
Adjust for patches and new packages A11y build team When other packages require them
... A11y build team ...

Risks and contingencies

Any activity that jeopardizes the building schedule is a planning risk

  • Any major changes in development (causing delays)


References

The Product roadmap
The Architecture overview
The Novell & Microsoft announcement to create cross-platform accessibility framework

Build Systems

http://www.mono-project.com/BuildSystem/MonoBuild MonoBuild---The current mono build system. We have tied into this for the time being.

https://build.opensuse.org/ OBS---This is a really cool build system that can handle several different distributions and architectures

Build plan identifier

Build Plan versions

ID Level Software Version Modify Time Author
Accessibility-BP-V0.1 Draft N/A 07-03-2008 Decriptor
Accessibility-BP-V0.9 Draft N/A 02-12-2009 Decriptor
Accessibility-BP-V1.0 Draft N/A 01-06-2010 Decriptor
Accessibility-BP-V1.1 Draft N/A 05-06-2010 Decriptor