<?xml version="1.0" encoding="iso-8859-1"?>

<rdf:RDF
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
  xmlns:admin="http://webns.net/mvcb/"
  xmlns:cc="http://web.resource.org/cc/"
  xmlns="http://purl.org/rss/1.0/">

<channel rdf:about="http://blogs.codehaus.org/people/vmassol//archives/open_source_involvement.html">
<title>Vincent Massol Think Tank - Open source involvement</title>
<link>http://blogs.codehaus.org/people/vmassol//archives/open_source_involvement.html</link>
<description></description>
<dc:language>en-us</dc:language>
<dc:creator></dc:creator>
<dc:date>2007-10-24T09:40:17+00:00</dc:date>
<admin:generatorAgent rdf:resource="http://www.movabletype.org/?v=2.661" />

<items>
<rdf:Seq><rdf:li rdf:resource="http://blogs.codehaus.org/people/vmassol/archives/001624_xwiki_presentation_valtech_days_2007.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/vmassol/archives/001618_xwiki_maven_meetup.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/vmassol/archives/001564_maven_support_just_got_better_with_sonatype.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/vmassol/archives/001357_maven2_book_is_out.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/vmassol/archives/001325_how_can_i_improve_my_oss_project_managment_skills.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/vmassol/archives/001307_cargo_v07_and_maven2_plugin_v01.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/vmassol/archives/001181_google_summer_of_code_results.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/vmassol/archives/001170_javazone_2005.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/vmassol/archives/001065_maven_using_the_cargo_plugin_for_testing.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/vmassol/archives/001064_cargo_05_released.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/vmassol/archives/000976_getting_svnsshprivate_key_to_work_in_intellij_ideaeclipse.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/vmassol/archives/000789_cci_container_client_interface.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/vmassol/archives/000783_maven_abbot_plugin_10_released.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/vmassol/archives/000782_my_current_oss_todo_list.html" />
<rdf:li rdf:resource="http://blogs.codehaus.org/people/vmassol/archives/000682_maven_statcvs_plugin_moved.html" />
</rdf:Seq>
</items>

</channel>

<item rdf:about="http://blogs.codehaus.org/people/vmassol/archives/001624_xwiki_presentation_valtech_days_2007.html">
<title>XWiki presentation @ Valtech Days 2007</title>
<link>http://blogs.codehaus.org/people/vmassol/archives/001624_xwiki_presentation_valtech_days_2007.html</link>
<description><![CDATA[<p>I was invited to speak about the XWiki platform at the <a href="http://www.valtech.fr/fr/index/valtech_days.html">Valtech Days 2007</a>. It was a very interesting event, focused on Agility.  I presented XWiki a bit differently than what we are used to. Whereas XWiki was an Enterprise Wiki not long ago, it's really now a development platform for writing collaborative web applications (and more specifically applications focused on content). The presentation focused on the platform and what type of applications it's possible to build on top of it.</p>
<p>My slides are <a href="http://codehaus.org/~vmassol/blog/XWiki-ValtechDays-2007.ppt">available online</a>.</p>
]]></description>
<dc:subject>Open source involvement</dc:subject>
<dc:creator>vmassol</dc:creator>
<dc:date>2007-10-24T09:40:17+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/vmassol/archives/001618_xwiki_maven_meetup.html">
<title>XWiki + Maven meetup</title>
<link>http://blogs.codehaus.org/people/vmassol/archives/001618_xwiki_maven_meetup.html</link>
<description><![CDATA[<p>
<a href="http://ludovic.org">Ludovic</a> and I are in the Silicon Valley between the 6th of October to the 12th of October 2007. We've been kindly invited by Google for the Google Summer of Code Mentor Summit (Thanks Google!) and we're taking that occasion to spend some time in the valley to meet the maximum number of people and talk about wikis and <a href="http://xwiki.org">XWiki</a>.
</p>
<p>If you're interested to meet up register on the <a href="http://www.facebook.com/event.php?eid=5630598061">Facebook event</a>.</p>
<p>We have also organized a joint XWiki and <a href="http://maven.apache.org">Maven</a> tech meetup on the 9th of October, at Terracotta. Indeed Terracotta has been extermely kind not only to lend us a room but also  to cater for some pizzas and snacks :) Thanks Terraccotta!</p>
<p>The address is:</p>
<pre>
Terracotta Inc.
650 Townsend St. Suite 325
San Francisco, CA 94103 USA
+1 415 738 4059
</pre>
<p><a href="http://blogs.sonatype.com/jvanzyl">Jason Van Zyl</a>, creator of Maven will be there too!</p>
<p>I hope to see a lot of you there!</p>

]]></description>
<dc:subject>Open source involvement</dc:subject>
<dc:creator>vmassol</dc:creator>
<dc:date>2007-10-06T00:19:45+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/vmassol/archives/001564_maven_support_just_got_better_with_sonatype.html">
<title>Maven support just got better with Sonatype</title>
<link>http://blogs.codehaus.org/people/vmassol/archives/001564_maven_support_just_got_better_with_sonatype.html</link>
<description><![CDATA[<p>My friend <a href="http://blogs.maven.org/jvanzyl/">Jason Van Zyl</a> has started <a href="http://www.sonatype.com/">Sonatype</a>, a new company focused on Maven for the Enterprise and providing support, training and consulting for Maven. He's been joined by several talented Maven committers (<a href="http://www.ejlife.net/blogs/buildchimp">John Casey</a>, <a href="http://www.sonatype.com/about.html">Kenney Westerhof</a>, <a href="http://handyande.co.uk/Coding_News">Andrew Williams</a>, <a href="http://coderoshi.blogspot.com/">Eric Redmond</a> and <a href="http://www.sonatype.com/about.html">Eirik Bjørsnøs</a>) which make their team one of the most knowledgable team on the Maven topic on the planet. Knowing Jason's generosity and dedication to Maven you can be sure that this is the best possible move for the Maven project and it's great for the Maven ecosystem at large. As a proof, Sonatype has already delivered a <a href="http://www.sonatype.com/book/index.html">great (and free) Maven book</a>.</p>
<p>I'm also happy to report that <a href="http://xwiki.org">XWiki</a> (the company and open source project I work for) is a <a href="http://www.sonatype.com/partners/partners.html">Sonatype Partner</a>. I'd love to see Maven products built on top of XWiki. I think <a href="http://www.xwiki.org/xwiki/bin/view/Main/SecondGenerationWiki">XWiki's flexibility</a> makes it an ideal platform for building those products and at the same time empowering them with collaborative features. In the near future I'll work closely with Jason and his team to integrate XWiki and Maven and hopefully we'll see some cool things out of this.</p>
<p>Well done guys and long live Sonatype!</p>
]]></description>
<dc:subject>Open source involvement</dc:subject>
<dc:creator>vmassol</dc:creator>
<dc:date>2007-05-05T18:53:28+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/vmassol/archives/001357_maven2_book_is_out.html">
<title>Maven2 book is out</title>
<link>http://blogs.codehaus.org/people/vmassol/archives/001357_maven2_book_is_out.html</link>
<description><![CDATA[<p>Our Maven2 is book is officially out. Here's the marketing pitch:</p>
<blockquote>
<p>"Better Builds with Maven”"</p>
<ul>
  <li>is a comprehensive 'How-to' guide for use with Maven 2.0.4 and later</li>
  <li>is available free of charge and includes supporting sample code</li>
  <li>covers how to use Maven 2.0 to better manage the build, test and release cycles associated with software development</li>
  <li>is written for beginning and intermediate Maven users</li>
  <li>is authored by Maven experts</li>
  <li>Jason Van Zyl, Chief Architect and founder of Maven</li>
  <li>Vincent Massol, author of "Maven: a Developers Notebook"</li>
  <li>with chapters and key content and code contributions from leading Apache Software Foundation Maven Project members: Brett Porter, John Casey and Carlos Sanchez.</li>
  <li>is published by Mergere, Inc</li>
</ul>
<p>Content Includes:</p>
<ul>
  <li>An introduction to Maven 2.0</li>
  <li>Creating, compiling and packaging your first project</li>
  <li>Best practices and real-world examples</li>
  <li>Creating J2EE builds and using J2EE models</li>
  <li>Extending builds through plugins</li>
  <li>Monitoring source code, testing, dependencies and releases</li>
  <li>Leveraging repositories, Continuum for continuous integration and transitive dependencies</li>
  <li>Converting existing Ant builds to Maven</li>
</ul>
<p>Download a free copy at <a href="http://library.mergere.com">http://library.mergere.com</a>.</p>
</blockquote>
<p>I hope this book will help boost Maven2's adoption.</p>]]></description>
<dc:subject>Open source involvement</dc:subject>
<dc:creator>vmassol</dc:creator>
<dc:date>2006-04-27T10:05:50+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/vmassol/archives/001325_how_can_i_improve_my_oss_project_managment_skills.html">
<title>How can I improve my OSS project managment skills?</title>
<link>http://blogs.codehaus.org/people/vmassol/archives/001325_how_can_i_improve_my_oss_project_managment_skills.html</link>
<description><![CDATA[<p>I've been asking myself the following 2 questions for about 5 years now: am I good at managing an open source project and making it successful? How can I improve?</p>
<p>I guess it depends on the definiton of "successful". My definition of a successful OSS project is:</p>
<ol>
  <li>A project that has a big user community and mindshare</li>
  <li>A project that has a big development community (i.e. committers and contributors). That is the development mailing list should be quite active with lots of contributions, improvements, ideas being discussed. All those submitted by a large number of different persons</li>
  <li>A project that lives on if the initial or main contributor leaves the project</li>
</ol>
<p>If we go by point 1, I think that the main 2 projects I have started (<a href="http://jakarta.apache.org/cactus">Cactus</a> and <a href="http://cargo.codehaus.org">Cargo</a>) are not doing too bad. Cargo is still new but it seems
to be on track and its user base is growing very quickly.</p>
<p>However on points 2 and 3, I'm not so sure I'm doing well. Mind you, Cargo has quite a lot of committers (growing every week!) and they're all doing a great job.
I'm just thinking about the level beyond (look at the activity on the Maven project, Spring or other projects as an example of what I mean). Cactus is a bit different as it's now a mature project, so let's focus on Cargo.
Of course it could be that these project domains are narrow and thus do not interest lots of developers. This is probably true but I don't think this is the only issue.
I have the feeling that some of the reasons could be:</p>
<ul>
<li>Unconsciously I may be "driving" the project too much. For example if someone proposes something, I'm probably going to argue with this person in order that it fits Cargo's quality crtieria and direction.
It's possible that by doing this, I'm cutting some creativity from this person and
thus even if he implements the thing, maybe he'll feel it has not completely come from him and won't identify with it enough to maintain and improve it in the future. Or maybe by arguing I'm just making the life of that person harder
and as this person is doing this in the little free time he has, he may not pursue it...</li>
<li>Maybe I'm answering emails asked on the list too fast, thus preventing any other contributor to answer. This is setting the tone and maybe as a consequence people are expecting me to answer all emails. Everyone "knows" that I'll answer them anyway...</li>
<li>The same could be said for applying patches and implementing things. I think this is less true though as I also have a day job and there are lots of JIRA issues accumulating in the Cargo project for example, so there's room for takers</li>
<li>Documentation of Cargo seems good at first glance (although I know there are lots of holes). I wonder if, as a consequence Cargo users who look at the web site think that Cargo is stable, mature, etc and thus may feel less inclined to participate. Who 
wants to participate to a project that is mostly "done"! (Note: For those reading this and interested in Cargo, it is far from true and there are tons of things to design and implement!)</li>
</ul>
<p>On the other hand, I feel that not doing any one of these points will hamper Cargo's user adoption...</p>
<p>Or maybe I'm completely wrong on all points above and this is just me fantasizing!</p>
<p>I'm really interested to know what you think and if this is something other OSS committers/contributors have noticed too. I've given the example of Cargo but really this is a general discussion on how to best manage an OSS project.</p>]]></description>
<dc:subject>Open source involvement</dc:subject>
<dc:creator>vmassol</dc:creator>
<dc:date>2006-02-16T12:09:43+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/vmassol/archives/001307_cargo_v07_and_maven2_plugin_v01.html">
<title>Cargo v0.7 and Maven2 plugin v0.1</title>
<link>http://blogs.codehaus.org/people/vmassol/archives/001307_cargo_v07_and_maven2_plugin_v01.html</link>
<description><![CDATA[<p><a href="http://cargo.codehaus.org">Cargo</a> is a container-manipulation library that allows configuring, starting and stopping containers. It also deploys modules to those containers. Version 0.7 has been
<a href="http://cargo.codehaus.org/Release+notes+for+Cargo+0.7">released</a> last week along with version 0.1 of a <a href="http://cargo.codehaus.org/Maven2+plugin">Maven2 plugin</a>. The nice thing about Cargo is that it provides a uniform API across all containers and it has 
<a href="http://cargo.codehaus.org/Extensions">several end user APIs</a>: a Java API, Ant tasks, a Maven 1 plugin, a Maven 2 plugin, a Netbeans plugin, an IntelliJ IDEA plugin, etc. You can use any of those extensions with all the <a href="http://cargo.codehaus.org/Containers">supported containers</a>.</p>
<p><note><i>Note: Adding a new container is very easy and you only have to implement a small interface and your container will be made available automatically through all the existing end user APIs - Make sure to contact us if you're interested in adding a new
container support.</i></note></p>
<p>I'd like to quickly demonstrate how to use the new Maven 2 plugin on 2 use cases (more samples can be found <a href="http://tinyurl.com/b57dl">here</a>):</p>
<ul>
<li>Use case 1: Deploying a WAR to Tomcat 5.x and starting the container</li>
<li>Use case 2: In-place webapp deployment with Jetty 4.x</li>
</ul>
<h3>Deploying a WAR and starting Tomcat 5.x</h3>
<p>Create a Maven 2 project and put the following configuration in your <code>pom.xml</code> file:</p>
<code language="xml"><xmp>
[...]
  <packaging>war</packaging>
[...]
  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.cargo</groupId>
        <artifactId>cargo-maven2-plugin</artifactId>
        <configuration>
          <container>
            <containerId>tomcat5x</containerId>
            <home>c:/apps/jakarta-tomcat-5.0.30</home>
          </container>
          <configuration>
            <dir>${project.build.directory}/tomcat</dir>
          </configuration>
        </configuration>
      </plugin>
    </plugins>
  </build>
</xmp></code>
<p>To generate your WAR, start Tomcat and deploy the WAR in it, simply type: <code>mvn package cargo:start</code>. That's all! Do you want to do the same in, say, Orion 2.0.5? Simply change <code>tomcat5x</code> with <code>orion2x</code> and the <code>home</code>
element to point to where you have installed Orion 2.0.5. You don't have Orion on the machine running the build? No issue, simply replace <code>&lt;home&gt;</code> with:</p>
<code language="xml"><xmp>
<zipUrlInstaller>
  <url>http://www.orionserver.com/distributions/orion2.0.5.zip</url>
</zipUrlInstaller>
</xmp></code>
<p>Orion 2.0.5 will then be automatically downloaded and installed the first time you run your build.</p>
<h3>Inplace webapp development with Jetty</h3>
<p>Let's imagine you're using the same project as above but this time you'd like to start Jetty and make it point to your webapp directory (i.e. <code>src/webapp</code>) so that whenever you make a change to your webapp's sources Jetty 
automatically picks it up and serves it. See <a href="http://blogs.codehaus.org/people/brett/archives/001306_developing_with_jetty_where_have_you_been_all_my_life.html">Brett's nice blog post</a> on this. Simply modify your <code>pom.xml</code> as follows:</p>
<code language="xml"><xmp>
[...]
  <packaging>war</packaging>
[...]
  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.cargo</groupId>
        <artifactId>cargo-maven2-plugin</artifactId>
        <configuration>
          <!-- No container specified thus it'll default to Jetty -->
          <configuration>
            <dir>${project.build.directory}/jetty</dir>            
            <deployables>
              <deployable>
                <!-- Override location to point to the exploded webapp. 
                     Otherwise it'll deploy the generated WAR. We want 
                     to ensure that jetty reloads any change made to the
                     webapp source tree... -->
                <location>${basedir}/src/main/webapp</location>
              </deployable>
            </deployables>
          </configuration>
        </configuration>
      </plugin>
    </plugins>
  </build>
</xmp></code>
<p>Then open a shell prompt and type <code>mvn cargo:start</code>. Jetty will start and monitor your webapp's dir for any change (Note that the same can be achieved using other containers too).</p>
<p>If you're interesting in learning more, check the <a href="http://cargo.codehaus.org">documentation</a> and join us on the <a href="http://archive.codehaus.org/cargo/">Cargo mailing lists</a>.</p>]]></description>
<dc:subject>Open source involvement</dc:subject>
<dc:creator>vmassol</dc:creator>
<dc:date>2006-01-10T21:05:22+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/vmassol/archives/001181_google_summer_of_code_results.html">
<title>Google Summer Of Code results</title>
<link>http://blogs.codehaus.org/people/vmassol/archives/001181_google_summer_of_code_results.html</link>
<description><![CDATA[<h3>Results</h3>
<p>
  The <a href="">Google Summer of Code</a> is now over. I've had the pleasure of being a mentor for 
  <a href="http://www.codehaus.org">Codehaus</a>. More specifically I've mentored the following
  projects:
</p>
<ul>
  <li>
    <b>JBoss 3.x and 4.x support in <a href="http://cargo.codehaus.org">Cargo</a></b>. 
    This project was successfully implemented by Nyoman Winardi (a.k.a. Win). Win started sending 
    patches and over the course of the programme Win became a committer proper. The full support
    of JBoss 3.x and 4.x will be available in the next release of Cargo (version 0.7).
  </li>
  <li>
    <b><a href="http://www.jcp.org/en/jsr/detail?id=88">JSR-88</a> support for Cargo</b>. This project was successfully implemented by
    Lev Olkhovich who also became a Cargo committer. Lev implemented deployment of J2EE archives
    using JSR-88. In the process he started a conversation to refactor Cargo to support the
    notion of remote containers. There's still some refactoring going on and we need to add some
    more tests but we should be able to have support for remote containers and JSR-88
    in Cargo 0.7. 
  </li>
  <li>
    <b>Refactor <a href="http://jakarta.apache.org/cactus">Cactus</a> to use Cargo</b>. One more 
    project revolving around Cargo! This one was implemented by Xuan Thang Nguyen. Xuan sent 
    several patches and thanks to Felipe we've applied
    some of those. However, I have to admit I have personally not been available enough to 
    fully help Xuan apply his patches. We still have some patches in JIRA that haven't been
    applied yet. Actually the plan was to have Nicolas Chalumeau to help Xuan and apply Xuan's
    patches. Nicolas has been working and helping on Cactus for a long time now and was voted
    a committer on Cactus at the beginning of the SOC programme. However, the Apache Software 
    Foundation (ASF) is extremely slow when it comes to adding a committer to a project (it can take
    more than 2 months) and we've not been able to give right access to Nicolas. Thus he's not
    been able to apply his own patches nor Xuan's... This is really an issue that the ASF has to
    solve quickly lest it'll see people leaving to create their project somewhere else.
  </li>
  <li>
    <b><a href="http://faqbot.codehaus.org">Faqbot</a> project</b>. There were 2 students on this
    project: Jie Tang and Harsh Puri. Harsh has had to resign from the programme because of the
    tragic flooding that happened in the region of Mumbai. Jie has continued alone and has done
    some good work. Unfortunately he's not been able to fully complete the project (which was
    probably the most ambitious of all the SOC projects I've mentored). The hardest part was
    probably starting a project from scratch. Everything had to be done. Hopefully Jie and others
    will continue the project and make it release-ready. <a href="http://blogs.codehaus.org/people/vmassol/archives/think_tank.html#000670_faq_bots">I was very excited by this 
    project</a> and I still am. 
  </li>
  <li>
    <b>Real-time collaboration editing (<a href="oxyd.codehaus.org">Oxyd</a>)</b>. This one
    was implemented by Jeremi Joslin of <a href="http://xwiki.org">XWiki</a> fame. Even though it
    was a project started from scratch Jeremi was able to complete it and have a first usable 
    release ready. Well done Jeremi!
  </li>
</ul>
<h3>Learnings</h3>
<ul>
  <li>
    Open source is about collaboration with others. I don't think the SOC emphasis was enough on
    this point. For example it was "fordbidden" for students to work together and the main focus 
    was to produce a working piece of software.
  </li>
  <li>
    Open source is not bound by time. People do it in their free time (at least most people) and as 
    such they can't be expected to be bothered by strong release pressure. The SOC students had
    to work on a given date which caused some friction as the students were not always aligned with 
    the project's timeline. Let me give you one example; 
    It happened that some student needed to do a refactoring to the existing code to progress. 
    This needs to be reviewed and possibly voted by project committer. There could easily be a 
    delay of 1 week before we get everyone's agreement/ideas, etc. In the meantime the student 
    is under pressure to quickly progress.
  </li>
  <li>
    I have taken too many students. I felt I did not do the best possible job when it came to 
    mentoring them. Some were not autonomous enough and would have required more mentoring. I'll
    take fewer students next time. The hardest is really to mentor students on a new open source project started from scratch.
    As I'm already involved with several open source project, I did not have enough 
    bandwidth to help on all aspects required to set up a new project.
  </li>
  <li>
    Several students had not enough time to participate. Some were still passing exams, others
    had some other summer job. This, combined with the deadline and the nature of open source did not
    mix well together. I think students should have an open source project to complete on a much 
    longer timescale (possibly with milestones to monitor progress). This would also help in
    having them really integrated into an open source team. In addition it'll show their real
    commitment over time which is really what "professional" open source is about. There's 
    nothing worse that someone who contributes big portion of code and then leaves some time
    after. Then, all the bug fixing and maintenance falls on the shoulders of the committers who
    were not the ones with the itch in the first place...
  </li>
</ul>
<h3>Parting words</h3>
<p>
  The SOC was good. It has boosted the open source community quite remarkably (even though it has
  also probably put some strain on it...). Out of all the students I've mentored I think 2 or 3
  of them (out of 6 initially) will continue to work on the open source project they've 
  participated to. That's a 30%-50% ratio and I'm very happy about it. Thanks Google for making this happen!
</p>
  ]]></description>
<dc:subject>Open source involvement</dc:subject>
<dc:creator>vmassol</dc:creator>
<dc:date>2005-09-28T16:25:41+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/vmassol/archives/001170_javazone_2005.html">
<title>Javazone 2005</title>
<link>http://blogs.codehaus.org/people/vmassol/archives/001170_javazone_2005.html</link>
<description><![CDATA[<p>Javazone 2005 was good. It's getting more international every year but there's still a lot of Norwegian speaking there, which was a bit difficult to understand from time to time... Oh well, I had <a href="http://www.coffeebreaks.org/blogs/">Jerome Lacoste</a> translating for me whenever needed. Thanks Jerome. It also gave me the opportunity to learn "Hey alle semmon" ("hi everybody") and <a href="http://www.savoirtech.com/roller/page/jgenender">Jeff Genenger</a> woke up his audience on thursday morning with a "I'm a loud-mouthed american, don't listen to me I don't know anything" in Norwegian! :-)</p>
<p>I have presented <a href="http://www.codehaus.org/~vmassol/blog/Javazone2005%20-%20From%20m1%20to%20m2%20-%2020050914.ppt">From Maven 1 to Maven 2</a> which went well. There were about 60-70 people in the room, all Maven 1 users (to be expected for such a talk) and a few (about 5) Maven 2 users.</p>
<p><b>Update 2005-09-28</b>: Kito has <a href="http://weblogs.java.net/blog/kito75/archive/2005/09/javazone_2005_o_1.html">blogged about JavaZone 2005</a> and has uploaded some nice <a href="http://www.flickr.com/photos/97271958@N00/sets/1023006/">pictures</a>.</p>]]></description>
<dc:subject>Open source involvement</dc:subject>
<dc:creator>vmassol</dc:creator>
<dc:date>2005-09-15T08:56:27+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/vmassol/archives/001065_maven_using_the_cargo_plugin_for_testing.html">
<title>[Maven] Using the Cargo plugin for testing</title>
<link>http://blogs.codehaus.org/people/vmassol/archives/001065_maven_using_the_cargo_plugin_for_testing.html</link>
<description><![CDATA[<p><a href="http://cargo.codehaus.org">Cargo</a> 0.5 has been <a href="http://cargo.codehaus.org/Downloads">released yesterday</a>. One novelty
is the <a href="http://cargo.codehaus.org/Maven+Support">Maven plugin</a>. You can now start and stop a variety of containers using this plugin. This should come very handy for all of you
wishing to perform integration or functional testing with Maven. The containers that are currently supported are: Resin 2.x, Resin 3.x, Tomcat 3.x, Tomcat 4.x, Tomcat 5.x, Orion 1.x, Orion 2.x, Jetty 4.x, jo! 1.x, OC4J 9.x and WebLogic 8.x.</p>
<p>For example, imagine that you have some integration tests in your project's test directory and that you need, say, Tomcat 5.0.30 to run
them. You'll need to start the Tomcat container before the <code>test:test</code> goal kicks in. Do this by writing a preGoal in your <code>maven.xml</code>:</p>
<div style="width:100%; overflow:auto; border-style: solid; border-width: 1px"><code><xmp>
<preGoal name="test:test">
  <ant:mkdir dir="${maven.build.dir}/tomcat"/>
  <attainGoal name="cargo:start"/>
</preGoal>
</xmp></code></div>
<p>You'll need to provide Cargo configuration data in your <code>project.properties</code> or <code>build.properties</code> file. For example a minimal configuration would be:</p>
<div style="width:100%; overflow:auto; border-style: solid; border-width: 1px"><code><pre>
cargo.containers = tomcat
cargo.container.tomcat.containerKey = tomcat5x
cargo.container.tomcat.homeDir = C:/apps/tomcat-5.0.30
cargo.container.tomcat.config.hint = standalone
cargo.container.tomcat.config.dir = ${maven.build.dir}/tomcat
cargo.container.tomcat.config.standalone.servlet.port = 8180
</pre></code></div>
<p>Alternatively you can ask the plugin to automatically download and install Tomcat for you (it'll download it only once), by specifying:</p>
<div style="width:100%; overflow:auto; border-style: solid; border-width: 1px"><code><pre>
cargo.containers = tomcat
cargo.container.tomcat.containerKey = tomcat5x

cargo.zipUrlInstaller.tomcatinstaller.installUrl = http://www.apache.org/dist/jakarta/tomcat-5/v5.0.30/bin/jakarta-tomcat-5.0.30.zip
cargo.zipUrlInstaller.tomcatinstaller.installDir = ${maven.build.dir}/installs
cargo.container.tomcat.zipUrlInstaller = tomcatinstaller

cargo.container.tomcat.config.hint = standalone
cargo.container.tomcat.config.dir = ${maven.build.dir}/tomcat
cargo.container.tomcat.config.standalone.servlet.port = 8180
</pre></code></div>
<p>As you may have noticed, in our example above we've reused the existing Maven Test plugin which looks for test sources in <code>${pom.build.unitTestSourceDirectory}</code>. With this strategy
you'll need to create a separate subproject for running your integration/functional tests in order not to interfere with pure unit tests that you may already have in <code>${pom.build.unitTestSourceDirectory}</code>.
<p>If there's a strong demand, we may consider adding a <code>cargo:test</code> goal in the future that you look for tests in, say, <code>src/test/cargo</code> by default (leaving <code>src/test/java</code> for unit tests).</p>
<p>Please note that there's also an alternative which is to <a href="http://blogs.codehaus.org/people/vmassol/archives/000893_using_cargo_for_functional_testing.html">start the Container directly from your unit tests</a>.</p>
<p>If you find Cargo interesting, please come and help us on the <a href="http://archive.codehaus.org/cargo/">Cargo mailing lists</a>. There are lots of different ways you can help: trying Cargo on containers, implementing
new containers (for example, JBoss, JOnas, WebSphere, etc), discussing new ideas, letting us know what new features you'd love to see, etc.</p>]]></description>
<dc:subject>Open source involvement</dc:subject>
<dc:creator>vmassol</dc:creator>
<dc:date>2005-05-01T10:48:50+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/vmassol/archives/001064_cargo_05_released.html">
<title>Cargo 0.5 released</title>
<link>http://blogs.codehaus.org/people/vmassol/archives/001064_cargo_05_released.html</link>
<description><![CDATA[<p>The <a href="http://cargo.codehaus.org">Cargo</a> team is pleased to announce the <a href="http://cargo.codehaus.org/Downloads">release of Cargo 0.5</a>.</p>
<p>The major changes from Cargo 0.4 to 0.5 are:</p>
<ul>
  <li>New Maven plugin</li>
  <li>Added support for hot deployments</li>
  <li>Added support for the <a href="http://www.tagtraum.com/">jo!</a> container</li>
</ul>
<p>Detailed release notes are available on the <a href="http://cargo.codehaus.org/Downloads">download</a> page.
<p>Here's an example of how to use Cargo from Java:</p>
<div style="width:100%; overflow:auto; border-style: solid; border-width: 1px"><pre><code language="java">
Container container = new Resin3xContainer();
container.setHomeDir("c:/apps/resin-3.0.8");

Deployable war = container.getDeployableFactory().createWAR("path/to/simple.war");
container.getConfiguration().addDeployable(war);

container.start();
// Here you are assured the container is started.

container.stop();
// Here you are assured the container is stopped.
</code></pre></div>
<p>Here's an example using the provided Ant tasks:</p>
<div style="width:100%; overflow:auto; border-style: solid; border-width: 1px"><code language="xml"><xmp>
<cargo-orion2x homeDir="c:/apps/orion-2.0.3" output="target/output.log" 
    log="target/cargo.log" action="start">
  <configuration>
    <property name="cargo.servlet.port" value="8180"/>
    <war warfile="path/to/my/simple.war"/>
    <ear earfile="path/to/my/simple.ear"/>
  </configuration>
</cargo-orion2x>
</xmp></code></div>
<p>And here's an example using the Maven plugin:</p>
<div style="width:100%; overflow:auto; border-style: solid; border-width: 1px"><code><pre>
// To run it:
maven cargo:start

// To configure it, add the following in a Maven properties file:
cargo.containers = myTomcat
cargo.container.myTomcat.containerKey = tomcat5x
cargo.container.myTomcat.homeDir = c:/apps/jakarta-tomcat-5.0.30
cargo.container.myTomcat.config.hint = standalone
cargo.container.myTomcat.config.dir = ${maven.build.dir}/myTomcat/config
cargo.container.myTomcat.config.standalone.servlet.port = 8180
</pre></code></div>
<p>Enjoy!</p>
]]></description>
<dc:subject>Open source involvement</dc:subject>
<dc:creator>vmassol</dc:creator>
<dc:date>2005-05-01T10:36:23+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/vmassol/archives/000976_getting_svnsshprivate_key_to_work_in_intellij_ideaeclipse.html">
<title>Getting svn+ssh/private key to work in IntelliJ IDEA/Eclipse</title>
<link>http://blogs.codehaus.org/people/vmassol/archives/000976_getting_svnsshprivate_key_to_work_in_intellij_ideaeclipse.html</link>
<description><![CDATA[<p>At last, I was able to get the svn+ssh protocol to work from both IntelliJ IDEA (Irida #3200) and Eclipse (3.1M4), using a private key! Here's how to do it:<p>
<h3>For IntelliJ IDEA</h3>
<ul>
<li>Start by downloading the latest <code>javasvn.jar</code> from the <a href="http://www.tmate.org/svn/">TMate JavaSVN web site</a>. You need version 0.8.0 or later (I've used 0.8.0). The reason is that there is a new property named <code>javasvn.ssh2.key</code> that has been added as a hack for getting the Subclipse plugin for Eclipse to work with svn+ssh... Drop the jar in <code>[IDEAHOME]/plugins/svn4idea/lib</code>, replacing the existing jar of the same name there.</li>
<li>Modify the <code>[IDEAHOME]/bin/idea.bat</code> file to add the <code>javasvn.ssh2.key</code> system property: <code>IF "%IDEA_JVM_ARGS%" == "" set IDEA_JVM_ARGS= [...] -Djavasvn.ssh2.key=/path/to/your/private/key</code>.</li>
<li>Make sure you use  an openSSH-compatible private key. The Putty format is NOT supported by JSch. If you have a Putty private key, use Puttygen to export it as an OpenSSH key.</li>
<li>Make you sure you specify a valid username in the IDEA subversion setting, leaving the password field blank.</li>
</ul>
<h3>For Eclipse</h3>
<ul>
<li>Install <a href="http://subclipse.tigris.org/">Subclipse</a> using the provided Eclipse update site</li>
<li>Install the <a href="http://www.tmate.org/svn/subclipse.html">JavaSVN Subclipse Extension</a>, also using the provided Eclipse update site</li>
<li>Modify the way you start Eclipse as mentioned on the <a href="http://www.tmate.org/svn/subclipse.html">JavaSVN Subclipse Extension</a> web page</li>
<li>Go the SVN Repository Exploring perspective, right-click on your SVN Repository, click on "properties" and make sure you enter a valid username (leave the password blank).
</ul>
<p>Enjoy! That should please all the Codehaus hausmates... :-)</p>]]></description>
<dc:subject>Open source involvement</dc:subject>
<dc:creator>vmassol</dc:creator>
<dc:date>2005-02-06T14:23:56+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/vmassol/archives/000789_cci_container_client_interface.html">
<title>CCI: Container Client Interface</title>
<link>http://blogs.codehaus.org/people/vmassol/archives/000789_cci_container_client_interface.html</link>
<description><![CDATA[<p><b>11/08/2004 update</b>: The project is about to start on Codehaus and is now named Cargo.</p>
<p><b>Note</b>: There is also an <a href="http://www.theserverside.com/blogs/showblog.tss?id=CCI">article</a> and a <a href="http://www.theserverside.com/discussions/thread.tss?thread_id=27404">discussion thread</a> on TheServerSide about this inititative</p>
<p>Here's a new idea for an open source project I'd like to start. It could be called CCI (Container Client Interface). It would aim 
at providing a simple Java API to start/stop/configure/deploy Java containers (In the first version the goal would be to support J2EE containers).
This Java API could then be used by lots of other projects (Ant tasks, Maven plugins, IDE plugins, Cactus, etc).</p>
<p>The inspiration comes from the <a href="http://jakarta.apache.org/cactus">Cactus</a> project, which already provides an extensive
API to perform such tasks. The goal is to refactor the Cactus Ant API, remove anything related to Cactus and make it a standalone
project called CCI</p>
<p>Here's an integraton test showing what the API could look like:</p>
<pre><code language="java">
    public void testStartWithOneWarDeployed()
    {
        Container container = new Resin3xContainer();
        container.setHomeDir("/apps/resin-3.0.8");
        container.setPort(8080);
        container.setInstallDir(new File("target/resin3x"));

        WAR war = new WAR("src/testinput/simple.war");
        URL pingURL = new URL("http://localhost:" + PORT + "/simple/index.html"); 
        war.setPingURL(pingURL);

        container.addDeployable(war);

        ContainerRunner runner = new DefaultContainerRunner(container);

        runner.start();
        assertTrue("Container not started yet!", new HttpUtils().ping(pingURL));
        
        runner.stop();        
        assertFalse("Container not stopped yet!", new HttpUtils().ping(pingURL));
    }
</code></pre>
<p>As you can see there are several main Objects/Interfaces:</p>
<ul>
<li><b>Container</b>: This the main object that provides the API to start/stop the container.</li>
<li><b>WAR</b>: A WAR archive to be deployed in the container. Inherits from <b>Deployable</b>. There will be other types later on (WAR, EAR, RAR)</li>
<li><b>ContainerRunner</b>: Athough a container can be <code>start</code>ed without a container runner, the container runner provides advanced
feature like starting the container in a different thread, verifying if the container is already started, waiting till the container is started,
waiting till the container is stopped, etc.</li>
</ul>
<p>Note that the ping URLs are the URLs that will be pinged by the ContainerRunner object to ensure the container has finished
starting. Thus, after <code>container.start()</code> has finished executing you can be sure the container is started
and the archives have been deployed and are ready for servicing requests. A better solution in the future will be to use
JMX to ensure the container has finished starting. However, all containers do not yet support this feature.</p>
<p>A shorthand code version to start Resin 3.0.8 could look like:</p>
<pre><code language="java">
        Container container = new Resin3xContainer("/apps/resin-3.0.8");
        container.setInstallDir("target/resin3x");
        container.addDeployable(new WAR("src/testinput/simple.war"));
        container.start();
</code></pre>
<p>This is just a taste of what he CCI API could look like. Let me know what you think!</p>
]]></description>
<dc:subject>Open source involvement</dc:subject>
<dc:creator>vmassol</dc:creator>
<dc:date>2004-07-24T20:56:34+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/vmassol/archives/000783_maven_abbot_plugin_10_released.html">
<title>[Maven] Abbot plugin 1.0 released</title>
<link>http://blogs.codehaus.org/people/vmassol/archives/000783_maven_abbot_plugin_10_released.html</link>
<description><![CDATA[<p>I've just released a Maven plugin for <a href="http://abbot.sourceforge.net/">Abbot</a>. Abbot is a Swing unit testing framework. The <a href="http://maven.apache.org/reference/plugins/abbot/">Maven Abbot plugin</a> supports the following:</p>
<ul>
<li>Ability to start the Abbot Costello editor using either jars defined in the POM or the jars from an already installed WebStart application.</li>
<li>Ability to execute Abbot XML scripts through the Ant &lt;junit&gt; task</li>
<li>Ability to execute Abbot XML scripts on an already installed WebStart application (end-to-end functional testing)</li>
</ul>
<p>You can download the Maven Abbot plugin <a href="http://maven.apache.org/reference/plugins/abbot/downloads.html">here</a>.</p>
<p>Please note that this plugin was written jointly with Christian Blavier whom I thank very much for his help!</p>
]]></description>
<dc:subject>Open source involvement</dc:subject>
<dc:creator>vmassol</dc:creator>
<dc:date>2004-07-11T20:10:25+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/vmassol/archives/000782_my_current_oss_todo_list.html">
<title>My current OSS todo list...</title>
<link>http://blogs.codehaus.org/people/vmassol/archives/000782_my_current_oss_todo_list.html</link>
<description><![CDATA[<p>Here is a list of OSS stuff I'm considering doing in some short future (note that I'm not planning to do all of them ;-))</p>
<ul>
<li><a href="http://blogs.codehaus.org/people/vmassol/archives/000520_cactus_v2_architecture_proposal.html">Cactus v2</a></li>
<li>Create a container OSS project that offers a Java API to configure containers, start/stop them and deploy archives. The idea is to extract the existing API from the Cactus project (which already supports these tasks for several containers: Tomcat, Orion, Resin, JBoss, WebLogic, etc). Cactus would be refactored to use this new project. This API would be nice for any other project that requires a container.</li>
<li>Implement a Maven plugin for <a href="http://clirr.sourceforge.net">Clirr</a>. Note: I have almost finished a first version.</li>
<li>Implement suppor for history reports in Maven. For example it would be nice to get Clover reports over time, Checkstyle reports over time, Dashboard reports over time, etc. I'm currently thinking to consider reports as project artifacts and store them in the Maven repository. A history plugin could provide support to save/load them. Another solution (probably better) involves using a lightweight database (e.g. Hypersonic SQL) and considering this database file as the artifact.</li>
<li>Continue adding support for RSS feeds to the existing Maven plugins, wherever it makes sense. The final idea is to offer RSS feeds to all project information so that project members can have their own Personal Project Information Portal (PPIP). Among the tools I like/use, RSS feeds are already available for: JIRA, Confluence/TWiki, FishEye, Maven Checkstyle plugin, Maven Changes plugin. Next in my list are: Maven Clover report, Maven Dashboard plugin, Maven PMD plugin, Maven XDoc plugin (for downloads).</li>
</ul>
<p>In addition to this, I plan to continue fixing Cactus v1 bugs (albeit slowly...) and continue fixing bugs and adding enhancements to the Maven plugins I have started (changes, clover, abbot, etc).</p>
<p>If you're working on the same topics or if you're interested in contributing, please let me know!</p>]]></description>
<dc:subject>Open source involvement</dc:subject>
<dc:creator>vmassol</dc:creator>
<dc:date>2004-07-11T19:46:26+00:00</dc:date>
</item>
<item rdf:about="http://blogs.codehaus.org/people/vmassol/archives/000682_maven_statcvs_plugin_moved.html">
<title>[Maven] StatCvs plugin moved</title>
<link>http://blogs.codehaus.org/people/vmassol/archives/000682_maven_statcvs_plugin_moved.html</link>
<description><![CDATA[<p>After discussing with the <a href="http://statcvs-xml.berlios.de/">StatCvs-XML</a> team, we have decided that it would be best that they host the Maven StatCvs plugin on their <a href="http://statcvs-xml.berlios.de/maven-plugin/">own site</a>.</p>
<p>This will make it easier for them to improve it and keep it in sync with StatCvs-XML. This is possible thanks to the <code>plugin:download</code> feature of Maven 1.0 rc1/rc2 which allows users to easily install some external plugins. It is also possible to reference a plugin in your own <code>project.xml</code> as a dependency of type <code>plugin</code>.</p>]]></description>
<dc:subject>Open source involvement</dc:subject>
<dc:creator>vmassol</dc:creator>
<dc:date>2004-04-09T10:55:00+00:00</dc:date>
</item>


</rdf:RDF>
