Semantic Synchrony lets anyone edit and use a knowledge graph. That's what Google, Siri, Alexa and others use to answer questions about the world. Semantic Synchrony, however, is easy: There are only about 25 commands you need to know, and the entire introductory video course takes less than 45 minutes.
Some essays on the benefits of personal knowledge mapping have been collected at smsn-why.
Disclaimer (and good news!): Semantic Synchrony is evolving.
Semantic Synchrony is easy to install: build the server JAR, create a configuration file, start the server, and connect with Emacs. You don't need to be good at Emacs.
This brief howto explains everything you will need to know to use Semantic Synchrony. It assumes no prior familiarity with Emacs, knowledge graphs, or any other technology. (For a brief list of critical commands, or the complete list, see the smsn-mode wiki.
Fear not the commitment! Semantic Synchrony exports to many formats, including plain text, with one file corresponding to each note in the graph. Even shared authorship is escapable, because the whole history of changes can be kept in Git.
Please see the invitation to coders.
The SmSn server is a Java application with file-based storage (SQLite + Lucene + .smsn files).
Create a smsn.yaml configuration file. The server looks for this file in the current working directory.
# Index directory for SQLite and Lucene indices
indexDirectory: /path/to/index
# Activity log (optional)
activityLog: /path/to/activity.log
# Data sources - each source is a directory of .smsn atom files
sources:
- location: /path/to/public-notes
name: public
code: s
color: 0x00e000
- location: /path/to/personal-notes
name: personal
code: r
color: 0xffc000
- location: /path/to/private-notes
name: private
code: a
color: 0xff0000
# Optional settings
verbose: false
thingNamespace: http://example.org/things/Each source location should be a directory containing .smsn atom files (one per note). These directories can be Git repositories for version control.
Helper scripts are provided in bin/:
# Build the server (run from project root)
bin/build-server.sh
# Start the server (run from directory containing smsn.yaml)
cd /path/to/directory/with/smsn.yaml
/path/to/smsn/bin/start-server.sh
# Stop the server (run from anywhere)
/path/to/smsn/bin/stop-server.shThe start script will automatically build if needed. The server starts on 0.0.0.0:8182 and accepts WebSocket connections at /smsn.
To rebuild the index from source files (useful after external edits to .smsn files or to recover from corruption):
- Stop the server:
bin/stop-server.sh - Delete or move the index directory
- Start the server (it will rebuild the index automatically)
Join us! Let us grow (what|how we know about) the world for each other.