Diff for "VersionThreeDotO/Foundations/Delivered"

Not logged in - Log In / Register

Differences between revisions 1 and 7 (spanning 6 versions)
Revision 1 as of 2008-11-24 22:25:43
Size: 3009
Editor: flacoste
Comment:
Revision 7 as of 2009-02-01 13:21:25
Size: 8539
Editor: flacoste
Comment:
Deletions are marked like this. Additions are marked like this.
Line 4: Line 4:
== API Track ==
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.

  **Notes:**

    No real use cases was found for this feature.


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

  **Story Points:** 3\\
  **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.


<<Anchor(mutator-as-writable-attribute)>>
== Export mutators as writable attributes ==

  **Story Points:** 3\\
  **Delivered:** 2.1.12

  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.


== AJAX Track ==
Line 38: Line 85:
  **Story Points:** 1   **Story Points:** 1\\
Line 52: Line 99:
 
  **Story Points:** 5

  **Story Points:** 5\\
Line 59: Line 106:
  so that I can detect regressions in Javascript code. 

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

  **Notes:**
Line 65: Line 112:
   * 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 114:
 

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


<<Anchor(api-js-access)>>
Line 72: Line 119:
  **Story Points:** 5
  **Delivered:** 2.1.10

  As a Launchpad developer, 
  **Story Points:** 5\\
  **Delivered:** 2.1.10

  As a Launchpad developer,
Line 80: Line 127:
  
Line 84: Line 131:
  
Line 89: Line 136:
  **Story Points:** 8   **Story Points:** 8\\
Line 100: Line 147:
<<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:** 2\\
  **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:** 1\\
  **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:** 5
  **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:** 5
  **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:** 3\\
  **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 Track ==
Line 103: Line 229:
  **Story Points:** 8   **Story Points:** 8\\
Line 111: Line 237:


<<Anchor(ec2-test-runner)>>
=== EC2 Test Runner ===

  **Story Points:** 3

  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.


<<Anchor(lazr.config)>>
=== lazr.config ===

  **Story Points:** 3
  **Delivered:** 2.1.12

  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:**
    * Why not brand it as canonical? Find a top-level package name.
    * Missing some documentation.
    * Convert setup tools.
    * Reorganize project directory structure.
    * License? For all of lazr?


<<Anchor(5-minutes-pqm-merge)>>
=== 5 minutes PQM merge ===

  **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:**
    * Need to deploy only known good branch.
    * Uses buildbot.

== OpenID Track ==

<<Anchor(login-freshness-openid-extension)>>
=== 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.


<<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 Track

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.

Notes:

No real use cases was found for this feature.

Entry ETag

Story Points: 3
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.

Export mutators as writable attributes

Story Points: 3
Delivered: 2.1.12

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.

AJAX Track

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: 2
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: 1
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: 5 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: 5 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: 3
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 Track

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: 3

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.

lazr.config

Story Points: 3 Delivered: 2.1.12

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:

  • Why not brand it as canonical? Find a top-level package name.
  • Missing some documentation.
  • Convert setup tools.
  • Reorganize project directory structure.
  • License? For all of lazr?

5 minutes PQM merge

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:

  • Need to deploy only known good branch.
  • Uses buildbot.

OpenID Track

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)