Dev:Source/Extensions/Assets/Repository Client Framework/Requirements

提供: wiki
移動先: 案内検索

Overview

This document presents the requirements for the Blender Repository. The system serves the Blender User by providing a means to find and re-use existing models, objects, materials, and other CG elements from any compliant source.

Scope and Legal Terms

The scope of this system is to find and obtain existing objects from a local or internet-hosted repository.

By objects we mean any kind of content that can be imported into Blender more or less directly.

All thoughts and ideas are expressed and shared through some sort of license. So is that the case for any created objects that this software project aims at letting its users find and obtain.

The software will be developped so as to collect and display as much details of the licensing information accompanying objects. The project's author do not hold any responsibility for the veracity or completeness of these pieces of information.

Digital rights management (heard as the software functionality of preventing users from accessing content they should not) is not implemented in this project's software. When running this software, the latter's users assert that they are aware that the project's authors shall not be held responsible if those same users access objects, or use objects in ways they do not have legal rights to.

In order for object users and object providers to avoid legal problems, the project's developpers ask those users and providers to inform themselves on the exact licensing/legal information accompanying the object they respectively access and use, and provide to others.

Actors

User
the human blenderhead who wants to construct a scene by re-using other models
Client
the software running on his machine to assist him in this task
Repo
The repository that exists as a collection of re-useable objects. There are two flavors:
Local - stored on the User's hard disk or network, locally accessible with full read priviledges
Web - accessible through the http protocol
Catalog
a central catalog listing the available/known Repo
Creator
the person who creates an object that can be re-used

Terms Used in This Document

object
can mean anything that can be re-used - a single mesh, a collection of meshes, a material, a lamp setting, an armature, actions, and so forth.
dependency
when an object is not self contained, but needs, links, or relies on some other object. For example, an Action object relies on or is tied to the existence of an Armature with specific bone names.

Use Cases

The following use cases provide a complete list of functionality required, by project component. Note that some functionality may already exist in Blender or the User's PC, requiring us to only make sure we incorporate it into the workflow and/or integrate with it by calling it or invoking it. The purpose of including "outside" functionality is to make sure we provide a complete solution for all users under all circumstances. We try to present the use cases in a chronological manner.

1.. Repo hosts object

Preconditions: Creator makes an object that they think has application/utility by other fellow blenderheads. They agree to share this object with the public without restriction. They upload it to a Repo. The Repo accepts the file, possible zips it or strips out extraneous stuff, possibly adds a license text, and wemakes the object available on their website (via download link on an html page)for download.

2. Repo provides info about object

Preconditions: Repo obtains webserver and internet connection, continuous or dial-up. (may not be always available)
Flavors:
HTML - a download link on a web page, surrounded by possibly an image/thumbnail render of the object, and some description
API - an XML document that lists the contents, accessible via special port or designated ftp port

4. Central establishes list of Repo

The idea here is that some site, like www.blender.org/downloads would provide some sort of listing of available repositories, so that User/Client does not have to Google it

5. Repo registers with Central

either by uploading an xml document or making manual entries into a database, or simply by providing a URL, the repo makes their content available

10. User searches for an Object

11. Client obtains list of active Repo
12. Client visits Repo to gain list of objects
13. Repo goes away forever

May de-register from Central, or may just cease operations.

20. User downloads an Object
30. Creator updates Object


General Principles

0.1 Principles 0.1.1 Virtualization - The system will operate under Windows, Linux, and Mac OS 0.1.2 GNU GPL - The system will be freely available to all users to use without royalty 0.1.3 IP - The system will preserve intellectual property rights of content accessed

1. PC via Background Process

1.1 Connect to Internet 1.2 Query Repository On-line Status 1.10 Download .blend file 1.20 Upload .blend file 1.x

2. User via Framework GUI

2.1 Startup/Connect

Why not check if internet is available by pinging two websites and show a small icon representing the internet connection state (jonathan). What do you think ? The problem then, is that pinging should be done frequently because the internet availability can change any time.

2.1.1 Start GUI for RepoClient

2.1.2 Select function/operation to perform

2.1.3 Connect to Internet (Dial-up, DSL, Proxy login, etc)


2.10 Inquire Repository

2.10.1 Identify potential repositories (folder, website)

A local file or sql entry should list the known repositories (whether local or remote).

An update list button in the GUI should be able to show if new repositories are available locally, and get an updated (with more/less repositories and details for each) online repository list (by fetching a single web page aggregating repositories list).

2.10.3 View list of what is in the repositories

2.10.3.1 "Drill down" to see individual .blend file (may be folder and .zip file containers) (what you want to is to get a full list of the repository available contents is that it ? (jonathan) contrasting with 2.10.3.2, you're talking about xml, but there can be some xml here as well. Instead of drilling down, one could get an xml from the server which gives a big list of all the contents with elementary detail on those & links for more details (ex: a link to the preview image for each element)) )

2.10.3.2 Obtain XML datastream (via SOAP, via download) (what would that xml be ? details on some item ?)

did you intend 2.10.3.1 to be an alternative of 2.10.3.2 in case there's was no API but just a folder scheme ? If that's the case, things should be 2.10.3.a and 2.10.3.b and there should be saying that we should do, for each repository, a or b. (jonathan)

2.10.9 Mark Repository as permanently<?> off-line/inaccessible

2.10.5 Identify specific content of interest (in a .blend file, in a .zip file(?))

2.10.3.1 Manually enter information (do you mean to annotate an online content with custom details ? (jonathan))

2.20 Mirroring

2.30 Downloading

2.40 Updating

2.90 Deleteing