OSEDev Workbench

From Open Source Ecology
Jump to: navigation, search

Workbench for FreeCAD integrating with OSEDev to provide for collaborative development, parts catalog management and versioning.

Status & Links

Minimum Viable Product

FreeCAD Login Screen for OSEDev Workbench
  1. Login mechanism
    1. FreeCAD
      1. Dialog to let user enter their osedev.org user/name password, which is only saved in memory for the duration of FreeCAD process.
      2. Open and maintain websocket connection. websocket-client Send upon connection:
        1. Username/password
        2. Assembly 2 WB version (if installed)
        3. OSEDev WB version
        4. FreeCAD version
        5. ^ useful for debugging and notifying user if new versions are available
      3. Show connection status, allow user to connect/disconnect.
    2. osedev
      1. Authenticate websocket connections against osedev user table.
      2. Maintain event group for connected users in django-channels.
  2. Chat
    1. FreeCAD
      1. Simple chat client/panel.
      2. User list with online/offline status.
      3. Show FreeCAD version number next user names in the user list.
    2. osedev
      1. Simple django-channels chat service implementation.
      2. Chat messages logged to db.
  3. Parts Catalog
    1. Uses Amazon Cloud Storage to store files.
    2. Listing of parts
      1. FreeCAD list panel
        1. part name - OSE Part Naming Convention
        2. current lock status
        3. last modification date and user
        4. view part details and change log.
      2. osedev
        1. respond with list of all parts upon request
        2. send lock/unlock notifications and part changes down the django-channels group
    3. User can "open" (download) the part from S3.
      1. FreeCAD
        1. Open file as independent document.
        2. Open file using Assembly 2 WB "Add" mechanism.
    4. User can "lock" file for editing.
      1. FreeCAD: right/click on file or a button to lock/unlock. show what the server thinks is lock status.
      2. osedev
        1. process lock request
        2. save to db with timestamp
        3. notify everyone else in django-channel group
        4. release locks automatically after 12hrs of no activity
    5. User can "save" (upload) the part while providing a comment for the changes made.
      1. FreeCAD
        1. In addition to normal file save, there will be an upload button. (user can both keep/save file locally and/or upload changes)
        2. Dialog to collect changes before uploading file to osedev.
        3. Upload file, show upload progress, show processing progress.
      2. osedev
        1. Request to osedev.org to make sure it's okay to upload (user had lock or nobody else has made changes even if lock expired).
        2. If lock expired but nobody else made changes allow the upload but lock the file again until the upload finishes.
        3. Upload file to osedev and begin processing:
          1. #Part Processing
          2. upload file and generated artifacts to S3.
        4. Notify user that their changes were uploaded and lock released. (FreeCAD UI will reflect this)

Part Processing

  1. make thumbnail.
  2. webgl view.
  3. calculate print time for printable parts.
  4. generate STL and run diff tool. see github for inspiration: 3d file diffs
  5. create version record and save change comment.


  1. Automate/assistant in the process of updating dependent assemblies when a sub-part is changed.
    1. Present list of directly dependent assemblies.
    2. User can pick which assemblies should be update.
    3. WB will download all assemblies, lock an assembly, open in Assembly 2 WB, re-fresh parts, upload/unlock.
  2. Search parts.
  3. Download older versions of parts.
  4. One click sharing of screenshot of your FreeCAD model view in chat. simple way to draw on screenshot (just single color/brush size and bitmap if that's easier).