<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description>

  var _gaq = _gaq || [];
  _gaq.push([‘_setAccount’, ‘UA-21133290-1’]);
  _gaq.push([‘_trackPageview’]);

  (function() {
    var ga = document.createElement(‘script’); ga.type = ‘text/javascript’; ga.async = true;
    ga.src = (‘https:’ == document.location.protocol ? ‘https://ssl’ : ‘http://www’) + ‘.google-analytics.com/ga.js’;
    var s = document.getElementsByTagName(‘script’)[0]; s.parentNode.insertBefore(ga, s);
  })();


Everything you need to know about 
Literate Modeling and Collaborative design
new TWTR.Widget({
  version: 2,
  type: 'profile',
  rpp: 20,
  interval: 6000,
  width: 'auto',
  height: 50,
  theme: {
    shell: {
      background: '#7d797d',
      color: '#ffffff'
    },
    tweets: {
      background: '#ffffff',
      color: '#000000',
      links: '#0066ff'
    }
  },
  features: {
    scrollbar: false,
    loop: true,
    live: true,
    hashtags: true,
    timestamp: true,
    avatars: false,
    toptweets: true,
    behavior: 'default'
  }
}).render().setUser('alex_lagarde').start();
</description><title>Literate Blogging</title><generator>Tumblr (3.0; @alagarde)</generator><link>http://alagarde.tumblr.com/</link><item><title>Intent transcript is available - Agile ALM 2012</title><description>&lt;p&gt;Last week was the Eclipse Con 2012, co-located with the &lt;a href="http://www.eclipsecon.org/2012/agilealm" title="Agile ALM Connect"&gt;Agile ALM Connect conference&lt;/a&gt;. I gave a talk about &lt;a href="http://wiki.eclipse.org/Intent" title="Intent wiki"&gt;Intent&lt;/a&gt;, focusing on what Intent could bring to Agile practices. In a nutshell, Intent provides your documents with the ability to &lt;strong&gt;react to changes&lt;/strong&gt; (in design or in code), turning them into true &lt;strong&gt;Agile Documents&lt;/strong&gt;. You will also be able to &lt;strong&gt;capitalize on your work&lt;/strong&gt; by defining high-level constraints on your projects that will be available in the future.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.eclipse.org/intent/pages/transcripts/2012_AgileALMConnect/Intent_AgileALMConnect2012.htm" title="Intent transcript"&gt;&lt;img height="300" src="http://www.eclipse.org/intent/pages/transcripts/2012_AgileALMConnect/img4.png" width="400"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can get the whole transcript of the talk just by &lt;a href="http://www.eclipse.org/intent/pages/transcripts/2012_AgileALMConnect/Intent_AgileALMConnect2012.htm" title="Intent talk transcript"&gt;clicking here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The talk was a success, and a lot of people came afterward to talk about Intent and propose contributions or ideas. Please feel free to continue the discussion on the &lt;a href="http://www.eclipse.org/forums/index.php?t=thread&amp;amp;frm_id=219"&gt;Intent forum&lt;/a&gt;, I&amp;#8217;ll be glad to answer to any question, technical or not, and discuss about what could be done better.&lt;/p&gt;
&lt;p&gt;I got really good feedbacks on the EclipseCon website, 19 +1 for 2 +0 and no negative feedback. I can&amp;#8217;t resist to show you my 5 favorites: &lt;/p&gt;
&lt;p&gt;&lt;img alt="Intent feedbacks" height="345" src="https://lh3.googleusercontent.com/-fsq97kKThLA/T3rtVcD0ATI/AAAAAAAAAO4/5n3hIVHxgmE/s540/feedbacks.png" width="540"/&gt;&lt;/p&gt;
&lt;p&gt;And if you feel lazy, just take a look at these 2 demos (included inside the transcript) : &lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.eclipse.org/intent/pages/transcripts/2012_AgileALMConnect/img16.html" title="Intent in Action - part 1"&gt;&lt;img alt="Intent in Action - part 1" height="150" src="http://1.bp.blogspot.com/-8WCh_GhWujs/T2srwBl0NBI/AAAAAAAAAxc/-kBoluxbHhI/s400/IntentALM_v1.0.0.png" width="200"/&gt;&lt;/a&gt; &lt;a href="http://www.eclipse.org/intent/pages/transcripts/2012_AgileALMConnect/img22.html" title="Intent in Action - part 2"&gt;&lt;img alt="Intent in Action - part2" height="225" src="http://www.eclipse.org/intent/pages/transcripts/2012_AgileALMConnect/img22.png" width="300"/&gt;&lt;/a&gt;&lt;/p&gt;</description><link>http://alagarde.tumblr.com/post/20406007586</link><guid>http://alagarde.tumblr.com/post/20406007586</guid><pubDate>Tue, 03 Apr 2012 15:02:00 +0200</pubDate></item><item><title>Intent 0.7 is waiting for your feedback</title><description>&lt;p&gt;We are proud to announce that a first build of Mylyn Intent 0.7 is available. You can get it using the following update site:  &lt;a title="Intent 0.7 (Incubation)" href="http://download.eclipse.org/intent/updates/interim/0.7"&gt;&lt;a href="http://download.eclipse.org/intent/updates/interim/0.7"&gt;http://download.eclipse.org/intent/updates/interim/0.7&lt;/a&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You can use the &lt;a title="Installation Guide" href="http://wiki.eclipse.org/Intent/Installation_Guide#Intent_Installation"&gt;Installation Guide&lt;/a&gt; to help you installing Intent. &lt;/p&gt;
&lt;p&gt;&lt;a title="Intent document" href="https://lh6.googleusercontent.com/-Q_mkFAe-7x8/TqQ4_RntqTI/AAAAAAAAANA/b9GyPNlAL5U/s1600/screenshot.png"&gt;&lt;img src="https://lh6.googleusercontent.com/-r8qictwRmF4/TqQ5WyhT3nI/AAAAAAAAANs/W9t05FfWCIE/s935/screenshot_resized3.png" alt="Intent document" width="500" height="304"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To get started with Intent, we advice you to start with this &lt;a title="Get Started With Intent" href="http://wiki.eclipse.org/Intent/Getting_Started"&gt;tutorial&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We&amp;#8217;re planning to release Intent fast and frequently, so your feedback (technical or not) is welcome&amp;#160;!&lt;/p&gt;
&lt;p&gt;You can provide us feedback by : &lt;/p&gt;
&lt;ul&gt;&lt;li&gt;posting your questions, needs or ideas on &lt;a href="http://www.eclipse.org/forums/eclipse.intent"&gt;Intent Forum&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;syndicating to &lt;a href="http://dev.eclipse.org/mailman/listinfo/mylyn-intent-dev"&gt;Intent mailing list&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;filling the&lt;a href="http://wiki.eclipse.org/Intent/FAQ"&gt; Intent FAQ&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;filing bugzilla issues ( &amp;#8220;Mylyn&amp;#8221; project / &amp;#8220;Mylyn Docs Intent&amp;#8221; Product ) &lt;/li&gt;
&lt;li&gt;contacting us on &lt;a href="https://twitter.com/#!/intent_project"&gt;twitter&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;And while we&amp;#8217;re talking about Intent, don&amp;#8217;t forget that we will be at &lt;a href="http://www.eclipsecon.org/sessions/create-useful-documentation-mylyn-intent-step-further-application-life-cycle-management"&gt;EclipseCon Europe 2011&lt;/a&gt;. Attend to our talk and discover how Intent can help you writing appealing, useful and up-to-date documentation, to constraint your software development, and all the cool features that we want to develop. And do not hesitate to meet and discuss with me, I&amp;#8217;ll be really glad to get your feedbacks, good or bad.&lt;/p&gt;</description><link>http://alagarde.tumblr.com/post/11993643207</link><guid>http://alagarde.tumblr.com/post/11993643207</guid><pubDate>Thu, 27 Oct 2011 18:11:11 +0200</pubDate></item><item><title>Live Collaboration with Obeo Designer 6</title><description>&lt;p&gt;&lt;img align="right" width="196" height="194" src="http://miseentrentaine.files.wordpress.com/2010/01/collaboration1.jpg"/&gt;I&amp;#8217;ve been quite lucky these past few months&amp;#160;: I&amp;#8217;ve been given the opportunity to work on Collaborative features for our next release of &lt;a href="http://obeodesigner.com/"&gt;&lt;strong&gt;Obeo Designer&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We had to make many choices and to define what was, according to us, a good collaborative process. In this post, you will see how Obeo Designer allows you to simply collaborate around models, through graphical representations such as Diagrams, Tables, Trees&amp;#8230;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Why does SVN suck&amp;#160;?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I don&amp;#8217;t think that I&amp;#8217;m teaching anything to anyone here&amp;#160;: collaborating on models through SVN can be a real burden.&lt;/p&gt;
&lt;p&gt;For example, I often share models with all my teammates (typically our &lt;em&gt;ecore&lt;/em&gt; meta-models). In order to avoid any concurrent modification on these models, that would force one of the developer to &lt;strong&gt;make a manual merge&lt;/strong&gt; of the modified models (although this merge can be facilitated by &lt;a href="http://wiki.eclipse.org/EMF_Compare"&gt;EMF Compare&lt;/a&gt;, it remains painful, and quite a productivity killer), I first have to send a notification on skype to warn my team that I take the lock on some model files.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;img src="https://lh4.googleusercontent.com/-w0E16y3O23g/Ti1TtoEgZgI/AAAAAAAAAKM/toS9geCyYYM/skypeLock.png" alt="Sending skype messages to avoid conflict..."/&gt;&lt;br/&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Well, it&amp;#8217;s true that it does the work, but when I&amp;#8217;m doing this it feels like I&amp;#8217;m back to Stone age&amp;#8230;&lt;/p&gt;
&lt;p&gt;The main purpose of Obeo Designer&amp;#8217;s Collaborative features is to &lt;strong&gt;avoid manual merge&lt;/strong&gt;&amp;#160;: we would like to rely on a mechanism that allows to lock models in order to avoid future conflicts.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Why cannot any SVN-based tool be the answer&amp;#160;?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;As you may know, some SVN-based tools allow to lock files in order to avoid conflict. Although this allows to prevent from any merge if all users lock the files they are about to modify, there are 2 major issues, that we considered as blocking : &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://lh4.googleusercontent.com/-17LyY9GCohU/Ti1VpRnNtJI/AAAAAAAAAKQ/wqMb1UpAzlM/skypeLock2.png"&gt;&lt;img alt="Lock demand with clearcase" src="https://lh4.googleusercontent.com/-17LyY9GCohU/Ti1VpRnNtJI/AAAAAAAAAKQ/wqMb1UpAzlM/s400/skypeLock2.png"/&gt;&lt;/a&gt;&lt;br/&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;- the lock granularity &lt;/em&gt;: locking whole files does not seem to be the best solution when collaborating around models. Indeed, if an &lt;em&gt;xmi &lt;/em&gt;file contains 1&amp;#160;000 model elements, and if a user A wants to modify one of these elements, he has to lock the whole model. Hence any other user that would like to modify an element contained in the same resource, but with no link with the element edited by user A, cannot modify the file. Another productivity killer&amp;#160;: if modifications cannot be done by several users in the same time, you&amp;#8217;re good to spend your day waiting in front of the screen&amp;#8230; For Obeo Designer, we wished to have a &lt;strong&gt;fine grained lock &lt;/strong&gt;mechanism, that allows users to lock one single model element, no matter in which resource it is located.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;em&gt;- the real-time updates&lt;/em&gt;&amp;#160;: if a user A modifies a model element and commits, the other users would have to make an &lt;em&gt;update &lt;/em&gt;to see these modifications. &lt;/span&gt;For Obeo Designer, &lt;span&gt;we wished all users to see &lt;strong&gt;changes made by others in real-time&lt;/strong&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Live Collaboration with O.D&amp;#160;: example&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;But enough with the chitchat, here is a concrete example of live collaboration with Obeo Designer.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;User A and User B are working on the same model, representing the stock of vehicles that should be repaired in a Garage. This model is located on a server (actually a CDO Repository, but the users do not need to know that).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;&lt;li&gt;User A creates a diagram on this Garage model&amp;#160;:
&lt;p&gt;&lt;a href="https://lh3.googleusercontent.com/-08MO7oO8u_U/Ti6ptJ3IIeI/AAAAAAAAAKU/3W8XBH1Y-sw/diagram1.png"&gt;&lt;img src="https://lh3.googleusercontent.com/-08MO7oO8u_U/Ti6ptJ3IIeI/AAAAAAAAAKU/3W8XBH1Y-sw/s400/diagram1.png"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;User B creates a table on this Garage model&amp;#160;:&lt;/li&gt;
&lt;p&gt;&lt;a href="https://lh5.googleusercontent.com/-KG3CYIPNyFs/Ti6ptvm83UI/AAAAAAAAAKY/7CX5ihRIadk/table1.png"&gt;&lt;img src="https://lh5.googleusercontent.com/-KG3CYIPNyFs/Ti6ptvm83UI/AAAAAAAAAKY/7CX5ihRIadk/s400/table1.png"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;li&gt;User A decides to rename one of the cars. Obeo Designer &lt;strong&gt;automatically locks the modified element&lt;/strong&gt; to avoid conflict. User A now sees the edited car as locked by him (green padlock)&amp;#160;:
&lt;p&gt;&lt;a href="https://lh6.googleusercontent.com/-p9EGz5XbCD8/Ti6vblbpHjI/AAAAAAAAAKg/QyVKHYLlvtM/diagram2.png"&gt;&lt;img src="https://lh6.googleusercontent.com/-p9EGz5XbCD8/Ti6vblbpHjI/AAAAAAAAAKg/QyVKHYLlvtM/s400/diagram2.png"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;User B instantaneously sees that the edited car has been locked by another user, and cannot modify it anymore (but can edit any unlocked element, no matter if contained in the same resource)&amp;#160;:
&lt;p&gt;&lt;a href="https://lh5.googleusercontent.com/-0ov4iA59jN0/Ti6yuFXmgYI/AAAAAAAAAKo/Xt-Ka7bYKq4/table2.png"&gt;&lt;img src="https://lh5.googleusercontent.com/-0ov4iA59jN0/Ti6yuFXmgYI/AAAAAAAAAKo/Xt-Ka7bYKq4/s400/table2.png"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;em&gt;Notice that Obeo Designer uses lock strategies to determine which element should be locked when a modification is made. The default lock strategy locks the minimum set of elements that allows to avoid conflicts, but you can provide your own lock strategies (for example, if a car&amp;#8217;s wheel is locked, also lock the wheel disk).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;User A saves his diagram. Saving will trigger a commit on the server. Locks are released as there is no risk of conflict anymore&amp;#160;:
&lt;p&gt;&lt;a href="https://lh4.googleusercontent.com/-3hwLo1l9a0Y/Ti6vbuMH0TI/AAAAAAAAAKk/9F6fxVy4lAM/diagram3.png"&gt;&lt;img src="https://lh4.googleusercontent.com/-3hwLo1l9a0Y/Ti6vbuMH0TI/AAAAAAAAAKk/9F6fxVy4lAM/s400/diagram3.png"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;User B sees in real-time the modifications made by other users&amp;#160;:&lt;/li&gt;
&lt;p&gt;&lt;a href="https://lh5.googleusercontent.com/-8UL6FqRCojQ/Ti6vbiu4GnI/AAAAAAAAAKc/brBgtZpNOfg/table3.png"&gt;&lt;img src="https://lh5.googleusercontent.com/-8UL6FqRCojQ/Ti6vbiu4GnI/AAAAAAAAAKc/brBgtZpNOfg/s400/table3.png"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/ul&gt;&lt;p&gt;As you can see, this automatic locks mechanism allows to avoid any conflict, and the end user does not need to ask himself which elements should he lock before doing a modification.&lt;/p&gt;
&lt;p&gt;That said, it seems quite reasonable to let users to lock elements, if they know they are going to work on these elements and do not want to be bothered by other users&amp;#8217; work.&lt;/p&gt;
&lt;li&gt;User A decides to lock the Garage and all its children&amp;#160;:
&lt;p&gt;&lt;a href="https://lh6.googleusercontent.com/-metld9gWdsk/Ti648jyRt0I/AAAAAAAAAKs/pHc5gZsEVcE/diagram4.png"&gt;&lt;img src="https://lh6.googleusercontent.com/-metld9gWdsk/Ti648jyRt0I/AAAAAAAAAKs/pHc5gZsEVcE/s400/diagram4.png"/&gt;&lt;/a&gt;&lt;/p&gt;
he knows that no other user can edit these elements, and can work without fearing conflicts&amp;#160;:
&lt;p&gt;&lt;a href="https://lh4.googleusercontent.com/-PNa-2uQJAEo/Ti648iSLREI/AAAAAAAAAKw/0W2vm5zxb-I/diagram5.png"&gt;&lt;img src="https://lh4.googleusercontent.com/-PNa-2uQJAEo/Ti648iSLREI/AAAAAAAAAKw/0W2vm5zxb-I/s400/diagram5.png"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;p&gt;Such&lt;strong&gt; locks on demand&lt;/strong&gt; are not automatically released when the user saves&amp;#160;; he will have to unlock them manually through the &lt;em&gt;Lock / Unlock &lt;/em&gt;menu shown above.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;End-User experience&amp;#160;: is it too complicated&amp;#160;?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;One of our main effort was to make live collaboration as simple and transparent for the end-user as it was possible.&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Adding a resource located on the server is as simple as adding a local resource, except that the user will need to enter the server location (no magic here)&amp;#160;:
&lt;p&gt;&lt;a href="https://lh6.googleusercontent.com/-KG2fu3WZykY/Ti-5Ki2ccqI/AAAAAAAAAK0/QS9Bjknm_6I/repoWizard.png"&gt;&lt;img src="https://lh6.googleusercontent.com/-KG2fu3WZykY/Ti-5Ki2ccqI/AAAAAAAAAK0/QS9Bjknm_6I/s400/repoWizard.png"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;Once it is done, automatic locks and real-time updates do the work without requiring any knowledge from the end-user.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Our first customers feedbacks are enthusiastic, and we can&amp;#8217;t wait to release the Obeo Designer 6 to see how people reacts.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Thanks to the CDO team&amp;#160;!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We used &lt;strong&gt;CDO &lt;/strong&gt;to develop these collaborative features.&lt;/p&gt;
&lt;p&gt;If this name does not ring a bell to you, I strongly advice you to take a look at &lt;a href="http://fr.wikipedia.org/wiki/CDO"&gt;CDO wiki&lt;/a&gt;, and to play a bit with it. It is truly a great framework, extensible, stable and really fun to play with&amp;#160;! Eike Stepper, Martin Fluegge and all the CDO team have been a really great support. I do not think we would have been able to get to this result without them. Just yesterday, Eike fixed an issue less than 30 minutes after I&amp;#8217;ve opened it. Thanks a lot guys&amp;#160;!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;And there is much more&amp;#8230;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Well, there is truly a lot to say about these collaborative features, I&amp;#8217;ll definitely write new posts to show you representations sharing (in this mode, the users also share their diagrams, tables and trees), changes serialization (so that an end-user can save locally its work without committing it, keeping the locks to avoid conflicts), user identification&amp;#8230; We also have many cool features in mind, I&amp;#8217;ll present these when time will come ;)&lt;/p&gt;</description><link>http://alagarde.tumblr.com/post/8126459718</link><guid>http://alagarde.tumblr.com/post/8126459718</guid><pubDate>Wed, 27 Jul 2011 14:10:00 +0200</pubDate></item><item><title>Intent Discovery - Part 1 : the intents behind softwares</title><description>&lt;blockquote&gt;
&lt;p&gt;&lt;span&gt;&lt;em&gt;&lt;code&gt;Alice&lt;/code&gt; looking at some code&lt;/em&gt;: «Hey, why is this thing designed this way&amp;#160;? It looks way more twisted than necessary» &lt;br/&gt;&lt;em&gt;&lt;code&gt;Bob&lt;/code&gt;&lt;/em&gt;&amp;#160;: &amp;#8220;Just check the design documents.&amp;#8221;&lt;br/&gt;&lt;strong&gt;laughs&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;em&gt;Nowadays, you can find tools for basically any Developer or Architect task, no matter how complex. How come, then, any developer will tell you how hard it is to achieve a task as simple as updating a doc&amp;#160;? &lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;When it is a 500 pages bloc and the feature you developed should be mentioned in 15 different chapters, you may even spend more time updating doc that you have spent developing and testing the feature itself&amp;#8230; Any big software released at least 2 years ago contains errors in its documentation, as no one has time for reading the 500 pages and check the doc consistency.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This post is tempting to explain&amp;#160;:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Why the knowledge behind softwares cannot be properly captured without Documentation&lt;/li&gt;
&lt;li&gt;Why Documentation update is a nightmare&lt;/li&gt;
&lt;li&gt;&lt;span id="search"&gt;How Intent, by representing Documentation,  Models and development artifacts as a whole, and providing tooling for writing useful doc, will try to reconcile developers with documentation writing.&lt;br/&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;The intents behind softwares&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Intent &lt;/strong&gt;claims itself to be a tool helping developers to write doc. But what is doc exactly&amp;#160;? Too many times, I hear developers saying things like &lt;em&gt;&amp;#8220;just read the doc&amp;#8221;, &lt;/em&gt;when actually they are talking about javadoc. Don&amp;#8217;t misunderstand me, javadoc is great, and I use it all the time and rigorously. But such a doc is so tight with code structure that it is not appropriate to show the intents behind a software&amp;#160;: how would I explain the design choices I made when focusing on a Java Class&amp;#160;?&lt;/p&gt;
&lt;p&gt;&lt;img width="192" height="143" align="right" src="http://lh5.ggpht.com/_YQGwTT_sIF0/TRxZBGB0aEI/AAAAAAAAAG8/R3sx042E1gA/s288/rtfm.jpeg"/&gt;I should not have to stress out how important are concerns and design choices understanding&amp;#160;: first of all, when your team grows up, newcomers should quickly and fully understand the spirit of your software architecture, to be able to maintain and to improve your software (which is basically what they are paid for). What is more, I challenge you to explain clearly the design choices you made on a project six months ago&amp;#160;; I am sure that you will forget an important concern.&lt;/p&gt;
&lt;p&gt;To present the intents behind softwares, developers do write doc, although they are often doing it because of their project manager pressure. Such &lt;em&gt;&amp;#8220;paper doc&amp;#8221;&lt;/em&gt;  is written with pure documentation languages (like Textile, &lt;span&gt;MediaWiki, L&lt;/span&gt;atex, HTML, open office&amp;#8230;). I think any developer who had to maintain this kind of doc up-to-date with the changes made on their software will agree&amp;#160;: &lt;em&gt;paper doc&lt;/em&gt; synchronization is quite a burden. How come achieving such a common task should be so difficult, comparing to all the complex tasks we handle everyday thanks to the appropriate tooling&amp;#160;?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Code, Models and Documentation desynchronization&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Let us consider the different ways that can be used to represent the knowledge behind a software. We identify three different spaces, each space bringing a different kind of knowledge to the software.&lt;/p&gt;
&lt;p&gt;&lt;a target="intent" href="http://lh4.ggpht.com/_YQGwTT_sIF0/TRsilgfORfI/AAAAAAAAAGM/kbrEAqVu2Y4//vision.png"&gt; &lt;img width="533" height="242" src="http://lh4.ggpht.com/_YQGwTT_sIF0/TRsilgfORfI/AAAAAAAAAGM/kbrEAqVu2Y4/s640/vision.png"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The &lt;strong&gt;Technical Space&lt;/strong&gt; contains you source code and all your configuration files. It brings a concrete knowledge of the software, describing exactly its properties and what it is going to do. It is hard to capture the intents behind the software from this viewpoint&amp;#160;: for example, it is nearly impossible to determine what part of the code allows to fulfill a given requirement. Again, javadoc&amp;#8217;s scope is too reduced to allow high-level knowledge sharing (&lt;em&gt;&amp;#8220;I see the trees, but where is the Forest&amp;#160;?&amp;#8221;&lt;/em&gt;).&lt;/p&gt;
&lt;p&gt;The &lt;strong&gt;Model Space&lt;/strong&gt; brings a more formal knowledge of your software&amp;#160;: it allows to formalize requirements and to specify your software&amp;#8217;s main entities and architecture. However, it is still very hard to determine, by studying models, the design choices that have been made by the Architect, and the underlying concerns and requirements from which they have been decided.&lt;/p&gt;
&lt;p&gt;The &lt;strong&gt;Document Space&lt;/strong&gt; provides a global knowledge of your software. Using natural language, it is way easier to explain the intents behind the models and code. Moreover, it is structured following a &lt;em&gt;stream of consciousness&lt;/em&gt; order&amp;#160;: one can structure a document by concerns (one part for all the code and models that ensure persistency of datas, one part dealing with security issues&amp;#8230;), another would prefer to structure it following each requirements&amp;#8230; In result, a reader will be able to discover the software step by step, with an high-level view of each main requirements and design decision.&lt;/p&gt;
&lt;p&gt;These 3 spaces all provide useful informations about your software. However, if synchronization between Models and Code has been improved during the last few years (with code generation tools like &lt;a target="intent" href="http://www.eclipse.org/acceleo/"&gt;Acceleo&lt;/a&gt;, &lt;a href="http://stephanebegaudeau.tumblr.com/post/2975985999/quick-look-at-obeo-traceability"&gt;Traceability tools&lt;/a&gt;, and reverse engineering tools), there is clearly a lack of automatic processes to keep documentation up-to-date with the Model and Technical spaces.  &lt;/p&gt;
&lt;p&gt;Intent provides tooling for keeping the documentation up-to-date with any Model, as it will be detailed in next posts. As any development artifact (whether it is a Java class, a plugin dependency, an Acceleo script, a Mylyn task&amp;#8230;) can be represented as a model, Intent will allow to synchronize the documentation with any &lt;em&gt;&amp;#8220;concrete&lt;/em&gt;&amp;#8221; information.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Intent&amp;#8217;s purpose&amp;#160;: reconcile developers with documentation&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a target="intent" href="http://lh5.ggpht.com/_YQGwTT_sIF0/TUg3GJJsh0I/AAAAAAAAAHQ/rBrHKv18QYs/quickOutlineExtended.PNG"&gt;&lt;img src="http://lh5.ggpht.com/_YQGwTT_sIF0/TUg3GJJsh0I/AAAAAAAAAHQ/rBrHKv18QYs/s400/quickOutlineExtended.PNG"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Intent provides tooling for : &lt;/p&gt;
&lt;ul&gt;&lt;li&gt;creating a complete documentation. As each developer has its favorite &lt;em&gt;paper doc &lt;/em&gt;language, the concrete syntax for the documentation will be opened (one can choose Textile, another one HTML or Latex).&lt;/li&gt;
&lt;li&gt;defining model fragments with a textual syntax. As it has been shown by all the M.D.E. users, DSLs are a good way to simplify design. That is why Intent will provide extension points to allow users to use the correct textual DSL according to what they want to describe (for example, one DSL for describing your plugin dependencies, and an other for describing Ecore models). Such DSLs may be created from scratch or through the use of Language Development Frameworks like &lt;a target="intent" href="http://www.eclipse.org/Xtext/"&gt;Xtext&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;an authoring tool with appropriate tooling, allowing users to search for all documentation parts related to a concern or a model element, to compile and validate the described models, providing code completion and quick-fixes&amp;#8230;&lt;/li&gt;
&lt;li&gt;synchronizing the described model fragments with the &lt;em&gt;concrete world&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;referencing &lt;strong&gt;precisely&lt;/strong&gt; development artifacts directly inside the documentation (for example&amp;#160;: &lt;em&gt;&amp;#8220;the development of this feature has been divided in 3 tasks&amp;#160;: &amp;lt;reference to the corresponding mylyn tasks&amp;gt;&amp;#8221;&lt;/em&gt;).&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Writing doc becomes as fun and useful as writing doc&amp;#160;!&lt;/p&gt;
&lt;p&gt;An important point to notice is that Intent allows developers to start writing code and synchronize it with their doc or writing doc and synchronize it with their development artifacts&amp;#160;; just use the right tool for the task.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Benefits of writing documentation with Intent&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I am aware that I have not presented enough features of Intent to convince you of all the benefits it brings. Let me leave you with some benefits based on common sense. &lt;/p&gt;
&lt;p&gt;First of all, as Intent is fully integrated to the Eclipse IDE, you will not have to toggle from your IDE to Open Office any more. As it is compliant with all design tools (graphical modelers for example) and all the Eclipse projects for which bridges will be developed, writing doc is no longer a burden.&lt;/p&gt;
&lt;p&gt;As updating documentation becomes straightforward, doc is now really useful&amp;#160;: it finally describes your software, and not what your software used to look like 2 years ago. As the documentation related to a part of code or model is kept around its definition, it is very easy to search through the documentation and find all code related to one concern, or all concerns related to a Class. Of course, a doc up-to-date improves the maintainability of your software, and will help to avoid misunderstanding issues. Such a doc also provides a high-level knowledge of your software. Donald Knuth speaks about &lt;em&gt;Bird&amp;#8217;s Eye View&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a target="intent" href="http://lh3.ggpht.com/_YQGwTT_sIF0/TRsyWm5pCFI/AAAAAAAAAGg/vW1z810xufU/s640/bird_eye_view.png"&gt;&lt;img src="http://lh3.ggpht.com/_YQGwTT_sIF0/TRsyWm5pCFI/AAAAAAAAAGg/vW1z810xufU/s400/bird_eye_view.png"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Actually, your doc becomes more than a doc&amp;#160;: you can use it for synchronizing all your development artifacts, from requirements coverage to development environment.&lt;/p&gt;
&lt;p&gt;Many other benefits related to collaborative design, developers daily work and Application Lifecycle Management will be presented later.&lt;/p&gt;
&lt;p&gt;Next post&amp;#160;: &lt;em&gt;How does the Intent syntax allow to split design across concerns&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;If you liked this post, you can read the &lt;a href="http://eclipse.org/proposals/mylyn.docs.intent/"&gt;Eclipse proposal of the Intent project&lt;/a&gt; and provide us feedback &lt;a href="http://www.eclipse.org/forums/index.php?t=msg&amp;amp;th=203863&amp;amp;start=0&amp;amp;S=a55904bee2f0abcacf407d381de4d9c5"&gt;here&lt;/a&gt;. If you want to follow the Intent project, go check our &lt;a href="http://twitter.com/#!/Intent_project"&gt;Twitter account&lt;/a&gt;.&lt;/p&gt;</description><link>http://alagarde.tumblr.com/post/3064712740</link><guid>http://alagarde.tumblr.com/post/3064712740</guid><pubDate>Wed, 02 Feb 2011 09:25:00 +0100</pubDate></item><item><title>Provide a doc ad hoc with Intent</title><description>&lt;p&gt;Soon on this blog&amp;#160;: everything you will need to know about the &lt;strong&gt;Intent &lt;/strong&gt;project, soon to be part of the &lt;strong&gt;Mylyn &lt;/strong&gt;project - proposal is in the work.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://lh4.ggpht.com/_YQGwTT_sIF0/TRsilRfbXDI/AAAAAAAAAGI/RtIjM967V0s/intent_screenshot.PNG"&gt;&lt;img height="232" width="616" src="http://lh4.ggpht.com/_YQGwTT_sIF0/TRsilRfbXDI/AAAAAAAAAGI/RtIjM967V0s/intent_screenshot.PNG"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The main purpose of &lt;strong&gt;Intent &lt;/strong&gt;is to allow developers to easily write a documentation up-to-date with any development artifact (models, code, environment&amp;#8230;). The documentation, integrated with other Eclipse tools, then becomes truly useful and is no longer a burden that developer have to carry to please their customers or their project manager.&lt;/p&gt;
&lt;p&gt;Based on Donald Knuth&amp;#8217;s &lt;a href="http://www.literateprogramming.com/"&gt;Literate Programming&lt;/a&gt; concepts and allowing collaborative work around design tasks, &lt;strong&gt;Intent &lt;/strong&gt;will be presented at  &lt;a href="https://www.eclipsecon.org/submissions/2011/view_talk.php?id=2199"&gt;Eclipse Con 2011&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;span&gt;Let us change our traditional attitude to the construction of programs: Instead of imagining that our main task is to instruct a computer what to do, let us concentrate rather on explaining to human beings what we want a computer to do.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;span&gt;Donald Knuth, &lt;/span&gt;Literate Programming (1984)&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://alagarde.tumblr.com/post/2482941058</link><guid>http://alagarde.tumblr.com/post/2482941058</guid><pubDate>Mon, 27 Dec 2010 16:00:00 +0100</pubDate></item></channel></rss>

