First things first: it's an unfinished work in progress and an experiment on which I've been hacking during my 40 minute train journey in to work. So, yes, "something something - Kademlia-like crypto-signed homoiconic datastore - something" just about sums it up.
I can't spend a lot of time answering right now, but I gave a short presentation about the drogulus at this year's Opentech in London which resulted in the following blog post (giving a high-level overview of my motivations and intentions): http://ntoll.org/article/ppdd I followed up with some clarifications in this post: http://ntoll.org/article/drogulus-questions-and-clarificatio...
I have several more blog posts in draft form about other aspects of the system.
It's very early days and I'm pretty sure there are lots of problems with what I'm doing. But, as I mentioned in the first post referenced above, I'm having too much fun to stop. ;-)
Happy to answer questions and constructive feedback, comment and critique is most welcome.
I've been working on a similar project for about a year now. Interested in exchanging notes? We are basing ours on a Chord DHT for better robustness.
benshoof@cs.gsu.edu
And that is my fault. I left out a letter. Now that you have displayed interest and I feel less awkward about directly approaching you I just went ahead and emailed you.
Instead of designing your own language Logos, have you considered using Clojure, which is also homoiconic, is a modern variant of lisp, and was/is designed by programmers who have industry experience, so it's not an academic experiment?
I did seriously look at Clojure but it doesn't quite fit my requirements. Also, I didn't say the drogulus was an academic experiment... that makes it sound far too impressive. ;-)
Could you please go into more detail on what were your requirements that Clojure did not fit?
What you have so far IS an impressive, audacious, idea. You can probably tell by the amount of attention you have gotten for it already. False humility is a kind of arrogance too, you know. Honest humility takes more work. Any time anyone starts talking about writing a new language, either they have not thought through all the challenges that would have to be met, like a boy trying to build a rocket to the moon using fireworks, or they are trying to do something impressive. Which are you?
Regarding Clojure: If the drogulus comes to anything then I'm building a working reference specification. I chose to write it in Python and comment ubiquitously to make sure the code is easy to re-implement in other languages or on other platforms. Adding a dependency on Clojure would make this less likely to happen; the drogulus would instantly be linked to the JVM (and other platforms upon which Clojure runs).
I've used Clojure before "for fun" and I like it - it's not a problem with the language per-se. Rather it's more a case of wanting Logos to be small, simple and "fit" the drogulus. Does this make sense?
I agree with you about developing new languages. That's why I chose to re-implement a Lisp: I don't want to invent a new language. However, I do want a language that meets my need for "fit", simplicity, portability and compactness (I'd like my kids to be able to understand and program in Logos). To use a musical analogy, Logos is a re-arrangement an old classic (Lisp) for different ensembles. ;-)
This is a work in progress and I need to push ideas in to code and get feedback as soon as possible. Only then will you be able to tell if I'm playing with fireworks or doing something impressive. Furthermore, while I have a very clear idea of what needs doing, I don't think this is a one-person job. That's why the biggest challenge for me right now is to transition the drogulus from a one person playtime project hacked together during a daily 40 minute commute in to London in to a functioning multi-person project with an active community of users.
Now, that would be impressive!
As always, I'm happy to answer questions and welcome constructive comment, critique and feedback.
Perhaps "Learning how to write a lisp-like language" is a requirement? Or perhaps it's low memory usage and fast start-up time for short-running tasks. Does it matter what he chooses for his own project?
I kinda like Clojure, but I don't think it would occur to me to default to it every time someone mentions the word 'lisp'. Not because it's not an adequate language, but there are downsides to using it for some jobs.
Oh wonderful, thanks for the reply! And thanks for the links (the "Politics, Programming, Data and the Drogulus" post had already been placed in my when-have-time-random-reading-list, cool.) I'll be sure to follow up with comments if I have any later on.
I assume that the crypto identity part of the system is indeed motivated by Sybil-like attack vector towards similar P2P systems, or something of the sorts.
(Warning: convoluted phrasing follows --) Logos programs and anonymity: I assume your system is not primarily designed to provide some level of anonymity (in the sense of message-originator decoupling). Some P2P systems try and implement a characteristic by which it is impossible to say whether a particular message seen in the network is originating from node X, or was simply broadcast by some node(s), one of which is X. Of course, if we have node identities and message signing, this is obvious, but - the idea could be to decouple actual pub-private-key identities from the nodes themselves (or perhaps implement an 'anonymous messaging' identity system atop the other, so there'd be identities for nodes, and for persons/people/virtual-identities, the two sets obviously overlapping but not homomorphic to each other (a node could broadcast/introduce a myriad of secondary identities, etc.)
Thing is, if Logos could be used to organically extend the system to implement such functionality, it would be rather impressive indeed. (By 'could' I do not suggest anyone doing it, merely observing my thought that the very possibility would be a curious fact about drogulus.)
/end of coffee-related rant, gtg, thanks for the reply again!
Yes, the crypto identity aspect goes some way to address Sybil like problems.
Regarding anonymity: you're only as anonymous as your association with your public key[s]. Given that items (k/v pairs) stored in the DHT are self-contained in terms of proving provenance it doesn't matter from what node they originate. Put plainly, there is no need for a node id (a SHA512) to be linked to a specific user (identified by their public key). I explain how signing items works here: http://ntoll.org/article/drogulus-questions-and-clarificatio...
For me, the most curious fact about the drogulus is that it is a ubiquitous ecosystem for asynchronously processing Logos code and data. If you see the implication of this then you'll get where I'm trying to go with the drogulus.
This really is a great project. Thanks for providing the links. It looks like you're thinking about the right things in building something like this. I'm excited to look at the code!
I'm the originator of the drogulus.
First things first: it's an unfinished work in progress and an experiment on which I've been hacking during my 40 minute train journey in to work. So, yes, "something something - Kademlia-like crypto-signed homoiconic datastore - something" just about sums it up.
I can't spend a lot of time answering right now, but I gave a short presentation about the drogulus at this year's Opentech in London which resulted in the following blog post (giving a high-level overview of my motivations and intentions): http://ntoll.org/article/ppdd I followed up with some clarifications in this post: http://ntoll.org/article/drogulus-questions-and-clarificatio...
I have several more blog posts in draft form about other aspects of the system.
It's very early days and I'm pretty sure there are lots of problems with what I'm doing. But, as I mentioned in the first post referenced above, I'm having too much fun to stop. ;-)
Happy to answer questions and constructive feedback, comment and critique is most welcome.
N.