This was previously sent by me to the Open Manufacturing list on Google Groups.
Anyway, because I've been avoiding discussing politics very much, I've had
some time to code more free stuff. :-)
It's become clear to me over many years and in many different contexts that
we all could all benefit from some improved communication tools (things
beyond email). This was an idea raised by many including Doug Engelbart in
the 1960s, but most recently it was presented in a way that engaged me by
Doram on the OpenVirgle mailing list several months ago, in his mention of
some benefits of web forums over email lists, including the ability to
categorize messages and to make edited newer versions of them. I'm not much
into censorship, but I still feel personal filtering and group moderation is
generally OK, and maybe even essential in some circumstances. Slashdot is a
good example of such a moderation system, but Slashdot is not a distributed
Since I myself tend to write long emails that are often ignored as too long
by many and might be better as web pages (but I generally write them in
response to emails of others), I started thinking last year about how it
would be useful to bridge that gap somehow. I wondered how could one add
moderation capabilities to email lists (but in a distributed way)? Or, how
could one take a previously posted email and break it up after it was sent
into subtopics and then interlink those topics together, kind of like a
wiki? And in general, how can one add tags and more sophisticated semantic
information over time to a discussion to turn parts of the discussion into
digital artifacts that might have enough structure to define manufactured
items or manufacturing webs? And how can issues of free and open source
licensing and authorship recognition be supported in this process?
A Social Semantic Desktop is intended to bring the semantic web to the
desktop level, where individuals can have local copies of parts of larger
global stigmergic semantic structures. For example, you might have a local
copy of a discussion group where entries were moderated; a locally running
application would display the items that were moderated up by people you
respected. So, there needs to be an infrastructure for distributing this
semantic information as well as tools for displaying and changing it. There
are already some infrastructures and some tools (NEPOMUK is one), I'm just
working on one of my own, which is a derivative of stuff I've been working
towards on-and-off for over a quarter century.
So, I've gotten a new version of the Pointrel Social Semantic Desktop
started with a rudimentary example application implemented (a "to do list")
which can have transactions synchronized between multiple users through an
FTP site. FTP is not secure including the protocol sending passwords in
clear text, so it's more a proof of concept than an ideal. Also everyone
with the FTP password with write access needed to make this work could put
anything on an FTP site with a regular FTP tool, or they could delete or
overwrite arbitrary transactions. So FTP has its limits, but it certainly is
available, and one can readily get free or cheap FTP sites for workgroups to
use to coordinate their communications.
Essentially, right now that "to do" application writes transaction files in
XML to a directory called an archive. There is a Java class (and a related
example application) that does an rsync-like process between local files in
an archive directory and a remote FTP directory. The XML files for
transactions include sets of somewhat RDF-like triples. One can build
arbitrary structures with these triples. The current example just uses some
triples to build a "to do" list.
An example of a triple in XML:
<value>add ftp backend for multi-user support</value>
Another example that is related to the previous:
<entity>add ftp backend for multi-user support</entity>
The context essentially defines how to interpret the fields of triples in
that context, sort of a file type associated with a file name. One can write
simple applications that assume a low level of abstraction by embedding
English phrases for entity names or attribute names, or one could move to a
higher level of abstraction that would better support multi-lingual systems
by using arbitrary identifiers which are defined in other transactions which
provide text in various languages to define what the identifier is supposed
Transactions include licensing and authoring information as well as
I currently use a brute force method to look up and find matching triples in
archives (like finding all triples that match triples with ("improve GUI",
"description") to find the latest description of that "improve GUI" item,
but on my recent machine brute force works well enough for several thousand
triples, which is enough for at least a small collaborative effort. I know
of ways to improve on search performance and also reduce memory use, but I'm
focusing on applications at the moment.
I have some other possibilities in mind for doing the coordination besides
FTP. The backends used for coordination are arbitrary. One could in theory
use SFTP, rsync, CGI, SVN, git, a remote database, a mailing list, direct
peer sockets, or whatever else to coordinate these transactions across
multiple users, as long as a backend was written to synchronize the
transactions. While in theory transactions are sequential and depend on each
other, they hope is that in practice they are defined and used in such a way
by applications that are tolerant of messy merges and which support various
clean up done by hand if needed after some messy merging. One could also use
The current version is entirely in Java. There is no release yet, the code
is all in SVN:
Some of the file paths for the examples might need to be adjusted if you
check it out differently than I did from SVN (my checkout is of the full SVN
archive and has trunk as a subdirectory along with branches and tags).
Anyway that's one of the things to be cleaned up down the road.
I don't expect it is that useful for anyone yet; I'm just reporting on progress.
It will only be interesting to people here if there are "open manufacturing"
related applications written on top of it (or perhaps more general
communication tools which also might be useful for any stigmergic project).