3411
Comment:
|
8539
|
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 52: | Line 99: |
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 75: | Line 122: |
As a Launchpad developer, | As a Launchpad developer, |
Line 80: | Line 127: |
Line 84: | Line 131: |
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 113: | Line 239: |
<<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 == |
|
Line 116: | Line 287: |
**Story Points:** 3\\ | **Story Points:** 2\\ |
Line 119: | Line 290: |
As a Relaying Party,\\ | As a Relying Party,\\ |
Line 121: | Line 292: |
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 295: |
<<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.