Diff for "VersionThreeDotO/Foundations/Delivered"

Not logged in - Log In / Register

Differences between revisions 2 and 5 (spanning 3 versions)
Revision 2 as of 2008-11-24 22:58:58
Size: 3411
Editor: flacoste
Comment:
Revision 5 as of 2009-01-11 21:31:47
Size: 7210
Editor: flacoste
Comment:
Deletions are marked like this. Additions are marked like this.
Line 4: Line 4:
== API Theme ==
Line 5: Line 7:
== Make API Cacheable == === Make API Cacheable ===
Line 25: Line 27:
== Make API Cacheable - client side == === Make API Cacheable - client side ===
Line 35: Line 37:
<<Anchor(api-customized-auto-generated-adapter)>>
=== API customized auto-generated adapter ===

  **Story Points:** ?\\
  **Bug:** [[https://bugs.edge.launchpad.net/launchpad-foundations/+bug/294858|#294858]].

  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.

<<Anchor(entry-etag)>>
=== Entry ETag ===

  **Story Points:** ?\\
  **Delivered:** 2.1.12
  **Bug:** [[https://bugs.edge.launchpad.net/launchpad-foundations/+bug/273176|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.


== AJAX Theme ==
Line 52: Line 81:
 
Line 59: Line 88:
  so that I can detect regressions in Javascript code. 

  **Notes:**
  
  so that I can detect regressions in Javascript code.

  **Notes:**
Line 65: Line 94:
   * Hook the window fire-up and results reading from test.py or make?     * Hook the window fire-up and results reading from test.py or make?
Line 67: Line 96:
 

<<Anchor(api-js-access)>> 


<<Anchor(api-js-access)>>
Line 75: Line 104:
  As a Launchpad developer,    As a Launchpad developer,
Line 80: Line 109:
  
Line 84: Line 113:
  
Line 100: Line 129:
<<Anchor(ajax-patch)>>
=== AJAX PATCH ===

  **Story Points:** 2\\
  **Delivered:** 2.1.11\\
  **Bug:** [[https://bugs.edge.launchpad.net/launchpad-foundations/+bug/29645|#29645]]

  As a Launchpad programmer,\\
  I want to make the equivalent of a PATCH request through Ajax;\\
  so I can modify an object without having a representation of it.

<<Anchor(lazr-js-green-flash)>>
=== LAZR-JS Green Flash ===

  **Story Points:** ?\\
  **Delivered:** 2.1.12

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


<<Anchor(lazr-js-framework)>>
=== Lazr-JS Project Bootstrap ===

  **Story Points:** ?\\
  **Delivered:** 2.1.12

  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.


<<Anchor(lazr-js-reference-widget)>>
=== Lazr-JS Reference Widget ===

  **Story Points:** ?
  **Delivered:** 2.1.12

  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.

<<Anchor(lazr-js-error-widget)>>
=== Lazr-JS Error Widget ===

  **Story Points:** ?
  **Delivered:** no use cases

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

  **Notes**:
    * See beuno's screenshot.
    * Must be available to all widgets.
    * Event-driven.
    * The use cases where such a widget would realy be useful weren't clear.
    Back to the design board.


<<Anchor(prepopulating-ajax-cache)>>
=== Prepopulating AJAX cache ===

  **Story Points:** ?\\
  **Delivered:** 2.2.1
  **Bug:** [[https://bugs.edge.launchpad.net/launchpad-foundations/+bug/296456|#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.


== Infrastructure Theme ==
Line 113: Line 221:
<<Anchor(ec2-test-runner)>>
=== 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.


== OpenID Theme ==
Line 116: Line 237:
  **Story Points:** 3\\   **Story Points:** 2\\
Line 119: Line 240:
  As a Relaying Party,\\   As a Relying Party,\\
Line 121: Line 242:
  the Launchpad OpenID Provider,\\ 
  so that I can minimize the possibility of somebody just reusing an 
  the Launchpad OpenID Provider,\\
  so that I can minimize the possibility of somebody just reusing an
Line 124: Line 245:


<<Anchor(private-team-rpconfig)>>
=== Configure access to private teams in +rpconfig ===

  **Story Points:** 1\\
  **Bug:** [[https://bugs.edge.launchpad.net/launchpad-foundations/+bug/192867|#192867]]

  As a Launchpad administrator,\\
  I want to be able to configure if a trust root can query private \\
  team memberships, so that we can offer the team membership functionality \\
  to arbitrary RP.

User Stories Delivered

API Theme

Make API Cacheable

Story Points: 3
Delivered: 2.1.9

As a web service client,
I get a Last-Modified date with each representation I request. I can use that data later on to make conditional GET, PUT, or PATCH requests.
We do this because conditional GET saves bandwidth and often time, and conditional PUT/PATCH prevents clients from overwriting each others' work.

Notes:

  • Modify launchpadlib to use the new headers
  • Store Last-Modified
  • Calculate the headers for objects. No Last-Modified for collections.

Make API Cacheable - client side

Story Points: 3
Delivered: 2.1.9

As a launchpadlib user,
ll GET requests I send have their Last-Modified headers stored for later. Subsequent GET or PATCH requests are made conditional using the stored value.

API customized auto-generated adapter

Story Points: ?
Bug: #294858.

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.

Entry ETag

Story Points: ?
Delivered: 2.1.12 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.

AJAX Theme

YUI Integration

Story Points: 1
Delivered: 2.1.10

As a Launchpad developer, I want to be able to use YUI from a page template, so that I can do cool UI.

Notes:

  • Build/Package YUI files
  • Add to main template, with switch for dev mode.

JavaScript Testing

Story Points: 5
Delivered: 2.1.10

As a Launchpad developer, I want to write a tests for my Javascript, be able to run it locally from the command line; so that I can detect regressions in Javascript code.

Notes:

  • Create YUI 2.5.2 bundle
  • Server the bundle from icing
  • Hook the window fire-up and results reading from test.py or make?
  • Presumed Rhino and Doh can do it (Dojo)

API JS Access

Story Points: 5
Delivered: 2.1.10

As a Launchpad developer, I want to be able to use the Launchpad web service API from JavaScript, so that I can use the standard API to manipulate the content from the UI.

Notes:

  • Somehow call the WebService publisher and Request for different vhosts.
  • Support canonical_url for API objects on other hosts.
  • Add the cookie-based authentication to WebServicePublication.

Initial API JavaScript Library

Story Points: 8
Delivered: 2.1.10

As a Launchpad developer, I want a JS library available that allow me to easily make API call to the Launchpad web service, so that I can access the Launchpad object model without having to write custom XHR request and interpret the resulting JSON.

Notes:

AJAX PATCH

Story Points: 2
Delivered: 2.1.11
Bug: #29645

As a Launchpad programmer,
I want to make the equivalent of a PATCH request through Ajax;
so I can modify an object without having a representation of it.

LAZR-JS Green Flash

Story Points: ?
Delivered: 2.1.12

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: ?
Delivered: 2.1.12

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: ? Delivered: 2.1.12

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: ? Delivered: no use cases

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

Notes:

  • See beuno's screenshot.
  • Must be available to all widgets.
  • Event-driven.
  • The use cases where such a widget would realy be useful weren't clear. Back to the design board.

Prepopulating AJAX cache

Story Points: ?
Delivered: 2.2.1 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.

Infrastructure Theme

Zope 3.4 Upgrade

Story Points: 8
Delivered: 2.1.10

As a Launchpad developer, I want to have zope 3.4 available in my tree, so that I can take advantage of the latest changes in it.

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.

OpenID Theme

Login-freshness OpenID extension

Story Points: 2
Delivered: 2.1.11

As a Relying Party,
I want to specify the maximum time since the user entered his password on the Launchpad OpenID Provider,
so that I can minimize the possibility of somebody just reusing an already authenticated session.

Configure access to private teams in +rpconfig

Story Points: 1
Bug: #192867

As a Launchpad administrator,
I want to be able to configure if a trust root can query private
team memberships, so that we can offer the team membership functionality
to arbitrary RP.

VersionThreeDotO/Foundations/Delivered (last edited 2009-04-21 13:20:28 by flacoste)