Just in time for the Alfresco Summit in Barcelona, we are proud to announce that the Maven Alfresco SDK 1.1.0 is out!

In this release (tested with Alfresco 4.2.e Community and supported with Alfresco 4.2.0 Enterprise) we have focused to make the development experience even faster, on top of keeping all process oriented and automation SDK features.

Key features that you might be interested in (and hopefully very excited about) are:

  • JRebel integration to allow zero redeployments when developing Alfresco Java components
  • Support for running JUnit test on a running Alfresco instance, in fractions of a second, not minutes. This leverages junit-remote and requires JRebel to hot reload classes
  • A new profile ‘-Prad’ to enable the 2 aforementioned features
  • Jetty replaced with Tomcat7 embedded, for improved supportability
  • Multiple fixes and improvements in the Eclipse integration
  • Works with Alfresco 4.2.e Community and Alfresco 4.2.0 Enterprise

This release represents a major improvement towards a full supportability of the SDK when working with Alfresco Enterprise, as well as providing a way to develop customizations in minutes, not hours.

Hope you enjoy it, feedback and contributions more than welcome, here or in the Google Code project!

EDIT: Slides are available on the Summit website. Apologies to everyone who asked before for not having uploaded them before the presentation!

Just a quick update for the Alfresco Mavenistas, as yesterday we released the Maven Alfresco SDK 1.0.2!

This is a (major) maintenance release for our preferred Alfresco SDK (see full 1.0.2 release notes), and I wanted to stress a couple of fixes who went in there which might drastically improve your development experience:

  1. As I described in my last post, if you are a Linux/Mac SDK user, then your build is probably going to speed up 5x to 10x times. This is thanks to a fix using the plexus-archiver…I look forward to hear your wows from here :)
  2. The latest MMT fixes are in there. This should fix any weird issues of your build in case you were overriding Alfresco resources

You can find official documentation and artifacts on the Alfresco Artifacts repository.

And BTW, I suggest you stay tuned on this channel as I have worked hard in the last months on a plan for a full Mavenization of Alfresco…and you all know what that would mean for the functionality and “coolness” of our SDK :)

Maven is very good with J2EE WARs. Resources, packaging, overlays.

I admit that if it wasn’t for the great features and clean development model imposed by the maven-war-plugin, I would not even probably looked at Maven in the first place when I developed the first version of the Maven Alfresco SDK.

Lately though, especially working with large WARs overlays like Alfresco (120MB) and Share (40MB), I have seen all my efforts for standardized development falling badly short on the rapid development side. Suddenly (on my Mac, or I assume on any Unix/Linux environment) my WAR overlays started to take minutes to complete, with a big so long to the quick dev-fix-test cycle. As a Java performance expert, I decided to debug it and understand where it was actually wasting time.

Turns out that for each and every unpacked resource from WAR overlays the Maven unarchiver would fork a chmod process, to modify some file permissions!!! (Windows users, you can stop reading here :)

Leaving out that I’m not sure of the original reason for this, I later found out (also thanks to Samuel, kudos!) that this was due to a misconfiguration of the plexus-archiver package, which instead of using native JVM chmod capabilities was forking the process. All details unfolded in a related maven-dependency-plugin issue, MDEP-368.

Basically turns out this properly fixed in plexus-archiver-2.3 (the Maven shared component used by plugins to manage ZIP & co. archives), where no process is forked and the overall WAR packaging / overlay time is reduced drastically. And now the fix, and later the wow effect (I hope) :) ))

Luckily enough the fix is pretty simple and only requires to have your plugins (unless they do it already) depend explicitly on plexus-archiver version 2.3. In other words just add the following snippet (the example is for the maven-war-plugin, but you can use the trick for the maven-dependency-plugin and any other plugin you see poorly performing on resource unpacking) to your pom.xml:

 <plugin>
     <artifactId>maven-war-plugin</artifactId>
     <dependencies>
         <dependency>
             <groupId>org.codehaus.plexus</groupId>
             <artifactId>plexus-archiver</artifactId>
             <version>2.3</version>
         </dependency>
     </dependencies>
 </plugin>

EDIT: This is fixed in the maven-war-plugin version 2.4 (and you don’t need the explicit plexus-archiver dependency anymore), see related issue MWAR-280).

Just to give you an idea how the performance improvements with this little fix, I will use as an example the Maven Alfresco All-In-One Archetype, which allows to develop and run an Alfresco Repository, Share, Solr and an AMP in the same Maven multi-module project. The SDK currently does NOT use plexus-archiver 2.3 (there is an issue for it), so it’s extremely (and unnecessary) slow in the Alfresco and Share overlays.

After I created the project from the archetype as per docs, here’s the output of a simple

mindthemac:alfresco-parent mindthegab$ mvn clean install -DskipTests
...
[INFO] Reactor Summary:
[INFO]
[INFO] Quickstart of Alfresco and Share with DB and runner embedded  SUCCESS [0.978s]
[INFO] Alfresco AMP Module ............................... SUCCESS [11.271s]
[INFO] Alfresco Repository and Explorer Client ........... SUCCESS [4:10.599s]
[INFO] Alfresco Apache Solr customization ................ SUCCESS [6.504s]
[INFO] Alfresco Share Client ............................. SUCCESS [4:08.038s]
[INFO] Alfresco and Share Runner ......................... SUCCESS [0.045s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 8:41.062s
[INFO] Finished at: Thu Jun 20 14:54:35 CEST 2013
[INFO] Final Memory: 38M/782M
[INFO] ------------------------------------------------------------------------

What? 8m41s total build time? 4 minutes for each WAR? On my very decent Mac 8GB RAM+SSD?

Such a slow cycle is just going to kill the Maven Alfresco Community, to be a little dramatic :)

And now, get ready for the wow…after applying the little plexus-archiver fix above (in the parent POM <plugins> or <pluginManagement> sections) this is the amazingly improved performance of the vary same build:

mindthemac:alfresco-parent mindthegab$ mvn clean install -DskipTests
...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] Quickstart of Alfresco and Share with DB and runner embedded  SUCCESS [0.848s]
[INFO] Alfresco AMP Module ............................... SUCCESS [5.630s]
[INFO] Alfresco Repository and Explorer Client ........... SUCCESS [35.372s]
[INFO] Alfresco Apache Solr customization ................ SUCCESS [5.054s]
[INFO] Alfresco Share Client ............................. SUCCESS [23.945s]
[INFO] Alfresco and Share Runner ......................... SUCCESS [0.019s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1:13.143s
[INFO] Finished at: Thu Jun 20 15:56:43 CEST 2013
[INFO] Final Memory: 44M/496M
[INFO] ------------------------------------------------------------------------

WOW!!!  Only 1m13 total build time…a neat 85.96% build speed up :)

I think it’s really worth making sure this trick is known as it’s going to be a life saver to the Maven Alfresco SDK and I’m also using it to speed up our internal Alfresco Maven builds.

Hope you find this useful, to the next tip of this newly born Maven post series!

In life like in software, changes should not be feared but just embraced, as a potential opportunity for improvement and a way to augment your personal cultural level, learn new things and generally train your brain to be flexible and responsive to new conditions.

This might sound obvious to all of you, but there are many more aspects of our lives (or at least mine) which, instead of driving me to change and constant improvement of my and other selfs, would be much better off if we were “constantly” stable and predictable.

Think about it, our governments would love to have all of us adhere to perfect statistics, being as controllable and predictable as a mass.  Same goes for a discreetly successful love relationship. Our minds, or at least them, once in a comfort zone, tend to naturally relax and search for common solutions to problems already solved. Even our parents, in many cases, would love for us to do the most conservative choice possible for our lie, i.e. stick with what they know and with what they thinks it’s safe for you, in many cases ignoring the world is “actually” changing.

Read the rest of this entry »

Last 5 days have been amazing. A total quantum leap in a sweet & sour mix of past and future.

Thanks to Codemotion & the great organization of the Alfresco Rome’s meetup by Jeff (as usual!!!) and our partner Sourcesense, I had the opportunity for the 2nd year in a row to go back to my University and be on the other side of the desk! (twice actually, if we count also the Maven SDK quick preso I gave at the meetup).

But it wasn’t only the emotion of talking to young students and experienced software engineers that is giving me this wonderful sense of fulfillment.

And it’s not only seeing that Codemotion (organized by one of my closest friends, Chiara) is growing year after year in relevance & resonance, quality of sponsors and speakers network.

But mostly the fact I had the chance to meet with so many good friends from my academic past and see how sooner or later we will cross again in our professional future. A so much past oriented trip, but still surprisingly focused on discussing the next killer app with the guys…like in the good old college times :)

When I finally met one of my ex-professors, Paolo Merialdo, almost “bragging” on how good our generation of engineers (taught by him) is, i.e. that bunch of great engineers that came out of Roma3 University around 2004/2006, I fully understood what I was up to. Re-discovering my roots to leverage them in the making of my future.

And for how great changes happened in my life, and more, even bigger will hopefully come soon, I will always be connected to those guys I studied with in Rome (and now all over the world). Not only by technology, but by a same way of interpreting life, business and daily challenges. Almost like entangled.

And yes, we will finally end up creating our own startup, one it’s going to fail, and then we’ll make another one, and maybe it’s gonna succeed then :)

But in substance we will have fully lived the dream of this crazy field we work in.

The dream of who feels capable to build something that will succeed, something that will be remembered, something that might even change the world. Check Liquid Feedback and the whole Italian 5 Star movement to get a hint of what I’m saying.

Talk soon, hopefully with some updates, on where we stand on making the dream come true :)

Il mio primo post in Italiano? Ebbene si’, l’occasione era cosi’ importante che ho deciso di aggiungere, almeno per lo spazio di un post, una terza lingua a questo blog :)

Da domani, all’Universita’ di Roma Tre, comincia una conferenza che sta rapidamente diventando una delle piu’ importanti in Europa, per quanto riguarda il mondo open source e dell’innovazione tecnologica: sto parlando di Codemotion, la conferenza (internazionale ma da una idea totalmente italiana) dedicata a tutti i linguaggi e piattaforme del mondo open source, che quest’anno comincia la sua stagione a Roma, ma che si spostera’ a Maggio a Berlino e ad Ottobre a Madrid.

Oltre a i tanti sponsor e track interessanti, da Arduino a Domain Driven Design, da metologie agili a buzzword piu’ recenti come mobile e big data, quest’anno sono felice ed orgoglioso di annunciare che Alfresco sara’ sponsor della conferenza e sara’ presente in maniera massiccia per legare con la comunita’ italiana e per condividere il messaggio innovativo della piattaforma leader nello spazio dell’ECM ibrido.

Vi segnalo i diversi modi in cui potete mettervi in contatto con noi durante la conferenza:

  • Passate a visitarci al nostro stand se volete sapere quanto sia cool la nostra tecnologia, ma anche rockstars della nostra community come Jeff Potts (Chief Community Office) o il nostro consulente tecnico Maurizio Pillitu … ah si, e ci saro’ anch’io :)
  • Venite ad uno dei due talk che presenteremo nei track della conferenza:
  • Domani pomeriggio, accorrete numerosi all’Alfresco Rome Meetup che si terra’ sempre a Roma 3 e nel quale uniremo topics strettamente tecnici (come CMIS e Maven SDK) a presentazioni dei nostri partner e clienti. La maniera perfetta per capire come Alfresco possa migliorare i vostri processi e flussi di informazioni. Il programma dettagliato e’ pubblicato sul blog di Jeff.

E come se non fosse abbastanza eccitante, il tutto si svolge nell’Universita’ che mi ha cresciuto e fatto diventare l’ingegnere (un po’ strano per carita’) che sono adesso. E’ sempre una sensazione strana, ma bellissima, trovarsi dall’altro lato della cattedra …

Un tuffo nel passato per dare uno sguardo al futuro…vi aspetto numerosi!

EDIT:

Le slide del talk sono pubblicate sul mio slideshare. Spero che il talk vi sia piaciuto!

It’s been a long journey, but we made it ;)

It started almost 5 years ago, and through the years, little by little, we made giant steps towards an open development platform.

If you have followed this blog earlier, you probably have shared some of the pain for an unnecessary difficult integration process of Alfresco artifacts, therefore today we should all re-joy as development on Alfresco got just so much better ;)

Thanks to the great work of the whole Maven Alfresco Community and the strong momentum and Support from Alfresco Engineering and Release Management, it’s with extreme pleasure and pride that I announce you that a fully fledged Maven Alfresco SDK™ 1,0 is now available for your enjoyment and to drastically improve your development productivity on Alfresco projects.

While I recommend to you have a look at the full docs and to the release notes to understand the full extent of features of this brand new piece of software, let me just give you here an overview of the  most exciting features:

  • Zero configuration approach: create an AMP or All-in-One archetype and with one command you are ready to run and customize Alfresco. In the very same place :)
  • Zero download approach: the SDK will take care of downloading the appropriate Alfresco artifacts from the Alfresco Artifacts Repository. Also no DB or application server is required, as the SDK will runAlfresco emdedded on Jetty + H2.
    Note:
    this configuration is not part of the supported stacks, so should be used only for development purposes
  • Zero BS development approach: with new SDK the focus is your creativity, no more boring configuration or hacks to make a particular work.  Just get the setup right with an archetype and start to kicking it on Alfresco :)
  • Zero defect is the main objective of the SDK: with support for AMP unit and integration testing, as well as integration with the strong enterprise development process feature of Maven (e.g. CI, release mgmt, etc.), you can get you Alfresco development to another level. This was made thanks to the availability of POM files for Alfresco Artifacts (as of Alfresco 4.2.b).

NOTE: For those of you wondering about naming and version: yes, the Maven Alfresco SDK 1.0 superseded the old version of the Maven Alfresco Archetypes / Lifecycle 3.9.1.  As of Alfresco Community 4.2.b the Maven Alresco SDK 1.o is the recommended solution.

But without further ado, I can’t wait to join the other Alfresco Rockstarts at the DevCon hackaton, I’m sure we can boost some productivity down then with this SDK. Once again, check out the project website for full docs.

I want to thank you everyone involved in making this happen (especially Mao and Samuel) as we believe it will be a major improvement for the developers, architects and administrators of Alfresco project, finally providing a solid foundation to doGreatWork() and this great product.

Enjoy and let us know your feedback!

When I saw this picture today on Facebook, I was quite amazed. As a handful of friends did, I started being seriously worried, even being on the other side of the pond, about what was going to happen to the many friends I have overseas.

I started sharing it, “socializing” on it, and starting obvious dissertations on how powerful yet scary nature can be and wishing luck to all of my friends.

But then I did what, unluckily enough I suspect,  the vast majority of social media members don’t usually do – and sometimes even journalists tend to forget: just get one level deeper :)

Quoting from the original posted Facebook page:

Jason Otts: Ok… apparently this pic has gone viral from my wall with 99,989 shares. In the last 15 minutes I have had like 200 people add me as a friend because of this pic. So I called the person who texted it to me and she then called her friend who is in New York and he told her that it was fake. So now I have 200 friends who like a photo that is fake on my wall. Funny, but awkward….

So turns out it was a fake, as other sources seem to confirm. It’s the first time that I get caught in a viral so quickly (especially as I’m not in the cool Valley :) ), but that made me think thoroughly enough about the evil power of the Internet.

While I’m the first considering “the Net” my only God, Wikipedia my only Bible, the righteous and truthful source for any information, the only remaining free channel of communication and yadi yadi yada, this time I am facing the awful truth of how sketchy, easily manipulated and imprecise certain pieces of information can be.

I will spare you anymore social interpretation of this, but just take an old but still very modern advice: before jumping your guns on some internet opinion, check your source! ;)

Sounds like it’s happening. More, much more that I could expect. Much better than before.

At Alfresco in fact we are finally about to close on two fundamental areas like ECM Scalability and on the availability of a fully fledged Maven based SDK.

As you might know (if you are reading this blog you probably will), these on the two areas I’ve always been passionate and involved for in the last few years. Just to let you understand how passionate (or romantic, almost Italian) about these topics, enough for you to know that:

    • I ranted about Maven for a few years now and, in this last year, I experienced a momentum never seen before both from a corporate and from a community standpoint. Literally, about to cry here :)
    • I worked for many years as Alfresco Partner and Solution Engineer, without having a quantitative sizing and performance reference for my implementations. In the last year I participated to the Alfresco Benchmarks project, which has shown very interesting results and improved the scalability of our system exponentially. I am so excited about these improvements, both at process and product level, that I can’t wait to share those with you :)

So it’s just a great pleasure and excitement for me to confirm we have a couple of so much awaited HUGE surprises on those areas ;)

But without further ado then, it’s my pride to officially announce that …


…no wait, I have a better idea.

If you are really interested and you want to know what’s going on around Performance and SDK, it’s quite simple: you should just come by for one of the two great DevCons (Berlin and San Jose) that are approaching in November :)

I will give two speeches at both EMEA and Americas DevCon, surprisingly enough about:

And if you are not convinced, hear is a little teaser ;)

Native American Artifacts

Native American Artifacts

It’s my honor – and a a huge personal satisfaction after a few years working on this – to announce the full availability and support of the Alfresco Artifacts Repository, a fully fledged Maven repository hosting the major Alfresco releases and of its flourishing projects ecosystem, both for the Alfresco Community and Enterprise Networks.

For those of you already following this blog this might be no big news, as somehow the information was already around in the Alfresco-sphere and an Alfresco Maven repository has been already unofficially (AKA maintained by me) around for a while. But the great news is that now the repository is officially maintained and artifacts are kept up to date :)

Based on the Nexus OSS mature Artifact Repository technology, and following a few weeks Partner only beta, the repository is now publicly available at:

http://artifacts.alfresco.com (formerly http://maven.alfresco.com)
The Alfresco Artifact Repository

The Alfresco Artifact Repository

What can you find in there (AKA the screenshot is not enough)? Very well, at the moment the Artifact Repository hosts:

  1. Alfresco Community full releases (JARs/WARs) identified with the groupId org.alfresco
  2. NEW: Alfresco Enterprise full releases identified with the groupId org.alfresco.enterprise
  3. NEW: Alfresco Hotfix full releases identified with the groupId org.alfresco.enterprise
  4. Activiti (BPMN 2.0 implementation) Releases and Snapshots
  5. All the versions of the open source Maven Alfresco Lifecycle, a long term but quickly growing Maven SDK approach to Alfresco development
  6. All Spring repository proxies, to ease Spring Surf development by only referring to this repository developing Surf

NOTE: At the moment no POM files / dependency declarations are available, but if you are interested please feel free to vote on this issue :)

Still not sure about the potential? Well, let me just give you an idea:

Read the rest of this entry »