VersionThreeDotO/Foundations

Not logged in - Log In / Register

Revision 6 as of 2008-11-26 19:45:47

Clear message

Priorities for the Foundations team

SP Feature Delivered
3 Make API Cacheable 2.1.9
3 Make API Cacheable - client side 2.1.9
1 YUI Integration 2.1.10
5 JavaScript Testing 2.1.10
5 API JS Access 2.1.10
8 Initial API JavaScript Library 2.1.10
8 Zope 3.4 Upgrade 2.1.10
2 Login-freshness OpenID extension 2.1.11
2 AJAX PATCH 2.1.11
1 Configure access to private teams in +rpconfig 2.1.11
? Prepopulating AJAX cache in-progress
? Entry ETag
? Lazr-JS Green Flash
? Lazr-js Project Bootstrap
? Lazr-JS Reference Widget in progress
3 Inline text editing in progress
? Lazr Error Widget
8 5 minutes PQM merge in progress
? EC2 Test Runner in progress
? Person/Account Separation
? SSO Authentication available during upgrade
3 lazr.config
8 Use zc.buildout for deployment
Automatic JavaScript test running
8 Site-wide notifications
3 Test tree layout improvements
XXX Allowing admins to hide bug and answer comments
5 Nominating spam by users
XXX Update pagetests helpers to use lxml2
API customized auto-generated adapter
1 Export GPG keys through OpenId
XXX Automatic decorator pattern (for performance)
Multi-hit API's
XXX ZCML-less views (Martian integration)
XXX Kill pagetitles.py
XXX Batch navigation to specific pages
XXX Base tabular view
XXX Librarian generation of OOPSes
XXX Sanitize the database dump
XXX Easily set up logging for scripts into a logfile
XXX OOPS zip formats
XXX Include log information in OOPS reports
XXX Include currently running queries in OOPS reports
XXX Include machine process status in OOPS reports
XXX Design for content class split into facets
XXX Upgrade to Python 2.5
XXX Simple status editing
Easy A-B Testing
20 API Versioning
3 Export mutators as writable attributes
8 Expose factory methods for scoped collections
5 Expose factories as POST to collection
5 Make it possible for the default GET on a collection to take optional arguments
3 DELETE resource
1 delete() method in launchpadlib
13 lazr.oops
XXX lazr.testing.pages
XXX Controlled sample data setup
Spam control (via qualification mechanisms)
8 Simple graphing/plotting framework
XXX Storing text edit history
LP Connection Limiting
GPG-activated accounts
20 Wiki markup engine
XXX Generalize Participation (for PackageSets)
Providing an API to update karma events with the object they operate on (Bug:ID, Branch:ID, etc)
XXX Factor out batch notification code

User Stories

This section contains the story cards for the above.

Simple graphing/plotting framework

Story Points: 8

As a mailing list user,
I want to see the number of mailing list posts over time in a graph;
so that I can have an idea of the number of emails I might get when subscribing to the list.

Notes:

Use zc.buildout for deployment

Story Points: 8

As a Launchpad developer,
I want to be able to add a CheeseShop python library by adding a simple dependency to our configuration;
so that I can use and deploy easily non-packaged python library without involving IS.

Notes:

Tree layout improvements

Story Points: 3

As a Launchpad developer,
I want to be able to find the pagetests related to a particular application;
so that I can easily run the pagetests while I work on an application.

Notes:

lazr.oops

Story Points: 13

As python web developer,
I want to download lazr.oops from the Cheeseshop;
so that I can have detailed diagnostic reports of problems on my web application.

Notes:

lazr.config

Story Points: 3

As a python developer,
I want to download lazr.config from the Cheeseshop;
so that I can use it for process configuration in my project.

Notes:

API Versioning

Story Points: 20

As a developer,
I want to be able to annotate certain aspects of the API as being removed from a particular version onward;
so that I can make backward incompatible change.

Notes:

{{{ @export_factory_method_as('new_team', version=3) def new_team_all(...): }}}

Wiki markup engine

Story Points: 20

As a Launchpad user,
I want to be able to enter wiki-like syntax to have rich-text formatting in project description (as well as bug, questions, and comments);
So that I can use typography to convey emphasis and format code-samples properly

Notes:

Site-wide notifications

Story Points: 8

As a Launchpad administrator,
I want to be able to post notifications to users that they will see on every page and can acknowledge;
so that I can announce downtime and other general service-related announcement.

Notes:

Expose factory methods for scoped collections

Story Points: 8

As a developer,
I can annotate a method of an interface to be the method invoked when the client makes a POST request to a scoped collection;
so that the way to use a factory is consistent across resources.

Notes:

Expose factories as POST to collection

Story Points: 5

As a developer,
I can annotate one of a FooSet interface's methods to be the method invoked when the client makes a POST request;
so that the way to use a factory is consistent across resoureces.

Notes:

Nominating spam by users

Story Points: 5

As a Launchpad user,
I want to be able to report any user-editable content as SPAM;
so that Launchpad admins can remove it.

Notes:

Make it possible for the default GET on a collection to take optional arguments

Story Points: 5

As a developer,
I want operation parameters to be supported in the default GET method for a collection;
so that users can use the same HTTP operation to retrieve all of the collection or a filtered subset.

Notes:

DELETE resource

Story Points: 3

As a developer,
I can annotate one of an interface's methods to be the method invoked when the client makes a DELETE request to the appropriate kind of resource;
so that the way to delete resources is consistent.

Notes:

Export mutators as writable attributes

Story Points: 3

As a developer,
I can annotate one of an interface's methods to be the method invoked when the client makes a PUT or PATCH request that modifies the value of a particular field;
so that the interface to modify most attributes is consistent.

Export GPG keys through OpenId

Story Points: 1

As a relaying party,
I want to be able to retrieve GPG keys associated with the user during openid authentication;
so that I can pre-populate their account information.

Notes:

delete() method in launchpadlib

Story Points: 1

As a launchpadlib user,
I can delete a resource by calling the delete() method on the appropriate object.

Notes:

Spam control (via qualification mechanisms)

Story Points: ??

As Launchpad,
I ask every new non-qualified users to enter a captcha on every form;
so that robots cannot post SPAM automatically.

Notes:

LP Connection Limiting

Story Points: ??

As a XXX,
I want XXX;
so that XXX.

Notes:

GPG-activated accounts

Story Points: ??

As a XXX,
I want XXX;
so that XXX.

Notes:

Inline text editing

Story Points: 3

As a Launchpad developer, I want a way to associate an inline text widget with the rendered element of a content field in view, so that I can easily add inline editing to text fields.

Notes:

{{{ view/bug_title_inlinet_widget bug_title_inline_widget = InlineTextWidget(self.context, 'title') }}}

5 minutes PQM merge Theme

Story Points: 8

As a Launchpad developer,
I want a continuous integration system that will notify me when a commit I made breaks the test suite;
so that I can merge to PQM without running tests.

Notes:

EC2 Test Runner

Story Points: ?

As a Launchpad developer,
I want an easy way to run the test suite on EC2;
so that I can submit a branch to PQM with confidence that the test suite will pass.

Person/Account Separation

Story Points: ?

As a Landscape User,
when I registered an account on the SSO service, I don't want a Launchpad profile page created for me,
so that my anonimity is preserved.

SSO Authentication available during upgrade

As a Launchpad SSO user, I want to be able to log in when Launchpad is going through maintenance; so that my other services aren't affected by the monthly Launchpad down-time.

Notes:

>

API customized auto-generated adapter

Story Points:

As a Launchpad developer,
I want to be able to customize the IEntry and ICollection adapters generated automatically by the annotations,
so that webservice-specific optimization might be made, while retaining the convenience of the annotated API.

Notes:

Multi-Hit API

Story Points:

As a webservice client, I want to be able to invoke a particular named operation or setting an attribute to a certain value on a set of objects, so that mass-change operation can be done efficiently.

Notes:

Easy A-B Testing

Story Points:

As a launchpad developer, I want to be able to configure two different views to be served from the same URL, each user receiving a random one, so that I can easily do A-B testing.

Notes:

Automatic JavaScript test running

Story Points:

As a Launchpad developer,
I want my Javascript tests automatically run by PQM on merge;
so that I can prevent regressions in Javascript code.

Notes:

Prepopulating AJAX cache

Story Points: ? Bug: #296456

As a Launchpad programmer,
I want to be able to add objects in the view that will be available from within JavaScript;
so I can present that data or modify it without to have to make an HTTP request.

Entry ETag

Story Points: Bug: 273176

As a Launchpad web service client,
I want to see an entry's ETag in the representation of the entry itself;
so I can make conditional requests on objects that weren't obtained through an individual HTTP request.

LAZR-JS Green Flash

Story Points: Bug:

As a Canonical JS developer,
I want to be able to use a standard green flash animation for
when data has been saved successfully.

Lazr-js Project Bootstrap

Story Points: Bug:

As a Launchpad developer,
I want to develop, test, and publish JavaScript widgets in the lazr-js project,
so I can share JS components with the rest of Canonical.

Lazr-JS Reference Widget

Story Points: Bug:

As a Canonical JS developer,
I want to have a reference implementation of a inline text editing widget;
so that I have an example on how to write widgets.

Lazr-JS Error Widget

Story Points: Bug:

As a Launchpad user,
I want AJAX errors to be reported to a single widget;
so that I can navigate and retry errors.

Notes: