[HN Gopher] Tuple Space (2014)
       ___________________________________________________________________
        
       Tuple Space (2014)
        
       Author : paulgb
       Score  : 90 points
       Date   : 2023-04-28 14:06 UTC (8 hours ago)
        
 (HTM) web link (wiki.c2.com)
 (TXT) w3m dump (wiki.c2.com)
        
       | imglorp wrote:
       | Tuple spaces implementations and their efficiency - 2016
       | 
       | https://arxiv.org/pdf/1612.02979.pdf
       | 
       | > SUMMARY
       | 
       | > Among the paradigms for parallel and distributed computing, the
       | one popularized with Linda, and based on tuple spaces, is one of
       | the least used, despite the fact of being intuitive, easy to
       | understand and to use. A tuple space is a repository, where
       | processes can add, withdraw or read tuples by means of atomic
       | operations. Tuples may contain different values, and processes
       | can inspect their content via pattern matching. The lack of a
       | reference implementation for this paradigm has prevented its
       | widespread. In this paper, first we perform an extensive analysis
       | of a number of actual implementations of the tuple space paradigm
       | and summarise their main features. Then, we select four such
       | implementations and compare their performances on four different
       | case studies that aim at stressing different aspects of computing
       | such as communication, data manipulation, and cpu usage. After
       | reasoning on strengths and weaknesses of the four
       | implementations, we conclude with some recommendations for future
       | work towards building an effective implementation of the tuple
       | space paradigm.
        
       | bradneuberg wrote:
       | One of the inventors of the original Tuple Spaces idea was David
       | Gelernter. He was actually targeted by the Unabomber, and
       | survived but was heavily hurt
       | (https://www.nytimes.com/1995/05/21/magazine/the-unabomber-
       | an...). David was a brilliant researcher, with lots of great
       | ideas including Mirror Worlds
       | (https://en.wikipedia.org/wiki/Mirror_Worlds). I sometimes wonder
       | if what the Unabomber did to him in early 90s slowed David down,
       | and made it harder for David's idea to get out there.
        
         | cratermoon wrote:
         | _Mirror Worlds_ (the book) is a great read. I have it on my
         | shelf next to his other book, _Machine Beauty_. I didn 't know
         | he was a victim of the Unabomber, that's unfortunate.
        
       | RodgerTheGreat wrote:
       | "This site uses features not available in older browsers."
       | 
       | It is difficult to express the degree of my frustration with C2
       | being rewritten from a gunmetal HTML page that worked
       | _everywhere_ into an inaccessible heavyweight SPA mess with a
       | frankly bizarre UI.
        
         | smusamashah wrote:
         | C2 is such a good resource. It's a shame a simple, plain
         | readable and most accessible website has been turned into a
         | bloat.
        
         | beefman wrote:
         | It does look like just another bloated SPA, but Federated Wiki
         | was a geniune advance when Ward was developing it a decade ago.
         | Still is. Shame it hasn't caught on.
         | 
         | I agree it was a mistake to move the existing c2 content into
         | it. Maybe a better try was to start a new wiki of some kind.
         | But the temptation to leverage the existing site to launch
         | Federated Wiki is understandable.
        
           | colonwqbang wrote:
           | No offense, but how is it an advance? Who needs a wiki that
           | can't be edited? (If I'm mistaken about this, maybe someone
           | can educate me)
        
             | cratermoon wrote:
             | The federated wiki concept is that you run your own wiki,
             | and replicate, or "fork" content from other federated wikis
             | to yours.
        
             | andolanra wrote:
             | If you know git: a federated wiki works like that. To make
             | a federated wiki work like a traditional wiki, you can
             | think of there as being a "canonical copy" which you can
             | clone, make edits, and then use a 'pull request' process
             | for incorporating those edits back into the original. But
             | you also don't need to have a single source of truth: you
             | can, for example, have a group of people--say, students
             | studying for a class--who are building their own wikis, and
             | among each other they can copy in pages, make changes, copy
             | changes back, and so forth, all building a web of things.
             | In the same way that git can replicate a subversion-like
             | workflow but also introduces the possibility of different
             | workflows, a federated wiki can replicate a traditional
             | wiki but also has a number of workflows it can accomplish.
        
         | rus20376 wrote:
         | Is C2 doing some sort of A-B testing? Because when I go to the
         | link I see the exact same interface that I have seen there for
         | the past quarter century or so!
        
           | Jtsummers wrote:
           | Click on any of the links and instead of taking you to a new
           | page it's a pop-up page on top of the existing one (plain
           | left click, not middle-click or whatever you have registered
           | to "open in new tab"). Happened a few years back, very
           | annoying. Performance has improved but I remember a few years
           | ago getting a noticeable delay on some pages.
           | 
           | If you don't follow any links (or you open them in new tabs)
           | it does pretty much look like it always has.
        
         | _a_a_a_ wrote:
         | Let them know.
        
       | Julesman wrote:
       | [flagged]
        
         | cwillu wrote:
         | While I agree that the current rendition is unfortunate, it's a
         | bit amusing hearing someone say that the literal inventor of
         | the wiki is a twisted ego that should be completely ignored.
        
           | Julesman wrote:
           | I stand by my statement. Terrible people can build good
           | things.
        
             | dang wrote:
             | Both of your comments in this thread broke the site
             | guidelines badly. Can you please review
             | https://news.ycombinator.com/newsguidelines.html and use
             | the site as intended?
        
       | jitl wrote:
       | There's similar ideas almost in things like Apache Ignite,
       | Hazelcast, Datomic.
        
       | dmn322 wrote:
       | "that is, TupleSpace won't work on the Internet, precisely
       | because of its underlying "distributed shared memory" idea".
       | anyone know why?
        
         | Groxx wrote:
         | Given the bare-bones API and semantics, probably because it
         | describes absolutely no fault tolerance at all.
         | 
         | Lose a processor or a message and it's just lost. Try to
         | address that with copy-put-take and you now have duplicates.
         | Try to address _that_ and you now have byzantine failures with
         | no resolution or supporting tooling. So it 's wonderfully
         | simple until you need to do something outside of a single
         | process and then it's useless.
         | 
         | Internet-friendly stuff generally has a hard requirement on
         | being fault tolerant.
        
         | tyingq wrote:
         | Some further notes are here:
         | http://wiki.c2.com/?TupleSpaceScalability
        
         | convolvatron wrote:
         | near the beginning of the Scientific Computing Associates work
         | (?) they implemented an extended model that supported multiple
         | spaces - to scope the number of machines involved in a given
         | update.
        
       | bradneuberg wrote:
       | I always thought Tuple Spaces were a super cool idea and am a bit
       | bummed out they never took off. JavaSpaces was based on the idea
       | but had a somewhat limited release.
        
         | jjtheblunt wrote:
         | having ported Yale's Gelernter and Carriero (sp?) Tuple Spaces
         | to Alliant FX-2800 in 1988, so familiar for a long time, you
         | just gave rise to a question that I can not answer.
         | 
         | Is NoSQL close enough, so MongoDB etc displaced tuple spaces?
        
       | infinite8s wrote:
       | DynamicLand (Bret Victor's 50yr research project) uses a
       | tuplespace model, except instead of basic pattern matching on
       | content and type it uses a datalog-like query language (the
       | wishes and claims of RealTalk).
        
       | discreteevent wrote:
       | Another interesting technology that was inspired by tuple spaces
       | is DDS which tries to be a distributed tuple space for
       | communication between embedded/field devices.
       | 
       | https://en.wikipedia.org/wiki/Data_Distribution_Service
        
         | rektide wrote:
         | I hadn't heard of DDS until an hour ago, when I did some
         | preliminary research into GM's just open sourced Eclipse
         | uProtocol, their car IoT system built on Protobuf &
         | CloudEvents.
         | 
         | Among some usual suspect transports (http2, mqtt, android
         | binder), they listed DDS.
         | 
         | https://news.ycombinator.com/item?id=35742650
        
           | discreteevent wrote:
           | It's also used in ROS the robot operating system.
        
         | detaro wrote:
         | what makes it a "tuple space" vs a "message queue" system?
        
           | convolvatron wrote:
           | tuples don't have an implicit ordering and are pattern
           | matched on contents instead of 'head'
        
       | JackFr wrote:
       | I remember when tuple spaces were the new hotness and going to a
       | presentation from GigaSpaces at my local JUG.
       | 
       | And now I can't even remember the problem they solve or any
       | potential use cases. Weird.
        
         | Jtsummers wrote:
         | Primary problem: Distribute work on heterogenous data across a
         | cluster of heterogenous processes. Add new processes (either
         | additional workers or additional capabilities) by attaching
         | them to the existing shared tuple space. Add new data by
         | wrapping it into a tuple and tossing it into the pile. Add a
         | processor for the new data by having it search for a pattern
         | that picks up the new tuple.
         | 
         | Similar concept behind message queue based systems, service
         | oriented architecture, and many, many others. Though more pull-
         | based than push-based. You wouldn't explicitly launch a
         | process, you have a process that sits around waiting to for a
         | tuple to show up and then takes/copies it and does the work.
        
           | cratermoon wrote:
           | > Add new data by wrapping it into a tuple and tossing it
           | into the pile
           | 
           | In David Gelernter's original work, it's not just data. In
           | Linda, it's possible to put Objects in, which are little
           | executable (`eval` in Linda terms) which a processor can
           | manipulate through whatever interface the tuple type exposes.
        
             | infinite8s wrote:
             | This exactly. Sadly the idea went through a low pass filter
             | and just became a way to pass around dumb data objects.
        
             | Jupe wrote:
             | That does not sound very secure.
             | 
             | Also, what's to stop another processor "finding" the Object
             | before the intended recipient?
        
               | cratermoon wrote:
               | 1. Just bare like that, it's not. Unless, of course, the
               | object requires a key to allow a processor to execute it.
               | See for example Capability-Based Access Control
               | 
               | 2. In TupleWorld, there's no concept of "the" intended
               | recipient. The tuple's properties determine what kind of
               | processor would match. If those properties happen to only
               | match a single processor, you'd get that 1:1 mapping you
               | want, but that's missing the point of tuple spaces.
        
               | Jupe wrote:
               | Just coordinating the 1:1 mapping I might want is fraught
               | with challenges. Network delays, out-of-order execution,
               | stampeding herd situations, poison objects, processors
               | crashing (or being rebooted) at random times... I'm not
               | seeing the benefit of a "bag" of objects to be processed
               | whenever by whoever or whatever.
               | 
               | Perhaps this is attempting to solve a problem I've not
               | come across. While it sounds interesting, I'm not sure I
               | see the benefit? (Probably me just being short-sighted).
        
               | cratermoon wrote:
               | It's a way of doing massively parallel computations in a
               | scatter/gather system. I suggest looking up the paper
               | "Linda in Context. I'd provide a link but I'm on my
               | phone.
        
               | Jtsummers wrote:
               | Here you go (not on mobile):
               | 
               | https://dl.acm.org/doi/10.1145/63334.63337 (free access)
        
               | cratermoon wrote:
               | Also worth reading are the "Linda Letters" from
               | Communications of the ACM, October 1989, vol 32, no 10, p
               | 1244. I found an excerpt at https://web.archive.org/web/2
               | 0160901000000*/https://www.cyph..., starting on page 4 of
               | the PDF
        
               | infinite8s wrote:
               | Somehow this model works to build complex organisms in
               | embryology...
        
               | dllthomas wrote:
               | Still have a problem with viruses, though...
        
         | kqr wrote:
         | The way I think about it is as the ultimate decoupling between
         | producer and consumer. Bundling producer and consumer together
         | into one unit spatially couples them. But even if the producer
         | runs as a separate service that waits for requests from the
         | consumer the interaction is still temporally coupled.
         | 
         | By having the producer gradually update the responses to all
         | possible queries to a tuple space, completely on its own
         | schedule, there is not even temporal coupling between it and
         | the consumer.
        
       | macintux wrote:
       | For a long time I toyed with the idea of implementing a tuple
       | space as a pub/sub mechanism for system alerts.
       | 
       | I tried to get Java Jini, specifically JavaSpaces which was
       | inspired by Linda, up and running a long time ago as a hobby
       | project, but it seemed like it had been long-neglected even then
       | and my limited knowledge of the JVM world left me stranded.
        
         | pag wrote:
         | I implemented something like this! The Dr. Lojekyll [1] datalog
         | system was built around the idea of inputs as receiving
         | messages over time, and publishing outputs (also as messages)
         | or responding to queries (using materialized views). It worked
         | quite well, but it's differential nature ended up being the
         | downfall for the usecase we had in mind.
         | 
         | Specifically, it had no way to "extend" its consistency model
         | out to consumers of its messages, and so if consumers were also
         | producers, then this distributed system as a whole could enter
         | into a state where parts of it are lying to itself!
         | 
         | Otherwise, there were some really fun things you could do with
         | it. For example, we could have per-client databases that would
         | bring themselves up-to-date given the differential outputs of
         | the server database. This would let you engage in a kind of
         | manual sharding of data.
         | 
         | [1] https://www.petergoodman.me/docs/dr-lojekyll.pdf
        
       | jsmcgd wrote:
       | [flagged]
        
         | tonyarkles wrote:
         | Heh, nice ChatGPT reply... it's more eloquent than what I was
         | going to reply with, and doesn't start with "Grad school was a
         | long time ago, but from what I recall..."
         | 
         | > To mitigate this, tuple spaces may use locking or
         | transactional mechanisms to ensure consistency and prevent
         | conflicts.
         | 
         | I think I played with some kind of TupleSpace implementation
         | around 2009 or so (as part of a "paradigms of distributed
         | systems" course) and I'm pretty sure it was some kind of hybrid
         | STM (software-transactional memory) / TupleSpace thing that
         | addressed that issue. It was pretty cool... again from vague
         | memories here, I believe it only had tuple-level locking, but
         | you could build a bunch of really neat higher-order
         | synchronization primitives on top of just tuple-level locks.
        
         | macintux wrote:
         | Your comment was flagged, I assume for the ChatGPT dump, but
         | that seemed unreasonable to me so I vouched for it.
        
       ___________________________________________________________________
       (page generated 2023-04-28 23:00 UTC)