MessiandNeymar

  • Subscribe to our RSS feed.
  • Twitter
  • StumbleUpon
  • Reddit
  • Facebook
  • Digg

Tuesday, March 26, 2013

Some versioning theory

Posted on 9:28 AM by Unknown

As the old saying goes:

In theory, theory and practice should be the same. In practice, however ...

As is no surprise, when I get interested in something, I like to understand both the theory and the practice. By temperament, as it turns out, I'm much more of an engineer than a theoretician, so it typically turns out that I spend much more of my time understanding the practice than the theory, but I do make my efforts to comprehend the theory behind what I'm doing, whether that be concurrent programming, database storage systems, compilers, networking protocols, distributed object systems, etc. (those being some of my major interests over three decades of computing).

Anyway, my current interests are in the area of version management, so I find myself once again looking for information on both the practice and the theory of versioning.

So I've been spending a lot of time recently catching up with a fascinating project being conducted by Microsoft Research: Concurrent Revisions.

The Revisions project introduces a novel programming model for concurrent, parallel, and distributed applications.

At first, it might not be obvious why this is relevant to version management software, but the research team explain:

To simplify this problem, we introduce a novel programming construct called “revisions”, which is inspired by revision control systems commonly used by development teams. Revisions are forked and joined much like asynchronous tasks. However, rather than accessing global shared data directly (and thereby risking data races or atomicity violations), all revisions execute on a (conceptual) copy of the shared state, a "global mutable snapshot" so to speak. Any changes performed in a revision apply to that snapshot only, until the revision is joined at which the changes become globally effective.

This is, actually, a fairly radical idea, as they explain in their foundational 2010 paper presented at the OOPSLA conference: Concurrent Programming with Revisions and Isolation Types

Note that our use of revision diagrams to reason about program executions is a marked departure from traditional concurrency models such as sequentially consistent memory or serializable transactions, which reason about concurrent executions by considering a set of corresponding totally ordered sequential histories. These traditional models make the fundamental assumption that programmers must think sequentially, and that all concurrency must thus be ‘linearized’ by some arbitration mechanism. However, such arbitration invariably introduces nondeterminism, which may easily present a much larger problem for programmers than direct reasoning about concurrent executions.

I love looking at the revision diagrams in their paper, unsurprisingly, I guess, since I think that tools like the Perforce Revision Graph Tool are extremely powerful ways to comprehend complex information in a visual form.

And since I, myself, have found that my career has moved from starting with a deep fascination with and understanding of sequentially consistent memory models and serializable transaction models, on to my current fascination with version management, asynchronous replication, and conflict resolution, it is probably no surprise that I find the Microsoft Revisions project so worthwhile.

However, since the project was started, the team have gone on to flesh out their ideas in considerable detail, and have explored the use of the techniques in other problem domains beyond the original game-programming arena.

For example, last summer they presented work at ECOOP: Cloud Types for Eventual Consistency.

Our system uses revision diagrams to guarantee eventual consistency, as proposed in [ S. Burckhardt, M. Fahndrich, D. Leijen, and M. Sagiv. Eventually Consistent Transactions.]. Conceptually, the cloud stores the main revision, while devices maintain local revisions that are periodically synchronized. Revision diagrams are reminiscent of source control systems and provide an excellent intuition for reasoning about multiple versions and eventual consistency.

Providing adequate programming models for eventually-consistent storage systems is a very important topic nowadays, and the Microsoft Revisions team is doing some fascinating research. Their most recent work in this area is brand new this week: Understanding Eventual Consistency

At the moment there is a lot of confusion about the semantics of eventual consistency, as different systems implement it with different sets of features and in subtly different forms, stated either informally or using disparate and low-level formalisms.

Thank you Microsoft, for sponsoring this research, and for enabling the team to freely share their work with the world. It is much appreciated by people like me!

I'm looking forward to digging through their results in detail, and to continuing to follow their research as it progresses.

Email ThisBlogThis!Share to XShare to FacebookShare to Pinterest
Posted in | No comments
Newer Post Older Post Home

0 comments:

Post a Comment

Subscribe to: Post Comments (Atom)

Popular Posts

  • Shelter
    I meant to post this as part of my article on Watership Down , but then totally forgot: Shelter In Shelter you experience the wild as a moth...
  • The Legend of 1900: a very short review
    Fifteen years late, we stumbled across The Legend of 1900 . I suspect that 1900 is the sort of movie that many people despise, and a few peo...
  • Rediscovering Watership Down
    As a child, I was a precocious and voracious reader. In my early teens, ravenous and impatient, I raced through Richard Adams's Watershi...
  • Must be a heck of a rainstorm in Donetsk
    During today's Euro 2012 match between Ukraine and France, the game was suspended due to weather conditions, which is a quite rare occur...
  • Beethoven and Jonathan Biss
    I'm really enjoying the latest Coursera class that I'm taking: Exploring Beethoven’s Piano Sonatas . This course takes an inside-out...
  • Starting today, the games count
    In honor of the occasion: The Autumn Wind is a pirate, Blustering in from sea, With a rollocking song, he sweeps along, Swaggering boisterou...
  • Parbuckling
    The enormous project to right and remove the remains of the Costa Concordia is now well underway. There's some nice reporting on the NP...
  • For your weekend reading
    I don't want you to be bored this weekend, so I thought I'd pass along some articles you might find interesting. If not, hopefully y...
  • Are some algorithms simply too hard to implement correctly?
    I recently got around to reading a rather old paper: McKusick and Ganger: Soft Updates: A Technique for Eliminating Most Synchronous Writes ...
  • Don't see me!
    When she was young, and she had done something she was embarrassed by or felt guilty about, my daughter would sometimes hold up her hand to ...

Blog Archive

  • ▼  2013 (165)
    • ►  September (14)
    • ►  August (19)
    • ►  July (16)
    • ►  June (17)
    • ►  May (17)
    • ►  April (18)
    • ▼  March (24)
      • Easter weekend reading
      • BioShock Infinite: a very short GUEST review
      • Age, by Bryan
      • Some versioning theory
      • Go Magnus go!
      • Madness!
      • A Glorious Defeat: a very short review
      • Same Trailer Different Park: a very short review
      • Stuff I'm reading on a Friday afternoon
      • Thought for the day
      • Crypto-Turing in 2012
      • Friday afternoon reading
      • Google Reader RIP
      • PS3 Network Diagnosis
      • Spot the Bryan
      • Tick ... tick ... tick ... Magnus is coming!
      • Tears of the Jaguar: a very short review
      • Sunday Morning Legos
      • Some interesting SSD tidbits
      • A couple of interesting papers
      • It's probably much better with a pitcher of margar...
      • Important it ain't
      • The Witness
      • Coursera quick hit
    • ►  February (19)
    • ►  January (21)
  • ►  2012 (335)
    • ►  December (23)
    • ►  November (30)
    • ►  October (33)
    • ►  September (34)
    • ►  August (29)
    • ►  July (39)
    • ►  June (27)
    • ►  May (48)
    • ►  April (32)
    • ►  March (30)
    • ►  February (10)
Powered by Blogger.

About Me

Unknown
View my complete profile