Development Information
Source code is in the src/
subdirectory.
"Supported" development environments
Nothing is fully supported yet, but this is the goal. The directories below have scripts to enable development in various contexts:
src/dev/laptop -- for development on your personal laptop (or desktop) that is not public; zero concern about security. No sudo setup. Works on Linux and OS X.
src/dev/project -- for developing SMC inside of any SMC project; more worry about security; No sudo setup.
src/dev/public -- for development on a single publicly accessible dedicated server; more concern about security. Must have sudo, and install things system-wide. Each project is a different linux account.
src/dev/smc -- related to the actual live SMC deployment, which runs on many nodes, and uses haproxy and nginx.
Issue Triage
For the most part, we mimic Rust's triage system.
Contributors with sufficient permissions on the SMC repo can help by adding labels to triage issues:
Yellow, A-prefixed labels state which area of SMC the issue relates to.
Green, E-prefixed labels explain the type of experience necessary to fix the issue.
Red, I-prefixed labels indicate the importance (relevance) of the issue. The I-nominated label indicates that an issue has been nominated for prioritizing at the next triage meeting.
Orange, P-prefixed labels indicate a bug's priority. These labels are only assigned during triage meetings, and replace the I-nominated label.
The purple meta label denotes a list of issues collected from other categories.
The black, blocked label denotes an issue blocked by another.
If you're looking for somewhere to start, check out the E-easy tag.
Modules:
smc-util: javascript utility code used in the browser and servers
smc-util-node: node.js utility code used in servers
smc-hub: backend web and compute server code
smc-project: server code that runs in user projects
smc_pyutil: python scripts and code used on servers
smc_sagews: python Sage server
smc-webapp: frontend client code that runs in browser
Testing
Run whole test suite:
min
is the minimal reporter and other reporters are dot
, progress
, nyan
or json
- for more see here
NOTE: There is no working testing or coverage of smc-webapp yet.
NOTE: You must be running the RethinkDB database server on localhost (with the default 28015 port) to run the test suite. The test suite doesn't start a database server running.
Upgrades
In a node.js module, type
to see all packages that are out of date not respecting semver. See https://www.npmjs.com/package/npm-check-updates for more about how to use ncu.
Lint
Coverage
This generates a text and html summary in the coverage/
sub-directory for the given modules.
NOTE: There is no working testing or coverage of smc-webapp yet.