<?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>Nuxeo Developers Blog</title>
	<atom:link href="http://dev.blogs.nuxeo.com/feed" rel="self" type="application/rss+xml" />
	<link>http://dev.blogs.nuxeo.com</link>
	<description>News from the Open Source ECM trenches</description>
	<lastBuildDate>Thu, 09 Feb 2012 16:15:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>[Monday Dev Heaven] Connecting Nuxeo to OAuth Authenticated APIs: Yammer as Example</title>
		<link>http://dev.blogs.nuxeo.com/2012/02/opening-nuxeo-oauth-authenticated-apis.html</link>
		<comments>http://dev.blogs.nuxeo.com/2012/02/opening-nuxeo-oauth-authenticated-apis.html#comments</comments>
		<pubDate>Mon, 06 Feb 2012 18:02:01 +0000</pubDate>
		<dc:creator>Laurent Doguin</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Monday Dev Heaven]]></category>
		<category><![CDATA[Nuxeo]]></category>
		<category><![CDATA[Nuxeo IDE]]></category>
		<category><![CDATA[Studio]]></category>

		<guid isPermaLink="false">http://dev.blogs.nuxeo.com/?p=4382</guid>
		<description><![CDATA[<p>First, for those of you who prefer reading code rather than blogs: <a title="https://github.com/ldoguin/nuxeo-yammer-sample" href="https://github.com/ldoguin/nuxeo-yammer-sample">https://github.com/ldoguin/nuxeo-yammer-sample</a>.</p>
<p>Now let&#8217;s talk about <a title="Oauth Specs" href="http://oauth.net/core/1.0/">OAuth</a>. OAuth is a very common way to authenticate with social networks, websites or applications. I am going to show you how you can do it in Nuxeo.</p>
<h2>OAuth</h2>
<p>We already use OAuth for our OpenSocial gadgets since it comes as a Shindig dependency, which lets us share Nuxeo gadgets in external containers. It&#8217;s time to extend that. We need to let users grant access to any service provider registered in the Nuxeo Admin Center. We&#8217;ve added some code to handle the three-legged authentication. This will help through the different phases (request, authorization, access). Then I wrote a quick WebEngine module to use it in Nuxeo. This is really straightforward using the IDE. You select WebEngine project in the wizard and you get a simple WebEngine site that you can extend &#8230; <a href="http://dev.blogs.nuxeo.com/2012/02/opening-nuxeo-oauth-authenticated-apis.html" class="read_more">Read more</a></p>]]></description>
			<content:encoded><![CDATA[<p>First, for those of you who prefer reading code rather than blogs: <a title="https://github.com/ldoguin/nuxeo-yammer-sample" href="https://github.com/ldoguin/nuxeo-yammer-sample">https://github.com/ldoguin/nuxeo-yammer-sample</a>.</p>
<p>Now let&#8217;s talk about <a title="Oauth Specs" href="http://oauth.net/core/1.0/">OAuth</a>. OAuth is a very common way to authenticate with social networks, websites or applications. I am going to show you how you can do it in Nuxeo.</p>
<h2>OAuth</h2>
<p>We already use OAuth for our OpenSocial gadgets since it comes as a Shindig dependency, which lets us share Nuxeo gadgets in external containers. It&#8217;s time to extend that. We need to let users grant access to any service provider registered in the Nuxeo Admin Center. We&#8217;ve added some code to handle the three-legged authentication. This will help through the different phases (request, authorization, access). Then I wrote a quick WebEngine module to use it in Nuxeo. This is really straightforward using the IDE. You select WebEngine project in the wizard and you get a simple WebEngine site that you can extend and modify quickly using the hot reload features of the IDE. This module can handle three different URLs:</p>
<p><strong>1. http://mysite/nuxeo/site/oauthsubscriber?servicename=myServiceProviderName&amp;serviceurl=myURLencodedServiceProviderURL</strong></p>
<p>This page will show the service provider name and description, ask you if you want to authorize it, and will let you enter a code given by the service provider, if necessary. You need to give the service provider name and URL as query parameters.</p>
<p><strong>2. http://mysite/nuxeo/site/oauthsubscriber/authorize?servicename=myServiceProviderName&amp;serviceurl=myURLencodedServiceProviderURL</strong><br />
<a href="http://dev.blogs.nuxeo.com/files/2012/02/AuthorizeMyApp.png"><img class="alignright size-medium wp-image-4386" src="http://dev.blogs.nuxeo.com/files/2012/02/AuthorizeMyApp-300x132.png" alt="Authorize Nuxeo to access Yammer" width="300" height="132" /></a><br />
This will start the authorization process. Two things can happen. In the best case, your service provider supports callback. Once you click on the link, a new page will open and ask you if you want to authorize Nuxeo. Once you click, you are redirected to a page saying you are registered. In the worst case, your service provider does not handle callback. You get a code that you have to enter manually on the WebEngine OAuth subscriber page. Once you&#8217;ve entered the code, you should land on the page saying you are registered.</p>
<p><strong>3. http://mysite/nuxeo/site/oauthsubscriber/callback?servicename=myServiceProviderName&amp;serviceurl=myURLencodedServiceProviderURL</strong><br />
<a href="http://dev.blogs.nuxeo.com/files/2012/02/enterCode.png"><img class="alignright size-medium wp-image-4387" src="http://dev.blogs.nuxeo.com/files/2012/02/enterCode-300x138.png" alt="Given code when callback is not supported" width="300" height="138" /></a><br />
This is the URL where you are redirected if the service provider supports callback.</p>
<p>Now I have everything I need to ask authorization to a service provider. I can store the secret token and use it to sign every request the user will make to the service provider.</p>
<p>Speaking of service providers, you&#8217;ll need to register the service provider in the Admin Center. You need to give the name and the URL of the service. Be careful, they are used to identifying your service. You also need to fill in the following fields: description, request, authorization and access URLs, the consumer key and the consumer secret key.</p>
<p><a href="http://dev.blogs.nuxeo.com/files/2012/02/RegisterServiceProvider.png"><img class="aligncenter size-medium wp-image-4388" src="http://dev.blogs.nuxeo.com/files/2012/02/RegisterServiceProvider-300x168.png" alt="Register your service provider in the admin center" width="300" height="168" /></a></p>
<h2>Real Life Example: Yammer</h2>
<p>This is actually the reason I started playing with OAuth. <a title="yammer" href="https://www.yammer.com/">Yammer</a> can be really useful when your team is split between Paris, New York and Boston. And I know Roland and Eric were getting frustrated when they could not share documents from our Intranet to Yammer. I&#8217;m happy to say that this is not an issue anymore <img src='http://dev.blogs.nuxeo.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /><br />
It&#8217;s actually pretty easy to set up once you&#8217;ve taken care of the OAuth part. All you need is a simple operation and Nuxeo Studio. The goal is to code an operation that posts the message on Yammer using a document and uses it in an operation chain in Studio.</p>
<p><a href="http://dev.blogs.nuxeo.com/files/2012/02/Yammershare.png"><img class="aligncenter size-medium wp-image-4389" src="http://dev.blogs.nuxeo.com/files/2012/02/Yammershare-300x169.png" alt="Share a document in Yammer" width="300" height="169" /></a></p>
<p>So about that operation, the quickest way to do this is again to use Nuxeo IDE. Create a new project and a new operation. Here&#8217;s what the code looks like:</p>
<pre class="brush: java; title: ; notranslate">
@Operation(id = ShareInYammer.ID, category = Constants.CAT_DOCUMENT, label = &quot;ShareInYammer&quot;, description = &quot;This operation will post the given document and comment on yammer&quot;)
public class ShareInYammer {

	public static final String ID = &quot;ShareInYammer&quot;;

	@Context
	public CoreSession coreSession;

	@Param(name = &quot;document&quot;)
	public DocumentModel doc;

	@Param(name = &quot;comment&quot;)
	public String comment;

	@OperationMethod
	public void run() throws Exception {
		OAuthAccessor accessor = NuxeoOAuthClient.buildSigningAccessor(
				WEOAuthConstants.getDefaultCallbackURL(),
				YammerConstants.GADGET_URL,
				YammerConstants.YAMMER_SERVICE_PROVIDER_NAME,
				coreSession.getPrincipal().getName());
		OAuthClient client = new OAuthClient(new URLConnectionClient());
		final List&lt;OAuth.Parameter&gt; parameters = OAuth.newList(
				YammerConstants.YAMMER_MESSAGE_BODY_PROPERTY_NAME, comment,
				YammerConstants.YAMMER_OPEN_GRAPH_TITLE_PROPERTY_NAME, doc.getTitle(),
				YammerConstants.YAMMER_OPEN_GRAPH_DESCRIPTION_PROPERTY_NAME,
				doc.getProperty(&quot;dc:description&quot;).getValue(String.class),
				YammerConstants.YAMMER_OPEN_GRAPH_TYPE_PROPERTY_NAME,
				YammerConstants.YAMMER_OPEN_GRAPH_TYPE_DOCUMENT_PROPERTY_NAME,
				YammerConstants.YAMMER_OPEN_GRAPH_URL_PROPERTY_NAME,
				DocumentModelFunctions.documentUrl(doc));

		client.invoke(accessor, OAuthMessage.POST,
				YammerConstants.YAMMER_MESSAGE_POST_URL, parameters);
	}

}
</pre>
<p>Now it&#8217;s easy to export your operation to your Studio account and use it in your project.</p>
<p>All the source code is available on GitHub: <a title="https://github.com/ldoguin/nuxeo-yammer-sample" href="https://github.com/ldoguin/nuxeo-yammer-sample">https://github.com/ldoguin/nuxeo-yammer-sample</a>.</p>
<p>That&#8217;s it for today. See you next Monday <img src='http://dev.blogs.nuxeo.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://dev.blogs.nuxeo.com/2012/02/opening-nuxeo-oauth-authenticated-apis.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Q&amp;A Friday] How do I authenticate my external application with Nuxeo?</title>
		<link>http://dev.blogs.nuxeo.com/2012/02/friday-qa-authenticate-external-application-nuxeo.html</link>
		<comments>http://dev.blogs.nuxeo.com/2012/02/friday-qa-authenticate-external-application-nuxeo.html#comments</comments>
		<pubDate>Fri, 03 Feb 2012 17:03:24 +0000</pubDate>
		<dc:creator>Laurent Doguin</dc:creator>
				<category><![CDATA[Friday Q&A]]></category>

		<guid isPermaLink="false">http://dev.blogs.nuxeo.com/?p=4380</guid>
		<description><![CDATA[<p>Hi everyone and welcome to this new weekly blog post. Every week we&#8217;ll feature a question asked on <a title="Nuxeo Answers" href="http://answers.nuxeo.com/">Nuxeo Answers</a>.<a href="http://dev.blogs.nuxeo.com/files/2012/02/question.png"><img class="alignright size-full wp-image-4385" title="question" src="http://dev.blogs.nuxeo.com/files/2012/02/question.png" alt="" width="157" height="123" /></a></p>
<p>So without further ado, here goes Question #1:</p>
<p><a title="How do I integrate with nuxeo-platform-login-portal-sso in my portal?" href="http://answers.nuxeo.com/questions/1002/how-do-i-integrate-with-nuxeo-platform-login-portal-sso-in-my-portal">How do I integrate with nuxeo-platform-login-portal-sso in my portal?</a></p>
<address style="color: #808080;">First, note that nuxeo-platform-login-portal-sso is a bit of a misnomer; what this module really does is establish a shared-secret method of authenticating between the Nuxeo server and a client.</address>
<p>By going to the URL above, you&#8217;ll see the answer to this question, with a detailed explanation and example code. This is a nice way to handle authentication of any external application to a Nuxeo server, using the http or automation client for instance.&#8230; <a href="http://dev.blogs.nuxeo.com/2012/02/friday-qa-authenticate-external-application-nuxeo.html" class="read_more">Read more</a></p>]]></description>
			<content:encoded><![CDATA[<p>Hi everyone and welcome to this new weekly blog post. Every week we&#8217;ll feature a question asked on <a title="Nuxeo Answers" href="http://answers.nuxeo.com/">Nuxeo Answers</a>.<a href="http://dev.blogs.nuxeo.com/files/2012/02/question.png"><img class="alignright size-full wp-image-4385" title="question" src="http://dev.blogs.nuxeo.com/files/2012/02/question.png" alt="" width="157" height="123" /></a></p>
<p>So without further ado, here goes Question #1:</p>
<p><a title="How do I integrate with nuxeo-platform-login-portal-sso in my portal?" href="http://answers.nuxeo.com/questions/1002/how-do-i-integrate-with-nuxeo-platform-login-portal-sso-in-my-portal">How do I integrate with nuxeo-platform-login-portal-sso in my portal?</a></p>
<address style="color: #808080;">First, note that nuxeo-platform-login-portal-sso is a bit of a misnomer; what this module really does is establish a shared-secret method of authenticating between the Nuxeo server and a client.</address>
<p>By going to the URL above, you&#8217;ll see the answer to this question, with a detailed explanation and example code. This is a nice way to handle authentication of any external application to a Nuxeo server, using the http or automation client for instance.</p>
]]></content:encoded>
			<wfw:commentRss>http://dev.blogs.nuxeo.com/2012/02/friday-qa-authenticate-external-application-nuxeo.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Exploring Nuxeo APIs: Content Automation</title>
		<link>http://dev.blogs.nuxeo.com/2012/01/exploring-nuxeo-apis-content-automation.html</link>
		<comments>http://dev.blogs.nuxeo.com/2012/01/exploring-nuxeo-apis-content-automation.html#comments</comments>
		<pubDate>Fri, 27 Jan 2012 14:12:06 +0000</pubDate>
		<dc:creator>Laurent Doguin</dc:creator>
				<category><![CDATA[CMIS]]></category>
		<category><![CDATA[ECM]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Nuxeo IDE]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[content automation]]></category>
		<category><![CDATA[nuxeo]]></category>
		<category><![CDATA[rest]]></category>
		<category><![CDATA[webservice]]></category>

		<guid isPermaLink="false">http://dev.blogs.nuxeo.com/?p=4374</guid>
		<description><![CDATA[<p><a href="http://dev.blogs.nuxeo.com/files/2012/01/API.jpg"><img class="alignright size-medium wp-image-4378" src="http://dev.blogs.nuxeo.com/files/2012/01/API-300x242.jpg" alt="The range of APIs offered by the Nuxeo Platform" width="300" height="242" /></a></p>
<p>One of the main assets of the Nuxeo Platform is the richness of its APIs: CMIS, REST, WebServices, WSS, Content Automation. Content Automation is a subset of our REST API and is probably the most powerful and simplest means to access Nuxeo. Its strength and richness lies in its ability to provide access to all the services offered within the Nuxeo Platform, but also because of how it integrates with other Nuxeo tools, such as Nuxeo Studio for customizing it, or Nuxeo IDE for extending.</p>
<p>From our wiki:</p>
<address style="color: #808080;">Content Automation is a Nuxeo service that exposes commons actions you do on a Nuxeo application as atomic operations so that one can assemble them to create complex business rules and logic, without writing any Java code.
<p>In other words, content automation provides a high level API over Nuxeo services &#8211; an API made up of operations that can be assembled into </p>&#8230; <a href="http://dev.blogs.nuxeo.com/2012/01/exploring-nuxeo-apis-content-automation.html" class="read_more">Read more</a></address>]]></description>
			<content:encoded><![CDATA[<p><a href="http://dev.blogs.nuxeo.com/files/2012/01/API.jpg"><img class="alignright size-medium wp-image-4378" src="http://dev.blogs.nuxeo.com/files/2012/01/API-300x242.jpg" alt="The range of APIs offered by the Nuxeo Platform" width="300" height="242" /></a></p>
<p>One of the main assets of the Nuxeo Platform is the richness of its APIs: CMIS, REST, WebServices, WSS, Content Automation. Content Automation is a subset of our REST API and is probably the most powerful and simplest means to access Nuxeo. Its strength and richness lies in its ability to provide access to all the services offered within the Nuxeo Platform, but also because of how it integrates with other Nuxeo tools, such as Nuxeo Studio for customizing it, or Nuxeo IDE for extending.</p>
<p>From our wiki:</p>
<address style="color: #808080;">Content Automation is a Nuxeo service that exposes commons actions you do on a Nuxeo application as atomic operations so that one can assemble them to create complex business rules and logic, without writing any Java code.</p>
<p>In other words, content automation provides a high level API over Nuxeo services &#8211; an API made up of operations that can be assembled into complex operation chains (or macro operations). These operations are also exposed remotely through a REST API.</p>
<p>The main goal of automation is to enable end users to rapidly build complex business logic without writing any Java code. Instead, just by assembling the built-in set of atomic operations into complex chains and then plugging these chains inside Nuxeo as UI actions, event handlers, REST bindings, etc., they are able to attain the same results.</p>
<p>You can also create new atomic operations (write a Java class that defines an operation) and contribute them to the set of built-in operations. To define an operation chain, you just need to write an XML contribution that describes the chain by listing each operation in the chain along with the parameter values that will be used to execute the operation. If you need to define dynamic operation parameters (whose value will be computed at runtime when the operation is executed) you can use scripting (e.g. EL syntax) to fetch the actual parameter value at execution time.</p></address>
<p>So here is a short screencast showing you how to write and deploy an operation on a Nuxeo server using Nuxeo IDE, and how this operation can be called from a simple python script. You will also witness the awesome hot-reload feature of the IDE <img src='http://dev.blogs.nuxeo.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p style="text-align:center;"><iframe width="320" height="240" src="http://www.youtube.com/embed/4F3_L4cXDrU" frameborder="0" type="text/html"></iframe></p>
<p>Here is the python script:</p>
<pre class="brush: python; title: ; notranslate">
#!/usr/bin/env python
import urllib2, base64, json, sys

def count_words(document, field, server='localhost', port=8080,
    user='Administrator', password='Administrator'):
    &quot;&quot;&quot;Call the CountWords operation on a text field of a document&quot;&quot;&quot;

    url = &quot;http://%s:%d/nuxeo/site/automation/CountWords&quot; % (
        server, port)
    auth = 'Basic %s' % base64.b64encode(user + &quot;:&quot; + password).strip()
    request_headers = {
        &quot;Content-Type&quot;: &quot;application/json+nxrequest&quot;,
        &quot;Accept&quot;: &quot;application/json+nxentity, */*&quot;,
        &quot;Authorization&quot;: auth,
    }
    request_body = {&quot;params&quot;: {&quot;document&quot;: document, &quot;field&quot;: field}}
    request_body = json.dumps(request_body)

    request = urllib2.Request(url, request_body, request_headers)
    response = urllib2.urlopen(request)
    return int(json.loads(response.read()).get(u'value', 0))

if __name__ == '__main__':
    print count_words(sys.argv[1], sys.argv[2])
</pre>
<p>And this is the java code:</p>
<pre class="brush: java; title: ; notranslate">
package org.nuxeo.sample;

import org.nuxeo.ecm.automation.core.Constants;
import org.nuxeo.ecm.automation.core.annotations.Operation;
import org.nuxeo.ecm.automation.core.annotations.OperationMethod;
import org.nuxeo.ecm.automation.core.annotations.Param;
import org.nuxeo.ecm.core.api.ClientException;
import org.nuxeo.ecm.core.api.DocumentModel;
import org.nuxeo.ecm.core.api.model.PropertyException;

/**
 * @author ogrisel
 */
@Operation(id = CountWords.ID, category = Constants.CAT_DOCUMENT, label = &quot;CountWords&quot;, description = &quot;&quot;)
public class CountWords {

    public static final String ID = &quot;CountWords&quot;;

    @Param(name = &quot;document&quot;)
    DocumentModel doc;

    @Param(name = &quot;field&quot;)
    String fieldName;

    @OperationMethod
    public Object run() throws PropertyException, ClientException {
        String text = doc.getProperty(fieldName).getValue(String.class).trim();
        return text.isEmpty() ? 0 : text.split(&quot;\\s+&quot;).length;
    }

}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://dev.blogs.nuxeo.com/2012/01/exploring-nuxeo-apis-content-automation.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The JBoss tortoise and the Tomcat hare</title>
		<link>http://dev.blogs.nuxeo.com/2012/01/the-jboss-tortoise-and-the-tomcat-hare.html</link>
		<comments>http://dev.blogs.nuxeo.com/2012/01/the-jboss-tortoise-and-the-tomcat-hare.html#comments</comments>
		<pubDate>Wed, 04 Jan 2012 18:39:40 +0000</pubDate>
		<dc:creator>bjalon</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Nuxeo]]></category>
		<category><![CDATA[bench]]></category>
		<category><![CDATA[funkload]]></category>
		<category><![CDATA[jboss]]></category>
		<category><![CDATA[tomcat]]></category>

		<guid isPermaLink="false">http://dev.blogs.nuxeo.com/2012/01/the-jboss-tortoise-and-the-tomcat-hare.html</guid>
		<description><![CDATA[<p>During the development of <a href="http://www.nuxeo.com/en/products/content-management-platform">Nuxeo Platform 5.5</a> (on the 5.4.3-SNAPSHOT branch) Nuxeo has moved the application to a fully POJO (<a href="http://en.wikipedia.org/wiki/POJO">Plain Old Java Objects</a>, if you wonder what it means) based distribution. This decision was motivated by our desire to abandon the RMI exposition primarily because RMI/EJBs introduces complexity along with poor performance, plus we prefer the REST exposition of our API.</p>
<p>Now that this modification has been completed, we were curious about what this new 5.4.3-SNAPSHOT distribution without EJB would bring us in terms of performance against our old distribution with EJBs.</p>
<p>Here is the result:</p>
<table class="default_table">
<tbody>
<tr>
<td>Test A</td>
<td>Test B</td>
<td>Comparison result</td>
</tr>
<tr>
<td><a href="http://qa.nuxeo.org/funkload-bench/pojo_vs_ejb/report/testReader-20111025T112408/index.html">Nuxeo 5.4.3-SNAPSHOT on JBoss</a></td>
<td><a href="http://qa.nuxeo.org/funkload-bench/pojo_vs_ejb/report/testReader-20111025T233824/index.html">Nuxeo 5.4.2 on JBoss (EJBs enabled)</a></td>
<td><a href="http://qa.nuxeo.org/funkload-bench/pojo_vs_ejb/diff_testReader-jboss543pojo_vs_jboss542ejb/">2 to 4 times faster than B</a></td>
</tr>
<tr>
<td><a href="http://qa.nuxeo.org/funkload-bench/pojo_vs_ejb/report/testReader-20111025T230642/index.html">Nuxeo 5.4.3-SNAPSHOT on Tomcat</a></td>
<td><a href="http://qa.nuxeo.org/funkload-bench/pojo_vs_ejb/report/testReader-20111025T112408/index.html">Nuxeo 5.4.3-SNAPSHOT on JBoss</a></td>
<td><a href="http://qa.nuxeo.org/funkload-bench/pojo_vs_ejb/diff_testReader-tomcat543_vs_jboss543/">1.1 to 1.5 times faster than B</a></td>
</tr>
<tr>
<td><a href="http://qa.nuxeo.org/funkload-bench/pojo_vs_ejb/report/testReader-20111025T230642/index.html">Nuxeo 5.4.3-SNAPSHOT on Tomcat</a></td>
<td><a href="http://qa.nuxeo.org/funkload-bench/pojo_vs_ejb/report/testReader-20111025T233824/index.html">Nuxeo 5.4.2 (EJBs enabled) on JBoss</a></td>
<td><a href="http://qa.nuxeo.org/funkload-bench/pojo_vs_ejb/diff_testReader-tomcat543_vs_jboss542/">1.5 to 2.5 </a></td></tr></tbody>&#8230; <a href="http://dev.blogs.nuxeo.com/2012/01/the-jboss-tortoise-and-the-tomcat-hare.html" class="read_more">Read more</a></table>]]></description>
			<content:encoded><![CDATA[<p>During the development of <a href="http://www.nuxeo.com/en/products/content-management-platform">Nuxeo Platform 5.5</a> (on the 5.4.3-SNAPSHOT branch) Nuxeo has moved the application to a fully POJO (<a href="http://en.wikipedia.org/wiki/POJO">Plain Old Java Objects</a>, if you wonder what it means) based distribution. This decision was motivated by our desire to abandon the RMI exposition primarily because RMI/EJBs introduces complexity along with poor performance, plus we prefer the REST exposition of our API.</p>
<p>Now that this modification has been completed, we were curious about what this new 5.4.3-SNAPSHOT distribution without EJB would bring us in terms of performance against our old distribution with EJBs.</p>
<p>Here is the result:</p>
<table class="default_table">
<tbody>
<tr>
<td>Test A</td>
<td>Test B</td>
<td>Comparison result</td>
</tr>
<tr>
<td><a href="http://qa.nuxeo.org/funkload-bench/pojo_vs_ejb/report/testReader-20111025T112408/index.html">Nuxeo 5.4.3-SNAPSHOT on JBoss</a></td>
<td><a href="http://qa.nuxeo.org/funkload-bench/pojo_vs_ejb/report/testReader-20111025T233824/index.html">Nuxeo 5.4.2 on JBoss (EJBs enabled)</a></td>
<td><a href="http://qa.nuxeo.org/funkload-bench/pojo_vs_ejb/diff_testReader-jboss543pojo_vs_jboss542ejb/">2 to 4 times faster than B</a></td>
</tr>
<tr>
<td><a href="http://qa.nuxeo.org/funkload-bench/pojo_vs_ejb/report/testReader-20111025T230642/index.html">Nuxeo 5.4.3-SNAPSHOT on Tomcat</a></td>
<td><a href="http://qa.nuxeo.org/funkload-bench/pojo_vs_ejb/report/testReader-20111025T112408/index.html">Nuxeo 5.4.3-SNAPSHOT on JBoss</a></td>
<td><a href="http://qa.nuxeo.org/funkload-bench/pojo_vs_ejb/diff_testReader-tomcat543_vs_jboss543/">1.1 to 1.5 times faster than B</a></td>
</tr>
<tr>
<td><a href="http://qa.nuxeo.org/funkload-bench/pojo_vs_ejb/report/testReader-20111025T230642/index.html">Nuxeo 5.4.3-SNAPSHOT on Tomcat</a></td>
<td><a href="http://qa.nuxeo.org/funkload-bench/pojo_vs_ejb/report/testReader-20111025T233824/index.html">Nuxeo 5.4.2 (EJBs enabled) on JBoss</a></td>
<td><a href="http://qa.nuxeo.org/funkload-bench/pojo_vs_ejb/diff_testReader-tomcat543_vs_jboss542/">1.5 to 2.5 times faster than B</a></td>
</tr>
</tbody>
</table>
<p>Tests have been made on identical Hardware using the same set of data.<br />
If you follow links above, you will see the full FunkLoad diff report between the 2 configurations.</p>
<p>We&#8217;ve already discussed how the Nuxeo distribution on JBoss 5 strongly decreases response time against JBoss 4, as well as pointing out the sluggish performance of the EJB containers on JBoss 5 (<a href="http://blogs.nuxeo.com/dev/2011/12/nuxeo-platform-55-just-released.html">see our release notes</a>) and we further validate this as you can see we are closer to the tomcat distribution performance on JBoss 5 without EJB (second row into the table above).</p>
<p>This is only our initial findings and we haven&#8217;t yet conducted further analysis or dug deeper to try to explain the reasons for why we are seeing these results, but, in the meantime, you can watch the jenkins job <a href="http://qa.nuxeo.org/jenkins/view/All/job/FT-nuxeo-master-funkload-bench/">here</a>.</p>
<p>In conclusion, we can say that the JBoss 5 tortoise hasn&#8217;t yet caught up with the Tomcat hare, but it&#8217;s close.</p>
]]></content:encoded>
			<wfw:commentRss>http://dev.blogs.nuxeo.com/2012/01/the-jboss-tortoise-and-the-tomcat-hare.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Nuxeo Migrating to GitHub</title>
		<link>http://dev.blogs.nuxeo.com/2011/12/nuxeo-migrating-to-github.html</link>
		<comments>http://dev.blogs.nuxeo.com/2011/12/nuxeo-migrating-to-github.html#comments</comments>
		<pubDate>Tue, 20 Dec 2011 15:05:59 +0000</pubDate>
		<dc:creator>Julien Carsique</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[Documentation]]></category>
		<category><![CDATA[ECM]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Nuxeo]]></category>
		<category><![CDATA[clone.py]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[GitHub]]></category>
		<category><![CDATA[github.com/nuxeo]]></category>
		<category><![CDATA[hg.nuxeo.org]]></category>
		<category><![CDATA[Mercurial]]></category>
		<category><![CDATA[migration]]></category>
		<category><![CDATA[nuxeo]]></category>
		<category><![CDATA[source]]></category>

		<guid isPermaLink="false">http://dev.blogs.nuxeo.com/2011/12/nuxeo-migrating-to-github.html</guid>
		<description><![CDATA[Nuxeo source code migration from Mercurial to GitHub
]]></description>
			<content:encoded><![CDATA[<p><a href="http://dev.blogs.nuxeo.com/wp-content/uploads/dev/images/6a010536291c30970b01543888c8de970c-pi.png"><img class="asset  asset-image at-xid-6a010536291c30970b01543888c8de970c" style="margin: 0px 0px 5px 5px;" src="http://dev.blogs.nuxeo.com/wp-content/uploads/dev/images/6a010536291c30970b01543888c8de970c-800wi.png" alt="200px-GitHub" border="0" /></a>The source code of the <a href="http://www.nuxeo.com/en/products/content-management-platform" target="_blank">Nuxeo Content</a><a href="http://www.nuxeo.com/en/products/content-management-platform" target="_blank">Management Platform</a> has been moved from the <a title="internally hosted Mercurial repositories" href="https://hg.nuxeo.org/" target="_self">internally hosted Mercurial repositories</a> to <a title="external GitHub repositories" href="https://github.com/nuxeo/" target="_self">external GitHub repositories</a>.</p>
<h2>How to retrieve source code?</h2>
<p>Here is how to retrieve Nuxeo source code in read-only mode. However, maybe you don&#8217;t need to do it: see below &#8220;How to contribute&#8221;.</p>
<p>Requirements: Python 2.7.x and Git 1.7.x</p>
<p><span>  git clone git://github.com/nuxeo/nuxeo.git</span><br />
<span>  cd nuxeo</span><br />
<span>  git checkout master</span><br />
<span>  python clone.py</span></p>
<p>Run &#8216;<strong>python clone.py -h</strong>&#8216; for more details.</p>
<h2>Why Git and GitHub?</h2>
<p>Before that move, Nuxeo folks were sometimes already using Git because they are involved in external projects using Git. Based on their feedback, it appeared that Git was technically as good as Mercurial, and that hosting services such as GitHub were greatly improving the code management and encouraging contributions.</p>
<p>GitHub provides good tooling around Git features and great visibility in the developer ecosystem.</p>
<p>We look at GitHub to help external people contribute to Nuxeo, but also to help improve our own internal code review process. For instance, we are using the pull-request system inside Nuxeo, between developers, when we want to highlight a code review request on some specific piece of code, besides the continuous code review we are used to, which is based on an automatic email per commit.</p>
<p>Finally, as we were using Git for the more recent Nuxeo addons, and still mostly Mercurial for the rest of the platform, it was becoming painful to maintain both sources. So, using only Git for the whole platform will also simplify the build, maintenance of the scripts, and the developers&#8217; lives.</p>
<h2>How to use Git?</h2>
<p>Nuxeo developers will share their experience, document main commands and provide useful tips about Git <a title="Git usage and tips" href="http://doc.nuxeo.com/x/BgBi" target="_self">right here</a>.</p>
<h3>Nuxeo policy on Git branches</h3>
<ul>
<li>development branch is &#8220;master&#8221;</li>
<li>maintenance branches are &#8220;5.5.0&#8243;, &#8220;5.4.2&#8243;, &#8220;5.4.1&#8243;</li>
<li>stable branch, if used, will point at the latest stable release (currently release-5.5).</li>
</ul>
<h3>What about contributions?</h3>
<p>Using GitHub will greatly improve the contribution process. <a href="http://doc.nuxeo.com/x/VIZH">http://doc.nuxeo.com/x/VIZH</a> will be updated according to the new capabilities. Briefly, a contributor will have to:</p>
<ul>
<li>log in to GitHub with his own account</li>
<li>sign the Nuxeo contributor agreement</li>
<li>fork the Nuxeo module he wants to contribute to</li>
<li>do some changes in the forked repository</li>
<li><a title="Nuxeo Jira issue management" href="https://jira.nuxeo.com/browse/NXP" target="_self">file a Jira issue</a> and reference it in his commits</li>
<li>send a pull request to Nuxeo</li>
</ul>
<p>And that&#8217;s all. The Nuxeo development team will manage the contribution, optionally comment the diff, ask for changes, and finally merge it into Nuxeo.</p>
<h2>No more Mercurial?</h2>
<p>For now, there are still some Nuxeo projects under Mercurial. This move involves &#8220;only&#8221; the Nuxeo Platform source code (<a href="https://hg.nuxeo.org/nuxeo/">https://hg.nuxeo.org/nuxeo/</a> and its sub-repositories, including most addons).</p>
<p>Of course, hosting our source repositories has a lot of advantages and a few drawbacks. When migrating to GitHub, we had to migrate the Mercurial hooks we were using and solve other such technical constraints, but at the end, we succeeded in transposing all features and the interoperability we need.</p>
<p>Mercurial is a great tool and we&#8217;ll likely continue to use it when it makes sense, but we want to avoid having users switch from one tool to another.</p>
<p>The deprecated repositories are still accessible. A DEPRECATED.txt file has been added inside the main branches.</p>
]]></content:encoded>
			<wfw:commentRss>http://dev.blogs.nuxeo.com/2011/12/nuxeo-migrating-to-github.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Content Routing: An alternative to jBPM</title>
		<link>http://dev.blogs.nuxeo.com/2011/12/content-routing-an-alternative-to-jbpm.html</link>
		<comments>http://dev.blogs.nuxeo.com/2011/12/content-routing-an-alternative-to-jbpm.html#comments</comments>
		<pubDate>Fri, 16 Dec 2011 18:55:55 +0000</pubDate>
		<dc:creator>Laurent Doguin</dc:creator>
				<category><![CDATA[ECM]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Release notes]]></category>
		<category><![CDATA[bpm]]></category>
		<category><![CDATA[bpmn]]></category>
		<category><![CDATA[content routing]]></category>
		<category><![CDATA[ecm]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jbpm]]></category>
		<category><![CDATA[nuxeo]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[task]]></category>

		<guid isPermaLink="false">http://dev.blogs.nuxeo.com/2011/12/content-routing-an-alternative-to-jbpm.html</guid>
		<description><![CDATA[<p>We just released <a href="http://www.nuxeo.com/en/products/nuxeo-platform-5.5">Nuxeo Platform 5.5</a>. This includes some internal changes in the way we handle tasks. jBPM is still the main workflow engine for the Platform, but we&#8217;re preparing to make changes in that respect.</p>
<h1>Becoming Independent from jBPM</h1>
<p>I&#8217;m saying &#8220;becoming&#8221; independent because of course we are not stopping jBPM support. It just won&#8217;t be the default task/workflows provider in future versions of DM. </p>
<p>So now that the first question is answered, let&#8217;s move to the second one, which is why? </p>
<p>The main reason is that even if jBPM is very powerful, it does not provide an easy way to make adaptive workflows.</p>
<p>Unfortunately, in the real world, when it comes to projects you need a lot of flexibility.<br />
You can define a global process, but users and the administrator need to be be able to change the workflow.</p>
<p>So even if the jBPM toolbox is great, &#8230; <a href="http://dev.blogs.nuxeo.com/2011/12/content-routing-an-alternative-to-jbpm.html" class="read_more">Read more</a></p>]]></description>
			<content:encoded><![CDATA[<p>We just released <a href="http://www.nuxeo.com/en/products/nuxeo-platform-5.5">Nuxeo Platform 5.5</a>. This includes some internal changes in the way we handle tasks. jBPM is still the main workflow engine for the Platform, but we&#8217;re preparing to make changes in that respect.</p>
<h1>Becoming Independent from jBPM</h1>
<p>I&#8217;m saying &#8220;becoming&#8221; independent because of course we are not stopping jBPM support. It just won&#8217;t be the default task/workflows provider in future versions of DM. </p>
<p>So now that the first question is answered, let&#8217;s move to the second one, which is why? </p>
<p>The main reason is that even if jBPM is very powerful, it does not provide an easy way to make adaptive workflows.</p>
<p>Unfortunately, in the real world, when it comes to projects you need a lot of flexibility.<br />
You can define a global process, but users and the administrator need to be be able to change the workflow.</p>
<p>So even if the jBPM toolbox is great, it mainly targets Java Developers and it&#8217;s clearly not suited for end users and even administrators.<br />
That&#8217;s the reason why we want to make Content Routing the default workflow engine of the Nuxeo Platform in our upcoming releases.</p>
<p>In order to prepare for this migration, we want the Nuxeo services to be as independent as possible from jBPM, so that the switch to Content Routing will be painless.<br />
So here comes the new task Service.</p>
<h1>The Task Service</h1>
<p>With the 5.5 release we introduced a way to manage Tasks outside of any jBPM process. We&#8217;ve added a document based task service focused on simplicity and flexibility. Simplicity because you don&#8217;t have to know many different concepts. If you are a Nuxeo developer or studio user, you are familiar with documents and content automation. This is all you need to know to create a task.<br />
To be fair this capability has existed since 5.3.2 with the <a href="http://explorer.nuxeo.org/nuxeo/site/distribution/Nuxeo%20DM-5.4.2/viewOperation/Workflow.CreateTask">Workflow.CreateTask</a> operation. But this was relying on the jBPM taskinstance api and now it&#8217;s relying on the document task. It means that tasks are now stored in VCS.</p>
<p>Migration should be 100% transparent:</p>
<ul>
<li>the Task Operations have not changed</li>
<li>REST APIs are maintained</li>
<li>Tasks created in jBPM and not directly associated to a process will be automatically migrated upon first access</li>
<li>jBPM Tasks are still accessible via the new TaskService</li>
</ul>
<h1>What&#8217;s next</h1>
<p>The only part of Nuxeo Platform 5.5 still using jBPM is the Workflow. It&#8217;s a first step toward the integration of Content Routing as the default Workflow engine in Nuxeo, and we will surely let you know about the progress of this project. At this point we will gain true flexibility. As workflows will be based on content routing and content automation, you will be able to redefine or modify them easily at runtime. This has already been put in practice with Nuxeo&#8217;s Case Management Framework. So if you&#8217;re curious, give it a try and test it out now.  </p>
]]></content:encoded>
			<wfw:commentRss>http://dev.blogs.nuxeo.com/2011/12/content-routing-an-alternative-to-jbpm.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nuxeo Platform 5.5 just released</title>
		<link>http://dev.blogs.nuxeo.com/2011/12/nuxeo-platform-55-just-released.html</link>
		<comments>http://dev.blogs.nuxeo.com/2011/12/nuxeo-platform-55-just-released.html#comments</comments>
		<pubDate>Tue, 13 Dec 2011 16:48:12 +0000</pubDate>
		<dc:creator>Thierry Delprat</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://dev.blogs.nuxeo.com/2011/12/nuxeo-platform-55-just-released.html</guid>
		<description><![CDATA[<p></p>
<h1>Packaging improvement</h1>
<p></p>
<h2>Distributions are Marketplace Packages</h2>
<p>The DM, DAM, SC, and CMF distributions are now available as Marketplace packages.</p>
<p>This new packaging system is used in the SetupWizard to allow to choose between different profile at installation time.<br />
You can also use the Admin Center or the nuxeoctl to add or remove these packages.</p>
<p>For projects having a custom distribution based on one of ours, no problem, we provide presets for automatically transform the new unique Tomcat distribution into a DM, DAM or CMF.<br />
Also, the &#8220;EAR&#8221; (zip) assemblies do still exist.</p>
<p>Using the wizard is just an additional option.</p>
<h2>Coordinated Release</h2>
<p>All distributions of the platform will now be released at the same time : CAP / DM / DAM / CMF / SC.</p>
<p>This is a little bit more work on our side, but this will allow to have consistent HotFixes management for all flavors of the Platform.&#8230; <a href="http://dev.blogs.nuxeo.com/2011/12/nuxeo-platform-55-just-released.html" class="read_more">Read more</a></p>]]></description>
			<content:encoded><![CDATA[<p></p>
<h1>Packaging improvement</h1>
<p></p>
<h2>Distributions are Marketplace Packages</h2>
<p>The DM, DAM, SC, and CMF distributions are now available as Marketplace packages.</p>
<p>This new packaging system is used in the SetupWizard to allow to choose between different profile at installation time.<br />
You can also use the Admin Center or the nuxeoctl to add or remove these packages.</p>
<p>For projects having a custom distribution based on one of ours, no problem, we provide presets for automatically transform the new unique Tomcat distribution into a DM, DAM or CMF.<br />
Also, the &#8220;EAR&#8221; (zip) assemblies do still exist.</p>
<p>Using the wizard is just an additional option.</p>
<h2>Coordinated Release</h2>
<p>All distributions of the platform will now be released at the same time : CAP / DM / DAM / CMF / SC.</p>
<p>This is a little bit more work on our side, but this will allow to have consistent HotFixes management for all flavors of the Platform.</p>
<p></p>
<h2>Plain-old WAR deployment through static archive</h2>
<p>The support for static EAR has been extended to static WAR generation.<br />
This means you can more easily run Nuxeo on a bare Java container, like a vanilla Tomcat!</p>
<p>The recipe is simple :</p>
<ul>
<li>
<p>configure your Nuxeo as desired (deploying additional bundles or Marketplace packages)</p>
</li>
<li>
<p>run &#8220;nuxeoctl pack &#8220;</p>
</li>
</ul>
<p>The pack command will produce a static EAR if you run JBoss and a static WAR if you run Tomcat.</p>
<h1>Infrastructure changes</h1>
<p></p>
<h2>EJB3 phased out!</h2>
<p>Nuxeo EAR packaging no longer comes with EJB3 support.<br />
The support has been dropped due to very bad performances of EJB3 layer in JBoss 5.</p>
<p>If you used to communicate with Nuxeo services via RMI you can either switch to Automation API or use nuxeo-web-embedded distribution to deploy Nuxeo services directly inside your application.</p>
<p></p>
<h2>Native Relation Store</h2>
<p>The Relation Service can now be configured to use VCS (our native content persistence engine) as a backend instead of Jena/RDF.<br />
This improves performances of the relation service and also allow queries to include properties on relations.</p>
<p>It&#8217;s now the default configuration for Comments, Forums and Document relations. </p>
<p>This new default configuration takes care about compatibility so that if you have existing relations in Jena graph you will still be able to transparently access them.</p>
<p></p>
<h2>New Task system</h2>
<p>Until 5.5, the Task system was directly bound to JBPM.</p>
<p>Starting with 5.5, a new TaskService is available and use VCS to store task.</p>
<p>This new TaskService is a first step toward the integration of Content Routing as the default Workflow engine in DM (will be available as a dedicated package in Q1 2012).</p>
<p>Migration should be 100% transparent :</p>
<ul>
<li>
<p>the Task Operations have not changed</p>
</li>
<li>
<p>REST APIs are maintained</p>
</li>
<li>
<p>Tasks created in jBPM and not directly associated to a process will be automatically migrated upon first access</p>
</li>
<li>
<p>jBPM Tasks are still accessible via the new TaskService</p>
</li>
<li>
<p>the jBPM task API is maintained</p>
</li>
</ul>
<p></p>
<h2>Theme Engine Improvement: Bring It on CSS!</h2>
<p>Nuxeo Themes has been extended so that you can now contribute style of the pages with a plain CSS stylesheet.</p>
<p>The pages templates and layout are still managed by the Theme Engine, but all CSS information is now externalized to a plain a CSS that can manage flavors (pretty much as with LessCSS).</p>
<p>This makes styling of Nuxeo easier, both for a WebDesigner and a Nuxeo Studio user.</p>
<p></p>
<h2>Content Persistence Engine Improvements (VCS)</h2>
<h3>Need for Speed?</h3>
<p>Several performance improvements have been done in the persistence engine:</p>
<ul>
<li>
<p>caching for proxies and versions</p>
</li>
<li>
<p>prefetch for complex properties</p>
</li>
<li>
<p>reduce network round-trips (insert/update/delete)</p>
</li>
</ul>
<h3>Queries on Complex Types</h3>
<p>Queries on complex types are now supported in NXQL (see <a href="http://jira.nuxeo.org/browse/NXP-4464">NXP-4464</a>).</p>
<p>Improvements of the full text search and phrase matching have also been done (see <a href="http://jira.nuxeo.org/browse/NXP-6720">NXP-6720</a> and <a href="http://jira.nuxeo.org/browse/NXP-8070">NXP-8070</a>).</p>
<h3>Better Oracle Support</h3>
<p>Some compatibility and performance improvements have been done for Oracle DB.</p>
<p></p>
<h2>Forms Engine: more Layouts and Widgets Features</h2>
<h3>Misc improvements</h3>
<p>A lots of small improvements have been done in this area, especially to improve Ajax support and provide more configuration options from within Nuxeo Studio.</p>
<h3>Extended JSON export API</h3>
<p>Layout/Widgets JSON export API has been extended and is now used by Android SDK to generate Forms on the mobile device.</p>
<p></p>
<h2>OpenJDK</h2>
<p>We have finally done the work needed to provide full support of OpenJDK 6.</p>
<p>We also started to test the plateform with OpenJDK 7.</p>
<p>Build, unit tests and non-regression tests are running fine, so we will very soon provide official support.</p>
<p>For now you can still consider running Nuxeo Platform on OpenJDK 7 as experimental.</p>
<p></p>
<h2>Third party libraries upgrades</h2>
<h3>GWT</h3>
<p>Nuxeo is now using GWT 2.4.0.</p>
<h3>JAX-WS</h3>
<p>JAX-WS libs have been upgraded to 2.2.5 in order to fix some compatibilities issues.</p>
<h3>OpenCMIS</h3>
<p>Nuxeo Platform is now aligned on OpenCMIS 0.6 that comes with experimental support for the CMIS Browser binding (JS compliant API).</p>
<p></p>
<h1>Features</h1>
<p></p>
<h2>User Experience</h2>
<p>5.5 comes with a new look &amp; feel and we have improved a lot of small details that should improve the overall usability of the platform.</p>
<p>Plus, it makes all customization &amp; apps based on the Platform look nice by default! We hope you&#8217;ll enjoy it! (and if you don&#8217;t, you can customize the look easily!)</p>
<p></p>
<h2>Rich Media as First Class Citizen</h2>
<p>Based on our experience with Nuxeo DAM, Rich media support has been improved and merged into the main platform, as a system facet, so that all media features (conversions, players ) are available for any document type.</p>
<p>This also comes with a deep integration between DAM and DM that can now be installed side by side in the same webapp, the DAM UI becoming an Asset Browser.</p>
<p></p>
<h2>QuickSearch</h2>
<p>The QuickSearch bow has been improved to support smart automatic suggestion of search filters based on user inputs.</p>
<p>Depending on user&#8217;s input it will for example propose to search for Users, Groups, Documents containing text or Document having a given meta-data.</p>
<p>QuickSearch can also be used as a shortcut to Faceted Search.</p>
<p>You can see it in action in this <a href="http://www.nuxeo.com/en/resource-center/Videos/Short-Demos/Nuxeo-Semantic-Demo-2-Quicksearch-Oct.-2011">video</a> and then try for yourself in the 5.5.</p>
<h2>Unleash the Social Enterprise: more Social features for the Nuxeo Platform</h2>
<p>New social features are available in DM:</p>
<ul>
<li>
<p>rich profiles</p>
<p>Now Nuxeo offers a rich profile for each user.<br />
Social Collaboration contributes to this profile to add social metadata. User can choose to make his profile public, or to keep it private.</p>
</li>
<li>
<p>activity stream</p>
<p>This new features gives an activity snapshot from your connections &#8211; those who are working on documents and content in the workspaces that you are allowed to follow. This gives a fast and simple, but secure way to easily access content and documents in the workspace, as well as a quick link to the user profiles of those involved in managing the content you follow.</p>
</li>
<li>
<p>relationship between people</p>
<p>Any user can now search for other users on the Platform and make a connection, by adding them to one of their relation circles. Once a user is connected to another he sees his activity stream (mini messages, document cretion and modification, etc.), his profile, his relations etc.</p>
</li>
<li>
<p>Social Workspaces</p>
<p>These new spaces feature private and public dashboards for end users, gadget management, and content and document libraries. They provide a quick and simple way to publish and access information while collaborating with others.</p>
</li>
<li>
<p>mini messages</p>
<p>Users can post and read short messages, from the people working with them in a social workspace, or from their relations</p>
</li>
<li>
<p>new OpenSocial gadgets</p>
<p>Fully OpenSocial gadgets for Mini messages and Activity streams, they can be used outside Nuxeo (in iGoogle for instance).<br />
Gadgets related to Social Workspaces: listing of (public) Social Workspaces, Activity stream and mini messages of Social Workspace, listing of Articles and News.</p>
</li>
</ul>
<p></p>
<h2>Case Management</h2>
<p>This new release of the platform comes with a new version of CMF that can be installed as a Marketplace package.<br />
Compared to the latest publicly released CMF version (1.8), it comes with a lot of improvements :</p>
<ul>
<li>
<p>Support for folderish caseItems</p>
</li>
<li>
<p>Abbility to send any document type inside the case</p>
</li>
<li>
<p>Content Routing improvements : new step type available : decisional folder</p>
</li>
<li>
<p>Better user experience</p>
</li>
</ul>
<p>NB : For now, it is not possible to install CMF with other packages like DM and DAM because there are some content model incompatibilities. We hope to have a functional solution to this problem in 5.6.</p>
<h2>Update Center Improvements</h2>
<p>Update Center has been improved to easier manage of Marketplace packages and Hot Fixes:</p>
<ul>
<li>
<p>install a package and all it&#8217;s dependency in one click<br />
( useful especially if you need to install HotFix 12 for example)</p>
</li>
<li>
<p>extended dependency management (including possible automatic uninstall of incompatible packages)</p>
</li>
<li>
<p>small usability improvements</p>
</li>
</ul>
<p>Installation and Uninstallation of packages that are not fully hot-reload compliant are now delayed until restart. This should solve most issues encountered when running on MS Windows based hosts.</p>
<p>You can also use NuxeoCtl to list/add/install/uninstall/remove packages without using the Web UI.</p>
<p></p>
<h1>Upgrading from 5.4.2</h1>
<p>We have been careful about Data and and API compatibility, so migrating from 5.4.2 should be easy.</p>
<p>For more details, please refer to the public <a href="http://doc.nuxeo.com/x/s4SN">Documentation</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://dev.blogs.nuxeo.com/2011/12/nuxeo-platform-55-just-released.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>EclipseCon Europe 2011 &#8211; 10 Years of Eclipse</title>
		<link>http://dev.blogs.nuxeo.com/2011/11/eclipseconeurope-2011.html</link>
		<comments>http://dev.blogs.nuxeo.com/2011/11/eclipseconeurope-2011.html#comments</comments>
		<pubDate>Tue, 08 Nov 2011 19:53:07 +0000</pubDate>
		<dc:creator>Laurent Doguin</dc:creator>
				<category><![CDATA[Apricot]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[ECM]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Nuxeo IDE]]></category>
		<category><![CDATA[apricot]]></category>
		<category><![CDATA[ece2011]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[ecm]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://dev.blogs.nuxeo.com/2011/11/eclipseconeurope-2011.html</guid>
		<description><![CDATA[<p>Last week I was at EclipseCon Europe in Germany. It was the occasion to talk about <a href="http://www.eclipse.org/projects/project.php?id=rt.apricot">Apricot</a>, show our IDE plugin to attendees and meet the Eclipse community. I did some Nuxeo demos as well. Wonderful organization considering the fact that they had many, many different talks during those 3 days. I must say it went really smoothly. Something I also realized was I had completely forgotten how to speak German&#8230;.</p>
<h2>Hot topics at ECE</h2>
<p><a href="http://dev.blogs.nuxeo.com/wp-content/uploads/dev/images/6a010536291c30970b015392df12bc970b-800wi.png"><img class="asset  asset-image at-xid-6a010536291c30970b015392df12bc970b" alt="Eclipseconlogo" src="http://dev.blogs.nuxeo.com/wp-content/uploads/dev/images/6a010536291c30970b015392df12bc970b-800wi.png" border="0" style="margin: 0px 0px 5px 5px" /></a><br />
The first day I participated in an Eclipse marketing meeting, where Ian Skerrett showed us how attendees are using Eclipse. Not surprisingly, most of the people are here for either the IDE features, RCP or model generation with EMF. Server side applications aren&#8217;t so appealing but they are definitely getting more and more attention. And it really showed in the program. There weren&#8217;t many server-oriented talks, but they were all well attended. I think &#8230; <a href="http://dev.blogs.nuxeo.com/2011/11/eclipseconeurope-2011.html" class="read_more">Read more</a></p>]]></description>
			<content:encoded><![CDATA[<p>Last week I was at EclipseCon Europe in Germany. It was the occasion to talk about <a href="http://www.eclipse.org/projects/project.php?id=rt.apricot">Apricot</a>, show our IDE plugin to attendees and meet the Eclipse community. I did some Nuxeo demos as well. Wonderful organization considering the fact that they had many, many different talks during those 3 days. I must say it went really smoothly. Something I also realized was I had completely forgotten how to speak German&#8230;.</p>
<h2>Hot topics at ECE</h2>
<p><a href="http://dev.blogs.nuxeo.com/wp-content/uploads/dev/images/6a010536291c30970b015392df12bc970b-800wi.png"><img class="asset  asset-image at-xid-6a010536291c30970b015392df12bc970b" alt="Eclipseconlogo" src="http://dev.blogs.nuxeo.com/wp-content/uploads/dev/images/6a010536291c30970b015392df12bc970b-800wi.png" border="0" style="margin: 0px 0px 5px 5px" /></a><br />
The first day I participated in an Eclipse marketing meeting, where Ian Skerrett showed us how attendees are using Eclipse. Not surprisingly, most of the people are here for either the IDE features, RCP or model generation with EMF. Server side applications aren&#8217;t so appealing but they are definitely getting more and more attention. And it really showed in the program. There weren&#8217;t many server-oriented talks, but they were all well attended. I think my favorite one was about <a href="http://www.eclipse.org/gyrex/">Gyrex</a>. It basically helps you run clusters of Equinox servers with the help of several tools, like p2 for provisioning and deployment, a private cloud feature with ZooKeeper, Jetty for the web layer, etc&#8230; I&#8217;d really like to see Apricot in one of the repositories available with GyreX.</p>
<h2>Apricot feedback</h2>
<p><a href="http://dev.blogs.nuxeo.com/wp-content/uploads/dev/images/6a010536291c30970b015436b26759970c-800wi.png"><img class="asset  asset-image at-xid-6a010536291c30970b015436b26759970c" alt="Apricot" src="http://dev.blogs.nuxeo.com/wp-content/uploads/dev/images/6a010536291c30970b015436b26759970c-120wi" style="margin: 0px 0px 5px 5px" /></a><br />
So, speaking of <a href="http://www.eclipse.org/projects/project.php?id=rt.apricot">Apricot</a>, for those of you who aren&#8217;t familiar with this name, Apricot is a content repository accessible through APIs. It will serve as a solid and efficient base for developing content applications. By &#8220;content applications,&#8221; we mean any application with a primary function of managing structured or semi-structured content in any way. This could be a Document Management application, a Digital Asset Management application, a Case or Records Management application, a Web Content Management application, or simply business-specific applications.<br />
It&#8217;s part of the<a href="http://www.eclipse.org/projects/project.php?id=rt"> RT project</a>, and we are still in the process of contributing the third party libraries.<br />
If you are interested in this project, you will soon be able to view my screencast / tutorial showing how to build and develop content-centric apps with Apricot.</p>
<h2>Eclipse ecosystem</h2>
<p>One thing for sure is that giving business talks at ECE is definitely more challenging than giving really technical talks. The main reason for this is that the attendees want to know more about Eclipse as a technical platform. Most of them are developers, like the guys from Obeo. They work on MDA, for transforming models into code. We talked a bit about Nuxeo and code generation, and one of them even made me a small prototype (thanks <a href="http://eef-modeling.blogspot.com/">Goulwen</a>) . So who knows? Maybe we&#8217;ll see model-based generation of Nuxeo code. <img src='http://dev.blogs.nuxeo.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Anyway, I had a blast at EclipseCon. I met some really cool people and I&#8217;m really looking forward to going back there with more Apricot, and maybe a case study. <img src='http://dev.blogs.nuxeo.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://dev.blogs.nuxeo.com/2011/11/eclipseconeurope-2011.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nuxeo IDE 1.2 released!</title>
		<link>http://dev.blogs.nuxeo.com/2011/11/nuxeo-ide-12-released.html</link>
		<comments>http://dev.blogs.nuxeo.com/2011/11/nuxeo-ide-12-released.html#comments</comments>
		<pubDate>Thu, 03 Nov 2011 15:04:04 +0000</pubDate>
		<dc:creator>Laurent Doguin</dc:creator>
				<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Nuxeo]]></category>
		<category><![CDATA[Nuxeo IDE]]></category>

		<guid isPermaLink="false">http://dev.blogs.nuxeo.com/2011/11/nuxeo-ide-12-released.html</guid>
		<description><![CDATA[<p>Hi devs,</p>
<p>Last week we released version 1.2 of our Eclipse plugin, Nuxeo IDE. It&#039;s as usual avail<a href="http://dev.blogs.nuxeo.com/wp-content/uploads/dev/images/6a010536291c30970b0154368958e2970c-pi.png"><img alt="Logo-nuxeo-IDE_big_transp_" class="asset  asset-image at-xid-6a010536291c30970b0154368958e2970c" src="http://dev.blogs.nuxeo.com/wp-content/uploads/dev/images/6a010536291c30970b0154368958e2970c-120wi" style="margin: 0px 0px 5px 5px" /></a>able through the <a href="http://marketplace.eclipse.org/content/nuxeo-ide/" target="_self" title="Eclipse marketplace">marketplace</a> or directly from the <a href="http://community.nuxeo.com/static/nuxeo-ide/stable/" target="_self" title="update site">updatesite</a>. First timers, you&#039;ll find everything you need to get started on our <a href="http://doc.nuxeo.com/x/ZYKE" target="_self" title="IDE Starting guide">wiki</a>.</p>
<p>So, what&#039;s new you ask? Well let&#039;s start with the coolest feature:</p>
<h1>Seam Hot Reload</h1>
<p>We&#039;ve been waiting long enough and now hot reload is starting to show up in Nuxeo products. You can&#039;t reload the whole platform yet, but we made significant progress by adding Seam and WebEngine HotReload.</p>
<p>Better than words, here&#039;s the video showing how you can hot reload Seam code into Nuxeo apps.</p>
<p><iframe width="320" height="240" src="http://www.youtube.com/embed/vnQ4sZ4f3tY" frameborder="0" type="text/html"></iframe><br />
&#160;</p>
<p>As you can see in the screencast, we also added Seam wizards to help you understand how Nuxeo is using Seam. You have three different types of Seam bean, all heavily commented, explaining how to show content in a tab, &#8230; <a href="http://dev.blogs.nuxeo.com/2011/11/nuxeo-ide-12-released.html" class="read_more">Read more</a></p>]]></description>
			<content:encoded><![CDATA[<p>Hi devs,</p>
<p>Last week we released version 1.2 of our Eclipse plugin, Nuxeo IDE. It&#039;s as usual avail<a href="http://dev.blogs.nuxeo.com/wp-content/uploads/dev/images/6a010536291c30970b0154368958e2970c-pi.png"><img alt="Logo-nuxeo-IDE_big_transp_" class="asset  asset-image at-xid-6a010536291c30970b0154368958e2970c" src="http://dev.blogs.nuxeo.com/wp-content/uploads/dev/images/6a010536291c30970b0154368958e2970c-120wi" style="margin: 0px 0px 5px 5px" /></a>able through the <a href="http://marketplace.eclipse.org/content/nuxeo-ide/" target="_self" title="Eclipse marketplace">marketplace</a> or directly from the <a href="http://community.nuxeo.com/static/nuxeo-ide/stable/" target="_self" title="update site">updatesite</a>. First timers, you&#039;ll find everything you need to get started on our <a href="http://doc.nuxeo.com/x/ZYKE" target="_self" title="IDE Starting guide">wiki</a>.</p>
<p>So, what&#039;s new you ask? Well let&#039;s start with the coolest feature:</p>
<h1>Seam Hot Reload</h1>
<p>We&#039;ve been waiting long enough and now hot reload is starting to show up in Nuxeo products. You can&#039;t reload the whole platform yet, but we made significant progress by adding Seam and WebEngine HotReload.</p>
<p>Better than words, here&#039;s the video showing how you can hot reload Seam code into Nuxeo apps.</p>
<p><iframe width="320" height="240" src="http://www.youtube.com/embed/vnQ4sZ4f3tY" frameborder="0" type="text/html"></iframe><br />
&#160;</p>
<p>As you can see in the screencast, we also added Seam wizards to help you understand how Nuxeo is using Seam. You have three different types of Seam bean, all heavily commented, explaining how to show content in a tab, execute code when clicking on a button or even how to wrap a service in a Seam component. And if you want to take this further by let&#039;s say, exploring the sources, there&#039;s a new way to do that as well&#8230;</p>
<h1>SDK Introspection</h1>
<p>One of the beauties of working with open source software is that you get to see all the sources, you get a complete view of how it&#039;s made, which makes the learning process much easier. That&#039;s why we added a new tab in the Nuxeo perspective called Nuxeo Components. It lets you browse all the services, extension points or components defined in the SDK. Here&#039;s a couple of screenshots from a component view:</p>
<p><a href="http://dev.blogs.nuxeo.com/wp-content/uploads/dev/images/6a010536291c30970b0162fc0b3eda970d-800wi.png"><img alt="IDEXPbrowser" class="asset  asset-image at-xid-6a010536291c30970b0162fc0b3eda970d" src="http://dev.blogs.nuxeo.com/wp-content/uploads/dev/images/6a010536291c30970b0162fc0b3eda970d-320wi" /></a><a href="http://dev.blogs.nuxeo.com/wp-content/uploads/dev/images/6a010536291c30970b0162fc0b3eda970d-800wi.png"><img alt="IDEXPbrowser" class="asset  asset-image at-xid-6a010536291c30970b0162fc0b3eda970d" src="http://dev.blogs.nuxeo.com/wp-content/uploads/dev/images/6a010536291c30970b0162fc0b3eda970d-320wi" /></a></p>
<p>You first have the bundle information, then a link to the implementation, the documentation, the services provided, and the list of extension points along with their contributions. Additionally, you have a link to the source of every java file referenced in those components.</p>
<p>And if Nuxeo sources are not enough, we&#039;ve added the possibility to download sources of the third-party libraries we use. Right click on a jar, select properties and hit the download button. <img src='http://dev.blogs.nuxeo.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>That&#039;s all for today, but you can expect more NxIDE screencasts and tutorials in the coming weeks.<br />Happy Hacking <img src='http://dev.blogs.nuxeo.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://dev.blogs.nuxeo.com/2011/11/nuxeo-ide-12-released.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Strengthening the Nuxeo Community</title>
		<link>http://dev.blogs.nuxeo.com/2011/10/strengthening-the-nuxeo-community.html</link>
		<comments>http://dev.blogs.nuxeo.com/2011/10/strengthening-the-nuxeo-community.html#comments</comments>
		<pubDate>Fri, 28 Oct 2011 15:55:32 +0000</pubDate>
		<dc:creator>nuxeo</dc:creator>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Nuxeo]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[content management]]></category>
		<category><![CDATA[dev sprint]]></category>
		<category><![CDATA[developers]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[nuxeo world]]></category>

		<guid isPermaLink="false">http://dev.blogs.nuxeo.com/2011/10/strengthening-the-nuxeo-community.html</guid>
		<description><![CDATA[<p>Hi content geeks,</p>
<p>Last week was our second edition of <a href="http://www.nuxeoworld.com" target="_self" title="Nuxeo World">Nuxeo World</a>. Lots of very cool things to talk about&#8230;met some really interesting members of our community and in the process were able to exchange thoughts about ECM and Nuxeo. Two very inspiring days, along with a wonderful evening in which I had my photo projected on a 3x4m wall&#8230; thanks <a href="http://twitter.com/rolandbenedetti" target="_self" title="Roland">Roland</a> <img src='http://dev.blogs.nuxeo.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . All of this of course happened for a reason, as I&#039;m now filling the community guy shoes for Nuxeo. <img src='http://dev.blogs.nuxeo.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2>Community@Nuxeo</h2>
<h2><a href="http://dev.blogs.nuxeo.com/wp-content/uploads/dev/images/6a010536291c30970b0162fbfab645970d-pi.png"><img alt="Sprint attendees" class="asset  asset-image at-xid-6a010536291c30970b0162fbfab645970d" src="http://dev.blogs.nuxeo.com/wp-content/uploads/dev/images/6a010536291c30970b0162fbfab645970d-320wi" style="margin: 0px 0px 5px 5px" /></a></h2>
<p>So we finally gave in to the trend <img src='http://dev.blogs.nuxeo.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  . We have a community liaison here at Nuxeo, and that would be me, <a href="mailto:ldoguin@nuxeo.com" target="_self">Laurent Doguin</a>. I&#039;m thrilled because there are lots of amazing things to do, many topics to discuss and from what I saw during the 2 days at Nuxeo World, great people who are building our community. First things first, this blog (thanks M &#8230; <a href="http://dev.blogs.nuxeo.com/2011/10/strengthening-the-nuxeo-community.html" class="read_more">Read more</a></p>]]></description>
			<content:encoded><![CDATA[<p>Hi content geeks,</p>
<p>Last week was our second edition of <a href="http://www.nuxeoworld.com" target="_self" title="Nuxeo World">Nuxeo World</a>. Lots of very cool things to talk about&#8230;met some really interesting members of our community and in the process were able to exchange thoughts about ECM and Nuxeo. Two very inspiring days, along with a wonderful evening in which I had my photo projected on a 3x4m wall&#8230; thanks <a href="http://twitter.com/rolandbenedetti" target="_self" title="Roland">Roland</a> <img src='http://dev.blogs.nuxeo.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . All of this of course happened for a reason, as I&#039;m now filling the community guy shoes for Nuxeo. <img src='http://dev.blogs.nuxeo.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2>Community@Nuxeo</h2>
<h2><a href="http://dev.blogs.nuxeo.com/wp-content/uploads/dev/images/6a010536291c30970b0162fbfab645970d-pi.png"><img alt="Sprint attendees" class="asset  asset-image at-xid-6a010536291c30970b0162fbfab645970d" src="http://dev.blogs.nuxeo.com/wp-content/uploads/dev/images/6a010536291c30970b0162fbfab645970d-320wi" style="margin: 0px 0px 5px 5px" /></a></h2>
<p>So we finally gave in to the trend <img src='http://dev.blogs.nuxeo.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  . We have a community liaison here at Nuxeo, and that would be me, <a href="mailto:ldoguin@nuxeo.com" target="_self">Laurent Doguin</a>. I&#039;m thrilled because there are lots of amazing things to do, many topics to discuss and from what I saw during the 2 days at Nuxeo World, great people who are building our community. First things first, this blog (thanks M Soulcie) is where I&#039;ll regularly talk about what&#039;s going on in the community. Of course I won&#039;t be the only one posting here. Since this is a &#039;community&#039; blog, you&#039;re all welcome to post content here. By the way <a href="http://dmetzler.posterous.com/a-few-notes-after-nuxeo-world-2011" target="_self" title="Damien&#039;s blog">Damien</a> and <a href="http://wordofpie.com/2011/10/26/nuxeo-world-2011-a-healthy-start" target="_self" title="Pie&#039;s blog">Laurence</a> already contributed their thoughts on the event.</p>
<p>I&#039;ll personally try to give you updates on what&#039;s cooking inside our walls so you guys get more visibility for your own projects. This will also be the opportunity to regularly talk about our Roadmap. I&#039;ll tell you a bit more about when we&#039;ll open it (Soon <img src='http://dev.blogs.nuxeo.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  ).</p>
<p>Another part of my role will be to provide some technical, pedagogical content like tutorials, small case studies or quick examples. The first candidate for slated is the <a href="http://doc.nuxeo.com/x/dABu" target="_self" title="Nuxeo CookBook">cookbook</a>. I&#039;m hoping to attract more and more developers to our platform and I&#039;m sure we&#039;re going in the right direction with the release of the Eclipse plugin Nx IDE.</p>
<h2>Sprint</h2>
<p><a href="http://dev.blogs.nuxeo.com/wp-content/uploads/dev/images/6a010536291c30970b01543671b6a8970c-pi.png"><img alt="Dev sprint " class="asset  asset-image at-xid-6a010536291c30970b01543671b6a8970c" src="http://dev.blogs.nuxeo.com/wp-content/uploads/dev/images/6a010536291c30970b01543671b6a8970c-320wi" style="margin: 0px 0px 5px 5px" /></a>Now for those of you who weren&#039;t at the Thursday evening party, we presented the results of our code <a href="http://doc.nuxeo.com/x/CoKE" target="_self" title="Sprint">sprint</a>. Which consist of two whole days of coding, no interruption, on an appealing topic by teams of 2 to 6 persons. This means loads of coffee and pizza. <img src='http://dev.blogs.nuxeo.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> &#160;</p>
<p>Each team had to pitch their sprint and all the attendees voted at the end. There was some pretty neat stuff showcased. Additional details on this subject will be detailed to you through subsequent posts on our blog, but here&#039;s a little summary (full list available on our <a href="http://doc.nuxeo.com/x/5IGEp" target="_self" title="Topics list">wiki</a>): </p>
<p>The winning team presented it&#039;s Ajax suggestion search box. It basically suggests to you different types of search options. For instance if you type &#039;adm&#039;, it will suggest to you the Administrator user, the administrators group, the documents created by the Administrator user or the keyword &#039;adm&#039;. This is a really sexy feature. Take a look at the video:</p>
<p>
<iframe width="320" height="240" src="http://www.youtube.com/embed/G-FuJosvbIU" frameborder="0" type="text/html"></iframe><br />
&#160;</p>
<p>It was closely followed by the markdown team. They added markdown to the note document, with a nice pdf export. The iOS team did a basic app using automation with the help of Julien Jalon, Senior Software Engineer. The Android team was focused on the test setup for CI integration with the help of Edouard Mercier from Smart&amp;Soft.</p>
<p>My own topic was the integration of the document rating system made by Damien Metzler from Leroy Merlin. We spent most of the time moving some metadata stored with hibernate into the documents schema while keeping the tests green. I still have to integrate it into the webapp with some shiny five star widget or maybe a Like/Don&#039;t Like button.</p>
<p>Next sprint will probably be held in 2012. The topic page is <a href="http://doc.nuxeo.com/x/T4SE" target="_self" title="Next Sprint topics">open</a> so feel free to add suggestions. Everybody is of course welcome to participate, just drop me an <a href="mailto:ldoguin@nuxeo.com" target="_self">email</a> and we&#039;ll organise this.</p>
<p>Wrapping this up, we&#039;re all really happy about the way things transpired over these four days. A special thanks to <a href="http://twitter.com/jviault" target="_self" title="Jeremy">Jeremy</a> who managed most of the organisation and planning.</p>
<p>(@ldoguin on Twitter, <a href="http://fr.linkedin.com/pub/laurent-doguin/2b/9b3/b97" target="_blank">LinkedIn</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://dev.blogs.nuxeo.com/2011/10/strengthening-the-nuxeo-community.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

