11 Replies to “Coherence — The Director’s Cut”

  1. I really enjoyed this version of the paper! I thought it was much better then the draft you posted earilier – more meaty 😉

    Also looking forward to more info about Coherence – i’ve been following Subtext for a long time, and enjoying watching and reading and experiencing how your thinking about this problem space has changed and evolved. Interesting stuff. Thanks for sharing.

  2. Your stuff just got a mention on Martin Fowler’s blog. He was discussing the DSL workbench that Intentional Software has just released, several years later than planned, which apparently allows domain experts to build live test cases alongside their programs, among other fancy things.

    http://martinfowler.com/bliki/IntentionalSoftware.html

    (Not sure of the details, still waiting for the video to download 🙂

  3. Hi, just found out about Coherence via a reddit post; I just wanted to point out some interesting similarities between your approach and something I wrote called the Trellis (http://peak.telecommunity.com/DevCenter/Trellis), a Python library that was originally inspired by the Lisp “Cells” library (http://common-lisp.net/project/cells/). I added transactionality, including determining side-effect order by rollback in much the same way as Coherence, and it even has the same “multiple writes to a variable must set the same value” rule.

    I’m planning to study what you’ve done with Coherence to see if there are any ideas I can steal for future versions of Trellis; thought you might appreciate knowing about Trellis for the reverse.

    [Note to readers: I haven’t studied Trellis carefully yet, but it does appear to incorporate the basic idea of transactional rollback to find an event ordering, which makes it the first AFAIK. I will add an appraisal to the paper. Congratulations to PJ for thinking up new ideas and putting them to work. — Jonathan]

  4. I thought you were bad at understanding how to reach people. According to Martin Fowler, Charles Simonyi just spent the past 3+ years working on a software program, released version 1.0, and didn’t tell anyone!

  5. I am a Subtext fan. Anybody who works on example driven visual programming languages is my hero!

  6. Hi Jonathon. I like the paper very much. One small correction (maybe a typo): you write on the first page that “in the MVC architecture it falls to the controller to coordinate change”. This is not correct. In the MVC architecture it is the responsibility of the *model* to coordinate change. The controller is just a linear translation of events at the device/technology level to events at the domain-model level. The model then changes state in response and announces change notifications that cause other parts of the system to change to be in sync with the model.

  7. Nat,

    No, it is correct. The model does not coordinate anything, except for its own internal state-process. As I’ve told you before, this is a topic that kills programmer brain cells.

    It is also not as simple as “The model then changes state in response and announces change notifications that cause other parts of the system to change to be in sync with the model.”. This is only a trivial case for coordination.

  8. I really like the concept of coherent reaction.
    I am currently building my own model-driven framework and the bootstrapping of the model classes is a case where coherence would really make like simpler for me. The order in which the model classes are bootstraps is very implementation depenedent. I have spent *many* hours rewriting the bootstrapping code because every time I make a change to the framework I bust the bootstrapping because the order in which things have to be done changes. I would very much like the bootstrapping code to just figure it out for itself!

    However, it seems to me that it would be impossible to get developers to adopt a new language just to get the benefits of coherence.
    I think you would be better off creating libraries in mainstream languages that implement coherence.
    Once developers have become addicted to the coherence library in the language of their choice it would be easier to sell them a whole new language with coherence as a principle feature.

    I can imagine such a library for Java, for instance an API that would create ‘coherent’ proxies for JavaBean instances and would implement coherence when changes are made to the beans.
    Perhaps creating some annotations that automagically make some classes coherent would be appealing to developers.
    I would be interested in contributing to such a project.

  9. Hello,

    “(Adjusting the first argument instead of the
    second is an arbitrary convention.)”

    Would not it make sense to adjust the arguments which were derived?

    task2: task1(name: “task2”, start = task1.end)

    – here you are “linking” task2.start to task1.end, should not therefore the task1.end change _because_ it was linked, and not by convention (of changing the 1st argument)?

    Interesting stuff BTW…

    Kind regards,

    Vlad

  10. Hello there,

    after a semi-random walk (or diversional websurf) from a video about a multitouch VJ application [1], I happened across a list of visual programming languages [2] from which the link “subtextual.org” leapt out of the page at me (for reasons you might discover to be obvious), and from there I came to read your Coherent Reaction draft [3].

    The problem you were describing reminded me about something I read about reasonably recently, and the paragraph, “An analysis of Adobe’s desktop applications indicated that event handling logic comprised a third of the code and contained half of the reported bugs” seemed very familiar… I don’t know anything about your reference #29 (quick question, how does one cite references within references?), but went back to look for this other thing I’d seen before and (re-)found Adam and Eve, a property model library and layout library, respectively, released as part of the Adobe Source Libraries [4].

    I suppose you’ve been at least to have a poke around in their code, and if not, suggest it might not be such a bad idea to do so. :o)

    Before I read this page, I read another alarming development about SmallTalk in the days of Fortran and *shudder* Cobol [5]. The shudder for Cobol is only because I used to have to deal with it – even the mostly simple Cobol I had to deal with gave me GOTO 1500-SPAGHETTI-NIGHTMAREs, or something to that effect; Fortran’s details are part of the larger domain of blissful ignorance. I hope you don’t mind that I’ve taken one of the commenter’s ideas to reference my own comments – I happen to find it slightly amusing, even the way that “papers” appear like this way. It has occurred to me that the textual representation of the references as a number in brackets is excessively eye-catching, and perhaps that the “target audience” (or perhaps pre-target, if the reviewers blocking access to publication are not considered the target) somehow regard the references as more important than the content of the paper. Comments about (not) standing on the shoulders of giants and so on… in any case, nothing much is really new. And little of what is (apparently) new is useful. Really useful. We (as humans) are just as repressed as ever, and indeed the fancy new tools invented by people are mostly used to repress (if not kill) people all the more.

    You added a note to another comment, writing “Academia is not very hospitable” and about needing to come out of a coccoon [6]. Go on a trip to some place where the people have nothing. Go to a place where there are more important things than writing a new computer programming language, such as even learning to write (the Akha are in the process of creating a formal written script for their language) or fulfil basic needs such as food and shelter. I haven’t done it properly myself – the closest has been spening a few days in/near Ho Chi Minh City in Vietnam – but it is a good way to force you to reevaluate what is important, or necessary.

    As for the potential problem of not having sufficiently studied the relevant “literature”, why hasn’t some genius created a new what-sure-to-call-it-pedia that is easily searched for the basic ideas and concepts that people might be building on. I’m sure that trying to find references all the time is a massive, massive, MASSIVE redundant waste of resources, better spent watching grass grow.

    Thankyou and goodmorning.

    -spxl

    Links
    [1] VPlay: An Interactive Surface for VJing —

    [2] Google Directory – Computers > Programming > Languages > Visual — http://www.google.com/Top/Computers/Programming/Languages/Visual/
    [3] Coherant Reaction — http://coherence-lang.org/Onward09.pdf
    [4] Adobe SOftware Technology Lab: ASL Overview — http://stlab.adobe.com/group__asl__overview.html
    [5] What if Smalltalk were invented today? — http://alarmingdevelopment.org/?p=209
    [6] ibid (?) — http://alarmingdevelopment.org/?p=209#comment-57711

Comments are closed.