<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Sonatype Blog &#187; polyglot</title>
	<atom:link href="http://blog.sonatype.com/people/tag/polyglot/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.sonatype.com/people</link>
	<description>Sonatype is transforming software development with tools, information and services that enable organizations to build better software, faster, using open-source components.</description>
	<lastBuildDate>Thu, 16 May 2013 18:53:09 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>&quot;Maven 3: Reloaded&quot; Presentation from Devoxx &#039;09</title>
		<link>http://blog.sonatype.com/people/2010/02/maven-3-reloaded-presentation-from-devoxx-09/</link>
		<comments>http://blog.sonatype.com/people/2010/02/maven-3-reloaded-presentation-from-devoxx-09/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 10:00:56 +0000</pubDate>
		<dc:creator>Jason van Zyl</dc:creator>
				<category><![CDATA[Sonatype]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[maven shell]]></category>
		<category><![CDATA[maven3]]></category>
		<category><![CDATA[polyglot]]></category>
		<category><![CDATA[Tycho]]></category>

		<guid isPermaLink="false">http://www.sonatype.com/people/?p=4480</guid>
		<description><![CDATA[Parleys.com has just published my &#8220;Maven 3: Reloaded&#8221; presentation from Devoxx &#8217;09. In this presentation, I put our current focus on Maven 3 in context and talk about some of the upcoming technologies like Polyglot Maven and Maven Shell. In this video you&#8217;ll see me demonstrate POM translation from XML to Groovy, discuss the ways [...]]]></description>
				<content:encoded><![CDATA[<p>Parleys.com has just published my &#8220;Maven 3: Reloaded&#8221; presentation from Devoxx &#8217;09.   In this presentation, I put our current focus on Maven 3 in context and talk about some of the upcoming technologies like Polyglot Maven and Maven Shell.  In this video you&#8217;ll see me demonstrate POM translation from XML to Groovy, discuss the ways in which Maven 3 changes allow m2eclipse to embed Maven, and some of the work we&#8217;ve done in Tycho to provide a path for OSGi developers.</p>

<p>You watch this embedded video, or <a href="http://www.parleys.com/#st=5&amp;id=1630&amp;sl=1">watch the presentation over on the Parleys.com site</a>.</p>

<div style="border: 2px solid black; width: 474px; height: 443px;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="474" height="443" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="pageId" value="1630" /><param name="src" value="http://www.parleys.com/share/parleysshare2.swf?pageId=1630" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="474" height="443" src="http://www.parleys.com/share/parleysshare2.swf?pageId=1630" pageid="1630" allowfullscreen="true"></embed></object></div>

<p><strong>Note:</strong> To switch between the slides and the video of me talking, click on the smaller video in the upper right-hand of this video embed.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sonatype.com/people/2010/02/maven-3-reloaded-presentation-from-devoxx-09/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Next Generation Maven Development Stack @ JFokus</title>
		<link>http://blog.sonatype.com/people/2010/01/next-generation-maven-development-stack/</link>
		<comments>http://blog.sonatype.com/people/2010/01/next-generation-maven-development-stack/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 05:21:05 +0000</pubDate>
		<dc:creator>Jason van Zyl</dc:creator>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[m2eclipse]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[Sonatype]]></category>
		<category><![CDATA[clojure]]></category>
		<category><![CDATA[GIT]]></category>
		<category><![CDATA[guice]]></category>
		<category><![CDATA[Hudson]]></category>
		<category><![CDATA[jfokus]]></category>
		<category><![CDATA[peaberry]]></category>
		<category><![CDATA[polyglot]]></category>
		<category><![CDATA[Scala]]></category>

		<guid isPermaLink="false">http://www.sonatype.com/people/?p=4113</guid>
		<description><![CDATA[For my talk today at JFokus today I&#8217;ve taken the liberty of starting some notes for folks interested in attending. There&#8217;s a lot to cover and so I thought I would try the approach of providing some material up front so the session can be more of a dialog. I&#8217;m going to attempt to cover [...]]]></description>
				<content:encoded><![CDATA[<p>For my talk today at JFokus today I&#8217;ve taken the liberty of starting some notes for folks interested in attending. There&#8217;s a lot to cover and so I thought I would try the approach of providing some material up front so the session can be more of a dialog. I&#8217;m going to attempt to cover everything in the picture below and save the demos folks might want to see for the Sonatype booth. Happy to chat with folks and do any demos before and after the presentation. Just stop by!</p>

<p><img src="http://www.sonatype.com/people/wp-content/uploads/2010/01/Stack1.png" alt="Stack.png" border="0" /></p>

<h3>Maven Stack Infrastructure</h3>

<p>I&#8217;m going to talk about some of the under pinnings of the technologies we&#8217;re using as part of our Maven work. Why we selected the technologes and some of the current work that&#8217;s happening.
<span id="more-4113"></span></p>

<ul>
<li><a href="http://code.google.com/p/google-guice/">Guice</a></li>
<li><a href="http://www.sonatype.com/people/2010/01/from-plexus-to-guice-1-why-guice/">From Plexus to Guice (#1): Why Guice?</a></li>
<li><a href="http://www.sonatype.com/people/2010/01/from-plexus-to-guice-2-the-guiceplexus-bridge-and-custom-bean-injection/">From Plexus to Guice (#2): The Guice/Plexus Bridge and Custom Bean Injection</a></li>
<li><a href="http://www.sonatype.com/people/2010/01/from-plexus-to-guice-3-creating-a-guice-bean-extension-layer/">From Plexus to Guice (#3): Creating a Guice Bean Extension Layer</a></li>
<li><a href="http://code.google.com/p/peaberry/">Peaberry</a></li>
<li><a href="http://incubator.apache.org/shiro/">Apache Shiro</a></li>
<li><a href="http://enunciate.codehaus.org/">Enunciate</a></li>
</ul>

<h3>Maven</h3>

<p>There are several develops going on in the various Maven projects. Maven 3.x is on the way, but we have some very interesting work happing with OSGi within our Tycho project. The Flexmojos project and NAR (the C/++ framework for Maven) are also popular.</p>

<h4>Tycho</h4>

<ul>
<li><a href="http://tycho.sonatype.org/">Tycho Site</a></li>
<li><a href="http://github.com/sonatype/sonatype-tycho">Tycho @ Github</a></li>
<li><a href="http://github.com/sonatype/m2eclipse-tycho">Tycho/PDE Integration</a></li>
<li><a href="http://wiki.eclipse.org/Equinox_p2">P2 Site</a></li>
</ul>

<h4>Flexmojos</h4>

<ul>
<li><a href="http://flexmojos.sonatype.org/">Flexmojos Site</a></li>
</ul>

<h4>NAR</h4>

<ul>
<li><a href="http://duns.github.com/maven-nar-plugin/">NAR Site</a></li>
<li><a href="http://github.com/sonatype/maven-nar-plugin">NAR @ Github</a></li>
</ul>

<h3>M2Eclipse</h3>

<p>The primary IDE integration we work on at Sonatype. The most important thing to talk about in M2Eclipse is the configuration framework.</p>

<ul>
<li><a href="http://m2eclipse.sonatype.org/">M2Eclipse Site</a></li>
</ul>

<h3>Hudson</h3>

<p>Most of the work we&#8217;ve been doing on Hudson is still not really good enough for public consumption but we&#8217;re testing the changes we&#8217;re making on the Sonatype grid.</p>

<p><a href="https://hudson.dev.java.net/">Hudson Site</a></p>

<h3>Nexus</h3>

<ul>
<li><a href="http://nexus.sonatype.org">Nexus Site</a></li>
<li><a href="http://www.sonatype.com/people/2010/01/nexus-oss-ecosystem/">Nexus: Improving Maven Central and Supporting the Maven Ecosystem</a></li>
<li><a href="http://www.sonatype.com/people/2010/01/10-questions/">Selecting OSS Software: 10 Questions Answered for Sonatype Nexus</a></li>
<li><a href="http://nexus.sonatype.org/oss-repository-hosting.html">OSS Repository Hosting</a></li>
<li><a href="http://bundles.sonatype.org/index.html#welcome">OSGi Central</a></li>
<li>Ruby Central (We&#8217;re working on making that publicly available</li>
</ul>

<h3>Proviso</h3>

<p>Proviso is not publicly released yet, but Alin and I have been working together to get our provisioning framework ready for a public release.</p>

<h3>Git</h3>

<p>We are starting to use Git heavily and soon likely exclusively. We are helping out on the EGit, and JGit projects at Eclipse and we&#8217;re trying to put a little Git server together based on JGit, MINA, and Apache Shiro.</p>

<ul>
<li><a href="http://www.eclipse.org/jgit/">JGit Site</a></li>
<li><a href="http://www.eclipse.org/egit/">EGit Site</a></li>
<li><a href="http://aniszczyk.org/2010/01/25/egit-and-jgit-builds-available/">Tycho building EGit/JGit</a></li>
<li><a href="http://github.com/sonatype/sshjgit">SShJGit @ Github</a></li>
</ul>

<h3>Maven Extensions</h3>

<p>I&#8217;ll chat about these in the talk.</p>

<ul>
<li><a href="http://polyglot.sonatype.org/">Polyglot Maven Site</a></li>
<li><a href="http://github.com/sonatype/polyglot-maven">Polyglot Maven @ Github</a></li>
<li><a href="http://mvnsh.sonatype.org">Maven Shell</a></li>
<li><a href="https://github.com/sonatype/mvnsh">Maven Shell @ Github</a></li>
</ul>

<p>I&#8217;ll likely keep adding to the entry leading up the talk, but I thought I would get the ball rolling!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sonatype.com/people/2010/01/next-generation-maven-development-stack/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nexus: Improving Maven Central and Supporting the Maven Ecosystem</title>
		<link>http://blog.sonatype.com/people/2010/01/nexus-oss-ecosystem/</link>
		<comments>http://blog.sonatype.com/people/2010/01/nexus-oss-ecosystem/#comments</comments>
		<pubDate>Wed, 13 Jan 2010 07:00:29 +0000</pubDate>
		<dc:creator>Jason van Zyl</dc:creator>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[m2eclipse]]></category>
		<category><![CDATA[Nexus]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[central]]></category>
		<category><![CDATA[codehaus]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[polyglot]]></category>
		<category><![CDATA[repository]]></category>

		<guid isPermaLink="false">http://www.sonatype.com/people/?p=3834</guid>
		<description><![CDATA[Nexus is more than just a repository manager.  It is a project that has been developed using the same underlying infrastructure of Maven, and it has forced us to think about the different ways in which the components that comprise Maven can be integrated with other, more complex systems.   It is a critical step toward [...]]]></description>
				<content:encoded><![CDATA[<p><!--reddZ=none--> <a rel="nofollow" href="http://nexus.sonatype.org/"></a><a href="http://www.sonatype.com/people/wp-content/uploads/2010/01/nexus-small.png"><img class="alignright size-full wp-image-3683" title="nexus-small" src="http://www.sonatype.com/people/wp-content/uploads/2010/01/nexus-small.png" alt="" width="250" height="62" /></a>Nexus is more than just a repository manager.  It is a project that has been developed using the same underlying infrastructure of <a rel="nofollow" href="http://maven.apache.org/">Maven</a>, and it has forced us to think about the different ways in which the components that comprise Maven can be integrated with other, more complex systems.   It is a critical step toward a more mature Maven ecosystem which starts to encompass much more than just software builds.   You can think of Nexus as the second major project to emerge from the Maven ecosystem &#8211; an ecosystem which includes both commercial interests as well as open source volunteers and community participants.</p>

<p>Sonatype is focused on improving the foundational infrastructure which will allow us to improve the quality of artifacts and their accompanying metadata in Maven Central and Maven repositories around the world.  A lot of this is not especially glamorous work and though many people complain about the state of some of the Maven repositories, very few take action.    Here are some of the things Sonatype is doing with Nexus to improve the state of the Maven ecosystem and expand its scope.</p>

<h3><span id="more-3834"></span>Improving the Quality of Public Maven Repositories</h3>

<p>Any effort to improve the quality of the Central Maven repository needs to begin with the major feeder repositories.  For years, we have been giving rsync access to many of the organizations with large feeder repositories like Apache and Codehaus.   When we started this effort, we were optimistic that these organizations would take care of their Maven repositories.   We thought that repository maintainers and projects would make sure that all artifacts were signed and that all POMs contained a bare minimum of useful elements such as &#8220;license&#8221; and &#8220;description&#8221;.    With hundreds of projects pushing artifacts into their respective repositories on a daily basis, it has become obvious that without some mechanism to guarantee quality, without a well-defined process, the Central Maven repository will contain artifacts and metadata of questionable status.  While the vast majority of artifacts have appropriate PGP signatures and metadata, the fact that a minority of (often very popular) artifacts lack proper dependency definitions or license elements means that we see a steady stream of complaints about the quality of the repository from our users.</p>

<p>These problems can be anything from one project trying to publish another project&#8217;s artifacts because they weren&#8217;t in Maven Central, incorrect, bad, or missing metadata, missing javadocs or source JARs, to invalid transitive closures.  Whatever the problems are, the overall issue stems from the lack of process surrounding how artifacts are published to our feeder repositories, and how these artifacts are then certified to be published to the Central Maven repository.</p>

<p>Sonatype&#8217;s answer to this problem has been to provide tools that can automate the process of repository maintenance for Central&#8217;s largest customers &#8211; the main feeder repositories.   We&#8217;ve provided a solution to the largest of the feeder repositories which allows them to use the <a rel="nofollow" href="../../books/nexus-book/reference/staging.html">Nexus Staging Suite</a> to validate that all release artifacts contain the bare minimum of metadata, javadoc, and a valid PGP signature.    As <a rel="nofollow" href="../2010/01/apache-portals-simplifies-releases-with-nexus-staging-suite/">Ate Douma</a> wrote in Monday&#8217;s post about using the Nexus Staging suite to support the Apache Portals project, we&#8217;ve supplied a solution that reduces the amount of error-prone, manual work associated with software releases, and we&#8217;re going to continue to find ways to address the needs of large, open-source enterprises with Nexus by providing Open Source projects and organizations with a free license and free support.   Here is a list of some of the organizations with large feeder repositories that we are supporting directly:</p>

<ul>
    <li>The Apache Software Foundation</li>
    <li>Codehaus</li>
    <li>Alfresco</li>
    <li>ExoPlatform</li>
    <li>Glassfish</li>
    <li>Open QA</li>
    <li>Scala-Tools</li>
</ul>

<p>With all of these organizations and projects using the <a rel="nofollow" href="../../books/nexus-book/reference/staging.html">Nexus Staging Suite</a>, we are confident that the quality and reliability of artifacts and metadata will increase over time.  The PGP signatures provide the security assurances organizations need, and the sources, javadocs and correct POM information like SCM information make for a better developer experience in the IDE.  In <a rel="nofollow" href="http://m2eclipse.sonatype.org/">M2Eclipse</a>, for example, javadocs and sources can be dynamically retrieved as required and binary dependencies can be materialized to source from from SCM coordinates. This makes contributing patches to an dependent project an order of magnitude easier.</p>

<p>We are also fortunate to be working closely with <a rel="nofollow" href="http://www.atlassian.com/">Atlassian</a>. We have <a rel="nofollow" href="../../books/nexus-book/reference/crowd.html">Atlassian Crowd support</a> in Nexus, so Nexus is an ideal fit for Atlassian and for organizations that make use of Atlassian&#8217;s compelling products. You can find Atlassian&#8217;s Nexus instance <a rel="nofollow" href="https://maven.atlassian.com/index.html">here</a>. It&#8217;s just another validation point for us that Atlassian sees fit to use our products as part of their daily development. We have a lot of respect for the Atlassian folks, and we&#8217;ve standardized our entire development environment on tools like <a rel="nofollow" href="http://www.google.com/url?sa=t&amp;source=web&amp;ct=res&amp;cd=1&amp;ved=0CAoQFjAA&amp;url=http%3A%2F%2Fwww.atlassian.com%2Fsoftware%2Fjira%2F&amp;ei=PeZMS5jrCILSMojtrf0M&amp;usg=AFQjCNGx2m653qgbdvjNB8XxITgsQAI6eg&amp;sig2=ikymb4spNgpmY-XjYI6_sQ">JIRA</a> , Greenhopper, and Confluence.</p>

<h3>Decreasing the Time to Reach Maven Central</h3>

<p>Many users and projects have complained that it can take a while to get their artifacts in Maven Central so we&#8217;re starting to focus on reducing the time to reach Central. The biggest obstacle to automating the process of publishing artifacts to Central is one of quality.   Artifacts would reach central faster if there was a better way to enforce a minimal set of quality standards.  The legacy process involved projects uploading &#8220;bundles&#8221; to a JIRA project and repository maintainers manually inspecting the bundles to see if they complied with a set of standards.</p>

<p>In the previous section, I described how Nexus is already powering the major feeder repositories for the Central Maven repository.  What we offer projects is described <a rel="nofollow" href="http://nexus.sonatype.org/oss-repository-hosting.html">here</a>. Basically we will help you cleanup, and migrate your project&#8217;s Maven repository to our hosted infrastructure and help you setup your project POMs to use <a rel="nofollow" href="../../books/nexus-book/reference/staging.html">Nexus&#8217; Staging</a>. Projects are setup with the default staging rules which ensure the presence of PGP signatures, javadocs, sources, and a POM which contains decent information. We provide all the instructions for the setup on the Maven side so there is little work you have to do in order to take advantage of this service.  We are also providing a mechanism by which the standard bundle uploads, typically done via JIRA, can be handled by Nexus. Internally within Nexus the upload bundle is exploded and placed in a staging repository, as would happen if you performed the release against Nexus from your Maven build.  We then apply the same staging rules to ensure quality.</p>

<p>We have already started rewarding projects with good Maven releases by automating their synchronization with Maven Central.   Over time we are going to start enforcing standards for security and quality of metadata.    If you have proper project metadata, PGP signatures, javadocs and sources your artifacts will fly into Central as quickly as possible.  Projects that submit poor Maven releases are going to have a more difficult time getting artifacts into Maven Central.   We&#8217;ll start to enforce these standards gradually and we&#8217;ll give the community time to adapt.  Any tool that creates bundles for deployment to Central is capable of producing these artifacts. The staging rules don&#8217;t care how the releases were constructed. So use whatever tools you like, you&#8217;ll just have to pass a minimal set of requirements to make it into the Central repository. Over time this should greatly improve the quality of Maven Central.</p>

<h3>Providing Metadata about Repositories</h3>

<p>For a long time we have been providing a way, through Nexus, and the stand-alone Nexus Indexer, to produce the Maven repository index.  The repository index contains information about all the artifacts in the given repository including class file information and project identifiers.  It is primarily used as part of IDE integration to help developers find dependencies based on artifact coordinates or class references, like import statements.   Using <a href="http://m2eclipse.sonatype.org">m2eclipse</a>, all you need to do to add a new dependency is type the name of a class into your code and search the index for matching dependencies.    You can also search the repository index for all of the available Maven archetypes when you are creating a new Eclipse project.    Both of these IDE use cases are possible because of the standard repository index format that was defined as part of the Nexus project.</p>

<p>The Nexus index format is also storing information about the presence of PGP signatures, javadocs, sources, and checksums.   Using Nexus and other tools that can read the Nexus index format, you can aggregate multiple repository indexes together and perform quick searches across multiple public repositories (as well as your own hosted repositories). The Nexus indices from the OSS repositories around the world are proving to be a critical resource, we can tell because it is the most requested item from Maven Central.  Index downloads amounted to 28TB of transfer last month.</p>

<h3>Polyglot Component Repositories</h3>

<p>The explosion of language choices has transformed the way most developers approach problem solving.   Just four years ago it would have been normal to walk into a corporation and see Java at all levels of the stack.  In 2010, most businesses have started to incorporate multiple languages and hybrid architectures into enterprise systems.   A system designed today might use Ruby on Rails (running under JRuby) to power a web site which interacts with a set of services coded in Java.  Services like Twitter rely on a foundation of Scala code executing on the JVM while other portions of the Twitter architecture use different languages and different technologies where they are most appropriate.</p>

<p>We are a polyglot industry, and while our software enterprises are run on a mixture of different languages, our development tools and build technologies are often locked into a single language or a single technology.   A Ruby application is built using Rake, a Scala application is built using Sake or the Maven Scala plugin, and Java or OSGi applications are built using Maven.   A Ruby library might generate and consume gems while a Java application might generate and consume JAR files.   There is currently no single, consolidated &#8220;Tower of Babel&#8221; to help developers translate between different types of software artifacts.   We&#8217;ve put a lot of effort into making the foundation of Nexus as agnostic as possible about what it is storing, and, because of this, we&#8217;re moving to add support for even more artifact types.</p>

<p>Nexus currently supports the two OSGi formats of P2 and OBR and we are just finishing our first draft of RubyGems support.   Polyglot Maven will drive us toward a Polyglot Nexus. As part of the work we&#8217;re doing on Polyglot Maven we may find that different scripting language implementations have slightly different requirements for dependency management or provisioning runtimes, and we&#8217;ll be ready for that.</p>

<h3>Where do we go from here?</h3>

<p>Next we&#8217;re thinking about ways to make statistics for a given project&#8217;s artifacts available to the project&#8217;s developers.  We have already implemented user signup in Nexus and we are currently working on project signup as well. What this means is that projects can register with a given groupId, or set of groupIds, and optionally be provisioned a repository which can be operated by a set of users. Once a project registers we will know what slice, or slices, of the statistics they need to see.   Our initial thought is that project statistics, number of downloads should only be made available to the public with the permission of each individual project. Brian and I along with Greg Luck and Dain Sundstrom have been working on a simple statistics mechanism that we hopefully can provide to projects early this year.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sonatype.com/people/2010/01/nexus-oss-ecosystem/feed/</wfw:commentRss>
		<slash:comments>167</slash:comments>
		</item>
	</channel>
</rss>
