Tag Archives: diff

MoC Vision

Normen, Roland and I just launched MoC as open source project. Finally, I have found some time to sketch the vision of our joined efforts.

Social media is all around us nowadays. I just created my Google+ account and two circle for scala and social media. I already found most people that I also follow on Twitter in these areas. For me these tools are a valuable source of information in the first place: Following the scala people on Twitter has provided me with many great blog posts, papers, slides — their tweets and posts provide me with a notion of which information on the web is relevant in that area. Their activities provide me with triggers on latest news — on what has changed. They relieve me from collecting information, from having to cope with management of change (moc) on my own. And this is where the MoC Vision starts.

But before we get there a few more thoughts on research papers. Research is great and allows you to make so many helpful assumptions. One assumption that both, Normen and I, made in our work was to simply assume that users will provide us with all the data we need to do these fancy computations. For Normens work, this is a complex multi-dimensional graph, where nodes correspond to units of informations (infoms) and edges denote the typed dependencies between these notes. Given the graph, locutor can do all these nice semantic differencing (diff), change impact analysis (cia), propagation and (semi) automatic adjustments. But where do we get this graph from in the first place?

Wouldn’t it be nice if we could apply social media activities (some of us are already used to in private and professional life) in order to create a moc graph from documents? Providing us with interlinked snippets of code, requirements documents, test cases, … and their interrelations. Allowing us to easily search, filter nodes and edges to provide different views (aka lenses). And then, at some point, providing the basis for Normen’s smart mod computations?

So what Roland, Normen and I have in mind is a two fold tool. A Web Frontend that allows users to create a graph (see Roland’s posts) and a backend that takes a graph and provides services like diff, cia, propagation.

The frontend should be
- social
- easy to use, intuitive
- adaptable (e.g. in terms of colors, layout)
- accessable (html5 + jquery rather than java or flash)

It should allow users to
- create, label and type nodes
- create, label and type edges
- load/safe a graph
- query for service provide by the backend

The backend should be
- performant
- secure
- reliable
and compute
- difference to previous versions of the graph
- filter the graph and the differencing (lenses, equality model)
- compute impact of changes along the edges of the graph
- propagate changes …

Well, still very abstract. But we will get more concrete as we go along. So please don’t yet blame me.