synchrony / smsn

Semantic Synchrony. An experiment in cognitive and sensory augmentation.
Other
179 stars 15 forks source link

Still active? #57

Open anthrolisp opened 4 years ago

anthrolisp commented 4 years ago

Is this project still active? Thanks in advance!

JeffreyBenjaminBrown commented 4 years ago

Josh still uses it. I haven't seen a commit in a long time. He's working on SmSn 2.0, which will use a hypergraph, not a graph. He's also taking care of a newborn. Heroic stuff.

I haven't been able to use it in a while. I recently got close, and then stuck, as briefly described here.

Today, prompted by your interest, I'm trying to build it on my home system instead of in Docker.

anthrolisp commented 4 years ago

Following the instruction here on this page (https://github.com/synchrony/smsn/wiki/Running-Semantic-Synchrony-and-Emacs-in-a-single-Docker-container), I got the following errors after m-x smsn in emacs:

opening connection if: make client process failed: no route to host, :name, websocket to ws://172.17.0.3:8182/gremlin, :buffer, nil, :host, 172.17.0.3, :service, 8182, :nowait, n\ il

backtrace: Debugger entered--Lisp error: (file-error "make client process failed" "no route to host" :name "websocket to ws://172.17.0.3:8182/gremlin" :buffer nil :host "$ make-network-process(:name "websocket to ws://172.17.0.3:8182/gremlin" :buffer nil :host "172.17.0.3" :service 8182 :nowait nil) (if (eq type (quote plain)) (make-network-process :name name :buffer nil :host host :service port :nowait nil) (condition-case nil (open-network-stream name $ (let* ((type (if (equal (progn (or (and ...) (error "%s accessing a non-%s" ... ...)) (aref url-struct 1)) "ws") (quote plain) (quote tls))) (port (if (= 0 ($ (if (member (progn (or (and (memq (aref url-struct 0) cl-struct-url-tags)) (error "%s accessing a non-%s" (quote url-type) (quote url))) (aref url-struct 1))$ (let* ((name (format "websocket to %s" url)) (url-struct (url-generic-parse-url url)) (key (websocket-genkey)) (coding-system-for-read (quote binary)) (codin$ (let* ((protocols (car (cdr (plist-member --cl-rest-- (quote :protocols))))) (extensions (car (cdr (plist-member --cl-rest-- (quote :extensions))))) (on-open$ websocket-open("ws://172.17.0.3:8182/gremlin" :on-message (lambda (_websocket frame) (let ((response (websocket-frame-text frame))) (funcall websocket-respon$ create-websocket-connection("172.17.0.3" 8182) (setq websocket-connection (create-websocket-connection host port)) (progn (setq websocket-connection (create-websocket-connection host port)) (sleep-for 0.1)) (if (not (websocket-connection-is-open)) (progn (setq websocket-connection (create-websocket-connection host port)) (sleep-for 0.1))) get-websocket-connection("172.17.0.3" 8182) (let ((connection (get-websocket-connection host port))) (if (websocket-connection-is-open) (let ((payload (smsn-serde-format-request request))) (setq websoc$ smsn-websocket-send-and-receive("172.17.0.3" 8182 (:action "net.fortytwo.smsn.server.actions.GetConfiguration" :filter (:minSource nil :defaultSource nil :mi$ (if (equal "websocket" protocol) (smsn-websocket-send-and-receive host port request callback) (error "%s" (concat "unsupported protocol: " protocol))) (if (equal "http" protocol) (smsn-http-send-and-receive host port request callback) (if (equal "websocket" protocol) (smsn-websocket-send-and-receive host po$ (let ((protocol (find-server-protocol)) (host (find-server-host)) (port (find-server-port))) (if (equal "http" protocol) (smsn-http-send-and-receive host por$ issue-request((:action "net.fortytwo.smsn.server.actions.GetConfiguration" :filter (:minSource nil :defaultSource nil :minWeight 0.0 :defaultWeight 0.5)) upd$ (if (not conf) (issue-request (to-filter-request get-configuration-request) (quote update-configuration-callback))) (let ((conf (smsn-env-context-get (quote configuration)))) (if (not conf) (issue-request (to-filter-request get-configuration-request) (quote update-configur$ smsn-client-fetch-configuration() smsn-mode() smsn() call-interactively(smsn record nil) command-execute(smsn record) execute-extended-command(nil "smsn") call-interactively(execute-extended-command nil nil) command-execute(execute-extended-command)

ketan0 commented 4 years ago

@anthrolisp I also ran into this—changed smsn-server-host to "172.17.0.2" (or whatever host the docker run command said Gremlin was using,) and it works now :)

JeffreyBenjaminBrown commented 4 years ago

I just got it working again this week via Docker. I've made a tiny repo with a short but detailed walkthrough of how to get it set up. Please let me know if this works for you:

https://github.com/synchrony/demo-smsn-docker

ketan0 commented 4 years ago

I managed to get the Docker working, thank you :)

JeffreyBenjaminBrown commented 4 years ago

Hooray!

joshsh commented 3 years ago

Btw. yes SmSn is still "active" in that it has at least one very active user (myself). Most likely, it has exactly one very active user. I am bonded to this software for life, so there will always be some installable and runnable version of SmSn (though it might revert to its earlier name at some point -- Extend-o-Brain). The changes I have in mind for the next version of SmSn are really fundamental ones (including deep support for schemas a la Dragon), so they are waiting on a major development push on my part, and also on an open-source version of Dragon becoming available. I am actively working on the latter.

JeffreyBenjaminBrown commented 3 years ago

As the record of smsn-public will show, tt's also got one half-assed user!

joshsh commented 3 years ago

Indeed @JeffreyBenjaminBrown you're more active than I thought. And you're going to like schemas :-) Here are a few things which are likely to change in the v2:

JeffreyBenjaminBrown commented 3 years ago

The parts I understood of that sound great.

Would the putative "comments" field be as searchable as titles currently are, or unsearchable like the markdown text?

Will children be unordered in SmSn 2? That seems like it could be problematic -- if you've got, e.g., a list of steps that must be performed in serial, and you want one of those steps to have multiple parents, then the steps would have to be children rather than elements of the "comments" list.

I discovered Agora yesterday. It looks like it might be a wonderful monkey wrench in these plans -- a federation of Github repos doing the knowledge base thing. I haven't gotten it to work yet but the community appears to be active.

joshsh commented 3 years ago

A field like comments would be searchable to the extent that your application understands the schema that defines comments. Either the graph DB needs to have built-in support for the schema, or you need to be able to configure the graph DB to index the fields which are important to you.

Children will still be ordered insofar as Atom will stay as it is; its children are ordered. However, you will have the option of creating other schemas in which this is not the case. If you need an ordered list of entities, then the list constructor in the schema language is your friend. E.g. you are free to define a steps field whose type is list: Step or list: StepId. In other words, when you really need ordering, you might want to choose a more meaningful field than children, which prescribes a particular semantics for the values of the list.

Agora looks like a good idea. Haven't quite grokked what a "digital garden" is yet (the link appears to be broken), but I'm all for building a collaborative knowledge base by federating GitHub repos.

JeffreyBenjaminBrown commented 3 years ago

Children will still be ordered insofar as Atom will stay as it is; its children are ordered. However, you will have the option of creating other schemas

Nice!