summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Siefkes <christian@siefkes.net>2009-10-09 18:37:19 +0200
committerChristian Siefkes <christian@siefkes.net>2009-10-09 18:37:19 +0200
commit9da7250ac27d992b50fc6021f3d46292e641ef13 (patch)
tree34be1faf5c6bf03473b9068d58fb09576e2dceda
parent51e740ac391fdc97135e3fa3195375f661fc030d (diff)
downloadtangiblebit-9da7250ac27d992b50fc6021f3d46292e641ef13.tar.gz
tangiblebit-9da7250ac27d992b50fc6021f3d46292e641ef13.zip
More on package files
-rw-r--r--doc/objects.html74
-rw-r--r--doc/objects.rst80
2 files changed, 135 insertions, 19 deletions
diff --git a/doc/objects.html b/doc/objects.html
index d3f8cf9..8d712be 100644
--- a/doc/objects.html
+++ b/doc/objects.html
@@ -312,7 +312,10 @@ as follows:</p>
</li>
<li><p class="first"><em>name:</em> an informal name of the object</p>
</li>
-<li><p class="first"><em>URI:</em> a URI uniquely identifying the object</p>
+<li><p class="first"><em>id:</em> a ID uniquely identifying the object; to ensure uniqueness, users
+should use the inverse domain name convention (like Java packages)
+starting with the inverse name of a domain they control (e.g.
+<tt class="docutils literal"><span class="pre">com.example.coffeemaker</span></tt> if you own the example.com domain)</p>
</li>
<li><p class="first"><em>summary:</em> a short (one line) description of what the object is and what
is can be used for</p>
@@ -320,7 +323,7 @@ is can be used for</p>
<li><p class="first"><em>description:</em> a longer description</p>
</li>
<li><p class="first"><em>thumbnail:</em> a list of small visual depictions of the object (pointers to
-image file)</p>
+image files)</p>
</li>
<li><p class="first"><em>authors:</em> list of the people which created/packaged the object</p>
</li>
@@ -417,8 +420,9 @@ any object would be pretty useless.</p>
<h3>Metadata</h3>
<ul class="simple">
<li><em>name:</em> an informal name and short summary of the process</li>
-<li><em>URI:</em> a URI uniquely identifying the process. Tip: derive from the URI
-of the corresponding object, TODO sample.</li>
+<li><em>id:</em> a DI uniquely identifying the process. Tip: derive from the URI
+of the corresponding object (e.g.
+<tt class="docutils literal"><span class="pre">com.example.coffeemaker.buildit</span></tt> for the coffeemaker example above)</li>
<li><em>description:</em> a description of the process</li>
<li><em>authors:</em> list of the people which created/packaged the process
(typically same as for the corresponding object)</li>
@@ -441,8 +445,8 @@ determine language to use), e.g.:</p>
object
type ~ SheetMetal
material = |
- Aluminum
- Steel
+ Aluminum
+ Steel
width = 1.5
depth = 0.3
0.003 &lt;= height &lt;= 0.004
@@ -653,9 +657,61 @@ color blue
<h2>Tangible Bit Object Description</h2>
<p>The <em>Tangible Bit Object</em> file format (extension: <em>.tbob</em>) allows
extracting objects with their relevant processes from the database and
-sharing them computers and users.</p>
-<p>TODO Design file format. Everything is packaged in a ZIP file, similar to
-formats such as ODT and EPUB.</p>
+sharing them computers and users. A TBOB file can contain one or many
+objects with their relevant processes.</p>
+<p>A TBOB package is a ZIP file (like formats such as ODT and EPUB).</p>
+<p>First-level directories: the file contains one directory for objects and
+one for each type of processes it contains:</p>
+<pre class="literal-block">
+objects
+build
+setup
+use
+maintain
+repair
+replace
+</pre>
+<p>(Empty directories can be omitted.)</p>
+<p>Second-level directories: Each object and each process is stored in a
+subdirectory of the corresponding folder, using the object/process ID as
+directory name (e.g. <tt class="docutils literal"><span class="pre">objects/com.example.coffeemaker</span></tt>).</p>
+<p>Each object is represented by 3 simple plaintext (OGDL?) files:</p>
+<ul class="simple">
+<li>properties.og: contains the object properties</li>
+<li>processes.og: index of processes associated with the object</li>
+<li>files.og: index of files associated with the object</li>
+</ul>
+<p>Each process is represented by 5 simple plaintext (OGDL?) files:</p>
+<ul class="simple">
+<li>properties.og: contains the process metadata</li>
+<li>dependencies.og: lists the input, tools, and constraints required</li>
+<li>result.og: defines the output and the allowed parameter settings</li>
+<li>operations.og: defines the list of operations to be performed</li>
+<li>files.og: index of files associated with the process</li>
+</ul>
+<p>If an object or process contains files, they are stored in a third-level
+folder named <tt class="docutils literal"><span class="pre">files</span></tt>.</p>
+<p>TODO mimetype file?; internationalization/translated strings?</p>
+<p>Sample directory structure:</p>
+<pre class="literal-block">
+objects/
+ com.example.coffeemaker/
+ properties.og
+ processes.og
+ files.og
+ files/
+ thumbnail.gif
+ frontview.jpg
+build/
+ com.example.coffeemaker.buildit/
+ properties.og
+ dependencies.og
+ result.og
+ operations.og
+ files.og
+ files/
+ blueprint.iges
+</pre>
<p>TODO Ensure that it's OK to package GPL'ed software with non-GPL'ed content
in a single ZIP file (should be).</p>
</div>
diff --git a/doc/objects.rst b/doc/objects.rst
index e68d9ca..d8ce71f 100644
--- a/doc/objects.rst
+++ b/doc/objects.rst
@@ -29,12 +29,15 @@ as follows:
* *types:* non-empty list of types the object belongs to
* *name:* an informal name of the object
-* *URI:* a URI uniquely identifying the object
+* *id:* a ID uniquely identifying the object; to ensure uniqueness, users
+ should use the inverse domain name convention (like Java packages)
+ starting with the inverse name of a domain they control (e.g.
+ ``com.example.coffeemaker`` if you own the example.com domain)
* *summary:* a short (one line) description of what the object is and what
is can be used for
* *description:* a longer description
* *thumbnail:* a list of small visual depictions of the object (pointers to
- image file)
+ image files)
* *authors:* list of the people which created/packaged the object
* *maintainers:* list of people to contact regarding questions about the
object
@@ -130,8 +133,9 @@ Metadata
++++++++
* *name:* an informal name and short summary of the process
-* *URI:* a URI uniquely identifying the process. Tip: derive from the URI
- of the corresponding object, TODO sample.
+* *id:* a DI uniquely identifying the process. Tip: derive from the URI
+ of the corresponding object (e.g.
+ ``com.example.coffeemaker.buildit`` for the coffeemaker example above)
* *description:* a description of the process
* *authors:* list of the people which created/packaged the process
(typically same as for the corresponding object)
@@ -156,8 +160,8 @@ determine language to use), e.g.::
object
type ~ SheetMetal
material = |
- Aluminum
- Steel
+ Aluminum
+ Steel
width = 1.5
depth = 0.3
0.003 <= height <= 0.004
@@ -385,10 +389,66 @@ Tangible Bit Object Description
The *Tangible Bit Object* file format (extension: *.tbob*) allows
extracting objects with their relevant processes from the database and
-sharing them computers and users.
-
-TODO Design file format. Everything is packaged in a ZIP file, similar to
-formats such as ODT and EPUB.
+sharing them computers and users. A TBOB file can contain one or many
+objects with their relevant processes.
+
+A TBOB package is a ZIP file (like formats such as ODT and EPUB).
+
+First-level directories: the file contains one directory for objects and
+one for each type of processes it contains::
+
+ objects
+ build
+ setup
+ use
+ maintain
+ repair
+ replace
+
+(Empty directories can be omitted.)
+
+Second-level directories: Each object and each process is stored in a
+subdirectory of the corresponding folder, using the object/process ID as
+directory name (e.g. ``objects/com.example.coffeemaker``).
+
+Each object is represented by 3 simple plaintext (OGDL?) files:
+
+- properties.og: contains the object properties
+- processes.og: index of processes associated with the object
+- files.og: index of files associated with the object
+
+Each process is represented by 5 simple plaintext (OGDL?) files:
+
+- properties.og: contains the process metadata
+- dependencies.og: lists the input, tools, and constraints required
+- result.og: defines the output and the allowed parameter settings
+- operations.og: defines the list of operations to be performed
+- files.og: index of files associated with the process
+
+If an object or process contains files, they are stored in a third-level
+folder named ``files``.
+
+TODO mimetype file?; internationalization/translated strings?
+
+Sample directory structure::
+
+ objects/
+ com.example.coffeemaker/
+ properties.og
+ processes.og
+ files.og
+ files/
+ thumbnail.gif
+ frontview.jpg
+ build/
+ com.example.coffeemaker.buildit/
+ properties.og
+ dependencies.og
+ result.og
+ operations.og
+ files.og
+ files/
+ blueprint.iges
TODO Ensure that it's OK to package GPL'ed software with non-GPL'ed content
in a single ZIP file (should be).