Resource framework project/es

Esta es la planificación para la estructura de recursos de FreeCAD como parte del Mapa de desarrollo.

Propósito y principios
Este es un proyecto de desarrollo de software que pretende implementar capacidades de PDM. Trata de implementar los trozos y partes necesarias.

Los pasos del desarrollo se planifican aquí y se siguen en el sistema de gestión de incidencias para tener un historial de cambios bien definido: Gestor de inicdencias

Resultado

 * Control de revisiones para proyectos de diseño grandes
 * Compartir trabajo con otros a través de Internet; Colaboración
 * Catalogos online y offline con piezas estándard

Lo que hacen los otros
Aquí hay algunos enlaces con productos comerciales similares:
 * Catia V6

Casos de referencia
Proporcionado por Charles

Por supuesto habrá diferentes tipos de personas utilizando este programa por razones diferentes, y quizás necesiten diferentes soluciones PDM, pero sería bueno investigar soluciones que podrían ser universales. Yo veo los siguientes métodos diferentes de desarrollo (también debe haber otros):


 * Usuarios individuales - Probablemente sea un porcentaje significativo de personas que trabajen de este modo pero el control de revisiones y las versiones siguen siendo útiles. Muchas de estas personas pueden estar trabajando en partes del mundo en las que un acceso a Internet no sea sencillo de conseguir o sea caro, así que es posible que trabajen offline durante largos periodos. Podría estar bien hacer que esos proyectos individuales sean más sencillos de replicar por otras personas si se trata de un trabajo interesante - así el diseño puede evolucionar en en múltiples direcciones a la vez - revision control and branching still useful. Many of these people may be working in parts of the world where internet access is flaky or expensive, so they maybe working offline for long periods. Would be nice to make these individual projects very easily replicable by other people if it is a good piece of work - so the design can be evolved in multiple directions at once


 * Small teams of people working together - perhaps from the same education institution - but each individual may want the freedom to explore all aspects of the project rather than rigidly assigned a particular part of the project. We find it generally allows more options to be easily explored and gives greater flexibility.


 * Wider open-source design projects - more members and geographically dispersed. The mirror of open-source software projects - where there does seem to be a general trend towards distributed systems (in fact Python Moved over to a DVCS last month). I see design and engineering going the same way for the same reasons. So I think there is all the more reason for us to think hard about how a distributed system could work in CAD - and if we solve this will have a big advantage over the commercial CAD vendors! I am convinced there is a solution (if we don't work it out, some other CAD system developer will!)


 * More rigid hierarchical project - there may be some projects where the teams prefer this arrangement but I can only see this as being popular within companies.

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