|
|
Line 47: |
Line 47: |
| * Work through our [http://fjord.readthedocs.org/en/latest/getting_started.html Getting started] guide which will walk you through setting up a Fjord development environment for Input development | | * Work through our [http://fjord.readthedocs.org/en/latest/getting_started.html Getting started] guide which will walk you through setting up a Fjord development environment for Input development |
| * Pick a bug that you think you can do from the list on the bottom of our [https://wiki.mozilla.org/Webdev/GetInvolved/input.mozilla.org GetInvolved page] and ask in the comments to have it be assigned to you | | * Pick a bug that you think you can do from the list on the bottom of our [https://wiki.mozilla.org/Webdev/GetInvolved/input.mozilla.org GetInvolved page] and ask in the comments to have it be assigned to you |
|
| |
| === Kinto — Make instances discoverable ===
| |
|
| |
| Mentor: [https://mozillians.org/en-US/u/alexis/ Alexis Métaireau]
| |
|
| |
| ==== Details ====
| |
|
| |
| The [https://kinto.readthedocs.org Kinto project] aims to bring storage instances to everyone, attached to their [https://accounts.firefox.com Firefox Accounts]. It actually supports multiple authentication schemes, but FxA is integrated with it, and that is part of the solution we want to deliver.
| |
|
| |
| Currently, Kinto is thought as a centralized server: there is one instance, and everyone authenticates on this instance. Items are shared between users of a same instance.
| |
|
| |
| This doesn't resonates well with multiple goals we have: scalability is harder when there is one endpoint, and it's also not interoperable.
| |
|
| |
| For instance, imagine Alice and Bob. Bob is using Mozilla's servers to store his data, whereas Alice deployed her own Kinto instance.
| |
|
| |
| There are different use cases:
| |
|
| |
| * Alice wants to use [https://github.com/leplatrem/routina Routina], an application that stores its data inside a Kinto instance. As such, Routina needs a way to discover where it should store its data, and send the requests to this server;
| |
| * Bob and Alice want to collaborate on a set of data (think about a shared expense webapp). There should be a way for Alice to host everything and grant access to Bob to her data. The webapp should be able to use the correct server.
| |
|
| |
| Here are the different steps that could allow these scenarios:
| |
|
| |
| * At the moment they authenticate, the client detects the email address used, and relies on the domain part to do a [https://tools.ietf.org/html/rfc7033 Web Finger] request on the domain (*) and for the specified user.
| |
| * In case the identified server doesn't support WebFinger, it uses a central repository to lookup where the Kinto server is located.
| |
| * Once the Kinto server located, all requests should be issued against this server.
| |
|
| |
| (*) It is also possible to use the same mechanism to discover the FxA endpoints. But as FxA isn't a federated protocol, users from one FxA realm would need to be accepted explicitely by the Kinto server, in its configuration.
| |
|
| |
| In terms of code changes, here is what it looks like (rough step by step):
| |
|
| |
| * Update the [https://github.com/kinto/kinto.js Kinto.js client] to find the server location. It should first rely on WebFinger;
| |
| * Create a central repository of server locations. This could be contained in the FxA profile server or in a central Kinto collection;
| |
| * Update the Kinto.js client to fall-back to this central repository in case no Web Finger exists;
| |
| * Investigate on ways to store this information directly in the web browser. It could also be configurable by the JavaScript client (with
| |
| an UX that looks like [https://remotestorage.io/ what Remote Storage proposes]).
| |
| * Work on the first user experience: how can client learn they can chose which server to use?
| |
| * Ship it!
| |
|
| |
| To get started on Kinto:
| |
| * Read [https://kinto.readthedocs.org the kinto documentation], especially tutorials
| |
| * Join us! Work through our [http://kinto.readthedocs.org/en/latest/contributing.html#communication-channels communication channels] chapter which includes joining the [https://mail.mozilla.org/listinfo/kinto Kinto development mailing list] and joining the #storage channel on irc.mozilla.org
| |