Skip to content

Latest commit

 

History

History
108 lines (73 loc) · 5.84 KB

FreePDM_03-DesignDecisions.md

File metadata and controls

108 lines (73 loc) · 5.84 KB

FreePDM

Concept Of Design

Design decisions

  • Version management see:
  • User interface
  • Database
  • Used programming language
  • Attributes

General setup

Block diagram FreePDM general

Version management

Version management is a difficult topic. A main issue is that it should be able to create releases of every individual part, assembly (and optional drawing.)

There are serval different (Open source)version control systems available. The main difficulty is that those are most written for software. Where software is released as a whole that is not always the case within the mechanical world. see: @ref to story Note Grd: But there are also closed source versions. I think that we should also accept those because in a company they might only allow this kind of software. This has to be tackled. Currently the most promising implementation is the svn version system (a Client-server). The most well known Distributed version systems are git and mercurial. Note Grd: Why does it need to be tackled? You can also allow them all. But in that case we need to have an admin page in where we can select which one we use. They all work roughly the same, but we need to make all work of course. But we are gonna start with SVN.

Note: We have to decide if the model(part / assembly) gets an update, the drawing get also an update. The same issue applied in revers order. Note grd: This is never gonna work. When a part is changed you aso need to update the drawing of that part, the assy (or assies) in where it belongs and the drawings of those too.

Database

Within databases there are two main types of databases. SQL based databases. Examples of SQL like databases are SQLite, MariaDB, PostgreSQL.

The other is noSQL. An example of this database is MongoDB

Note: Add What the difference is and how such a database is build up

Note Grd: Why do we need such a database? That is the question. We need it because we can't extract the relevant information out of VCS and that is because a FC file attributes are stored somewhere into that file. And you want to be able to search that metadata information. To be honest, I don't care about which kind of software you use (SQL / noSQL), but SQLAlchemy helps a lot when you use SQL data. That is why I think that we better use SQL. Starting with sqlite.

User interface

Block diagram interface design

For the user interface there are two main issues but both are related. the issue about the programming language is described below. What i mean with the figure above is that there are two main options of interfaces.

  1. Web interface
  2. Local stored interface

Looking at the web interface has some pro's and cons

Pro's Con's
Centralised updates Security is more difficult(specially .js)
More easy to add other SW More data transport
                       | 

(Maintainability?) | (Maintainability?)

See also Comment of user1234 in the related topic

Looking at the local storage there are two tastes available(for now).

Specially the Add-on manager can help for at least (semi-)centralised updates.

Note: How does the GUI interact with the user?

Used programming language

In case of the web interface can be programmed with for example Javascript or python (there are more but these are most well known).

In case of a local program Python can be a good option too. This is also because it works good together with FreeCAD and so the FreeCAD Add-on Manager. What are pro's cons of the Add-on manager:

Pro's Con's
Semi Centralised updates Not direct integration
Fast(er) update speed⁰ python only
Translation to other languages More difficult user handling
Maintainability

⁰ Faster is compared to FreeCAD when every chance goes through checks(Except when WMayer fix it).

What i meant with user handling see story later on

By using the add-on manager it is possible to change quickly when a change / update is needed. _Note: We have to decide to:

  • Make a FreeCAD Add-on
  • ?_

<< Previous Chapter | Content Table | Next Chapter >>