Revision 66f6dfc2

b/docs/source/devguide.rst
25 25
=========================  ================================
26 26
Revision                   Description
27 27
=========================  ================================
28
0.5 (July 19, 2011)        Object update from another object's data.
28
0.5 (July 21, 2011)        Object update from another object's data.
29 29
\                          Support object truncate.
30 30
\                          Create object using a standard HTML form.
31 31
\                          Purge container/object history.
32 32
\                          List other accounts that share objects with a user.
33 33
\                          List shared containers/objects.
34
\                          Update implementation guidelines.
34 35
0.4 (July 01, 2011)        Object permissions and account groups.
35 36
\                          Control versioning behavior and container quotas with container policy directives.
36 37
\                          Support updating/deleting individual metadata with ``POST``.
......
932 933
* The ``others`` element, which contains all objects that other users share with the user.
933 934
* The ``tags`` element, which lists the names of tags the user has defined. This can be an entry point to list all files that have been assigned a specific tag or manage tags in general (remove a tag completely, rename a tag etc.).
934 935
* The ``groups`` element, which contains the names of groups the user has defined. Each group consists of a user list. Group creation, deletion, and manipulation is carried out by actions originating here.
936
* The ``history`` element, which allows browsing past instances of ``home`` and - optionally - ``trash``.
935 937

  
936 938
Objects in Pithos can be:
937 939

  
......
941 943
* Made public (shared with non-Pithos users).
942 944
* Restored from previous versions.
943 945

  
944
Some of these functions are performed by the client software and some by the Pithos server. Client-driven functionality is based on specific metadata that should be handled equally across implementations. These metadata names are discussed in the next chapter. 
946
Some of these functions are performed by the client software and some by the Pithos server.
945 947

  
946
Conventions and Metadata Specification
947
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
948
Implementation Guidelines
949
^^^^^^^^^^^^^^^^^^^^^^^^^
948 950

  
949
Pithos clients should use the ``pithos`` container for all Pithos objects. Object names use the ``/`` delimiter to impose a hierarchy of folders and files.
951
Pithos clients should use the ``pithos`` and ``trash`` containers for active and inactive objects respectively. If any of these containers is not found, the client software should create it, without interrupting the user's workflow. The ``home`` element corresponds to ``pithos`` and the ``trash`` element to ``trash``. Use ``PUT`` with the ``X-Move-From`` header, or ``MOVE`` to transfer objects from one container to the other. Use ``DELETE`` to remove from ``pithos`` without trashing, or to remove from ``trash``. When moving objects, detect naming conflicts with the ``If-Match`` or ``If-None-Match`` headers (**TBD**). Such conflicts should be resolved by the user.
950 952

  
951
At the object level, tags are implemented by managing metadata keys. The client software should allow the user to use any string as a tag and then set the corresponding ``X-Object-Meta-<tag>`` key at the server. The API extensions provided, allow for listing all tags in a container and filtering object listings based on one or more tags. The tag list is sufficient for implementing the ``tags`` element, either as a special, virtual folder (as done in the first version of Pithos), or as an application menu.
953
Object names should use the ``/`` delimiter to impose a hierarchy of folders and files.
952 954

  
953
The metadata specification is summarized in the following table.
955
The ``shared`` element should be implemented as a read-only view of the ``pithos`` container, using the ``shared`` parameter when listing objects. The ``others`` element, should start with a top-level ``GET`` to retrieve the list of accounts accessible to the user. It is suggested that the client software hides the next step of navigation - the container - if it only includes ``pithos`` and forwards the user directly to the objects.
954 956

  
955
===========================  ==============================
956
Metadata Name                Value
957
===========================  ==============================
958
X-Object-Meta-*              Use for other tags that apply to the object
959
===========================  ==============================
957
Public objects are not included in ``shared`` and ``others`` listings. It is suggested that they are marked in a visually distinctive way in ``pithos`` listings (for example using an icon overlay).
958

  
959
At the object level, tags are implemented by managing metadata keys. The client software should allow the user to use any string as a tag and set the corresponding ``X-Object-Meta-<tag>`` key at the server. The API extensions provided, allow for listing all tags in a container and filtering object listings based on one or more tags. The tag list is sufficient for implementing the ``tags`` element, either as a special, virtual folder (as done in the first version of Pithos), or as an application menu.
960

  
961
A special application menu, or a section in application preferences, should be devoted to managing groups (the ``groups`` element). All group-related actions are implemented at the account level.
962

  
963
Browsing past versions of objects should be available both at the object and the container level. At the object level, a list of past versions can be included in the screen showing details or more information on the object (metadata, tags, permissions, etc.). At the container level, it is suggested that clients use a ``history`` element, which presents to the user a read-only, time-variable view of ``pithos`` contents. This can be accomplished via the ``until`` parameter in listings. Optionally, ``history`` may include ``trash``.
960 964

  
961 965
Recommended Practices and Examples
962 966
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Also available in: Unified diff