mods was originally written by Neil Gershenfeld (https://ng.cba.mit.edu/) for rapid-prototyping workflows in MIT research (http://cba.mit.edu) and classes (https://fab.cba.mit.edu/classes/MAS.863/), and for use in the fab lab network (https://fablabs.io/labs/map) and its classes(https://academany.org/).
- bugs
- pan after window return
- processes
- three-axis finish cut
- FDM slicer
- editing
- subgraph copy paste
- nested module graphs
- ui
- collapse nodes
- refactor for skinning
- Cross-Origin Resource Sharing
- formats
- HPGL input
- SVG export
- DXF export
- ...
# To install and run mods locally
You need to first install [node.js](https://docs.npmjs.com/getting-started/installing-node).
Install the [http-server](https://www.npmjs.com/package/http-server) npm package. Including '-g' sets the installs the package gloabally, allowing you to use it as a command line tool:
Use the command line to navigate to the root of the mods repository:
<code>cd mods</code>
Start up a server:
<code>http-server</code>
Open a browser tab and go to <code>127.0.0.1:8080</code> which is the same as <code>http://localhost:8080</code> to view the server that you just started.
Depending on how to need to use mods you can start local servers located in <code>mods/js</code>, for example, if you start from the root of the mods repository:
<code>cd js</code>
<code>node printserver.js</code>
# Mods Connection Debugging
set correct serial port permission (do this each time you reboot the machine): <code>chmod a+rwx /dev/ttyUSB0</code>
start serialserver in the terminal so you can see the logs as it tries to connect. navigate to the mods/js folder in the terminal (probably use <code>cd ~/mods/js</code>) and type: <code>node serialserver.js ::ffff:127.0.0.1 1234</code>
check serialserver is running with: <code>ps aux | grep node</code>
# Common Issues
1.**_Help! My SRM-20 won't work!_** You must use deviceserver.js rather than printserver.js to connect to the machine. Note: the start_mods_server script by default uses printserver.
2.**_Argg... why do I need to reset permissions on /dev/usb/lp0 every restart?_** You can use `sudo add_user username lp` and `sudo add_user username lpadmin` to make persistent permissions.
3.**_Why is my web socket connection refused when the addresses are the same?_** This can happen due to a difference between IPV4 and IPV6 addresses. In your start mods server script, try changing 127.0.0.1 to ::ffff:127.0.0.1 and see if it helps.
4.**_Why is my address in use?_** You must run stop_mods_server to free the address. The IPV4 vs. IPV6 issue can confuse the server, but you can always restart your machine to free all addresses.
It is now served (https://modsproject.org) and supported (https://gitlab.fabcloud.org/pub/project/mods) as a community project.