Resource framework project/it

Questo è il piano del progetto per la struttura delle risorse di FreeCAD come parte del Piano di sviluppo.

Finalità e principi
E' un progetto di sviluppo del software finalizzato a implementare il Product Data Management (PDM) (Gestore dei Dati di Prodotto). Si tratta di implementare le parti e i componenti necessari.

Le fasi dello sviluppo sono pianificate qui e sono monitorate nel sistema di gestione delle versioni per tenere un registro storico delle modifiche ben strutturato: http://www.freecadweb.org/tracker/change_log.php

Risultati

 * Controllo di revisione per progetti con grandi disegni.
 * Condividere il lavoro con altri tramite internet/intranet: Collaborazione
 * Cataloghi online e offline di parti standard.

Cosa fanno gli altri
Ecco alcuni link su analoghi prodotti commerciali:
 * PDMLink di PTC -  "...quando tutte le parti coinvolte nel prodotto accedono ad un unico repository dati centrale affidabile i produttori hanno la possibilità di gestire in modo efficiente tutti i tipi di dati digitali relativi allo sviluppo del prodotto, tra cui quelli meccanici, elettrici e software. Windchill PDMLink è la soluzione ideale. Basato su Web per un facile accesso a livello aziendale, questo collaudato sistema di gestione dei dati di prodotto (PDM) supporta team dislocati in aree geografiche diverse consentendo di gestire processi critici come la gestione delle modifiche e della configurazione e la progettazione dettagliata." 
 * Aras Corp. Aras PLM Software - Essi sembrano offrire soluzioni Open Source, può valer la pena di indagare ulteriormente ...
 * Catia V6

Casi d'uso
Fornito da Charles:

Naturalmente ci saranno diversi tipi di persone che utilizzeranno questo software, per diversi motivi, e che potrebbero forse avere bisogno di diverse soluzioni PDM, ma sarebbe bene studiare soluzioni che possano essere universali. Io vedo i seguenti metodi diversi di sviluppo (possono anche essercene altri):


 * Utenti singoli - probabilmente c'è una percentuale significativa di persone che lavorano in questo modo e che possono essere abbastanza autosufficiente, ma il controllo di revisione e le ramificazione sono comunque utili. Molte di queste persone possono lavorare in parti del mondo dove l'accesso a Internet è precario o costoso, per cui magari lavorano non in linea per lunghi periodi. Sarebbe bello rendere questi progetti individuali replicabili molto facilmente da altre persone, quando si tratta di un lavori validi, in modo che il progetto possa essere sviluppato in più direzioni contemporaneamente - molte evoluzioni darwiniane in molteplici direzioni contempopraneamente


 * Piccoli gruppi di persone che lavorano insieme (forse da parte della stessa istituzione di educazione), ma dove ogni individuo ha la libertà di esplorare tutti gli aspetti del progetto piuttosto che avere assegnata rigidamente una parte specifica del progetto. In genere, trovo che permette più opzioni se può essere esplorato facilmente e offre una maggiore flessibilità.


 * Progetti più ampi di disegno open-source - più membri e dispersi geograficamente. La direzione verso cui vanno i progetti software open-source - dove sembra esserci una tendenza generale verso i sistemi distribuiti (infatti Python si è spostato recentemente su un DVCS). Vedo la progettazione e l'ingegneria andare nella stessa direzione per le stesse ragioni. Quindi credo che ci sia un motivo in più per noi per riflettere su come un sistema distribuito potrebbe lavorare in CAD ​​- e se risolveremo questo avremo un grande vantaggio rispetto alle applicazioni di CAD commerciali! Sono convinto che esiste una soluzione, e se non la scopriamo noi, lo farà qualche altro sviluppatore di sistemi CAD!


 * Progetto con una gerarchia più rigida - ci possono essere alcuni progetti in cui i gruppi di lavoro preferiscono questa soluzione, ma penso che questo sistema possa essere popolare solo all'interno delle imprese.

Il sito Web di Blendswap
Blendswap - secondo le sue stesse parole - è '' "... il luogo dove trovare e condividere i file di Blender con il mondo intero. Tu crei straordinari file di Blender, li condividi nel più grande archivio di modelli 3D open source realizzati con la straordinaria suite Open Source Blender 3D." ''

Blender è una 'suite di creazione di contenuto 3D' in codice aperto molto popolare.

Pur non essendo un programma CAD, ci sono molte analogie che devono essere colte e insegnamenti da apprendere dal modo in cui Blender e la sua comunità stà facendo le cose.

Blendswap is an excellent example of an online repository. It's key features that I beleive we can learn from are:
 * Provides detailed thumbnail images on the website. This allows people to freely browse and find content quickly.
 * The models (blend files) come with clear license details (these details are also quicky viewable at a glance from the thumbnail, via a Creative Commons logo).

Possible revision control systems
It's only a small step to think of revision control the same way it's used in modern software development. There are basicly two different approaches to that matter:
 * Structured, server centric (Subversion or CVS)
 * Structured, distributed (Mercurial, Bazaar and Git)

Although the Use Cases demand a distributed revision control system, all the named has a major drawback. If you clone a repository all the previous versions will replicated to your computer. Which can, in the case of CAD data, be a very large Mb count. In contrast do the server centric systems only check out the head revision and therefore transfer relativly small amount of data.

Licensing
In a distributed internet project its needed that every document carries a clear license. Its even more importand if you think of catalogs. Catalog parts get used in projects (free and non free) and need there fore a clear license to make it usage clear. Since there different licensing systems out there, here a set of possible licenses for CAD files:

Creative Commons
The CC licenses are very popular for creative material, you can find the description here: http://creativecommons.org

ISO 16016
fraganaut01 give us a plug to another licensing system for CAD:


 * Copyright by Provider (no more restrictions)
 * Refer to protection notice ISO16016 (no special restriction)
 * Confidential, for internal use only. Use only with confidentiality obligation. Refer to protection notice ISO16016
 * Confidential, for internal use only. Refer to protection notice ISO16016
 * Any dissemination only with the express approval of the originator

Design
All the revision controlled data, catalogs, tutorials and so on, have to have some kind of representation in FreeCAD. All this can be summarized under the name Resource. There have to be a class design to hold this kind of resource information and distinguish the different cases.

Architecture
This kine of service is per definition not only local to the user's machine. Its more up in the Cloud and implemented on different services on different servers. There is to distinguish four kind of servers:
 * Cheap Server - LAMP
 * Full Server (e.g. Ubuntu/Debian server)
 * Download server - e.g. sf.net
 * BitTorrent tracker

Thad leads to following scenario:



Research
First of all the different alternatives of revision control systems have to be tested. To get hard numbers on how they behave on CAD data.

Design
A class design for the Resource framwork.

Next actions

 * Build up test repositories on the Server and two local machines
 * Test different use cases