Archive for the ‘opensource’ Category

+  =

As anticipated, I have today completed the migration of the (Maven) Alfresco SDK to the Alfresco Organization in Github.

The new location for the project is https://github.com/Alfresco/alfresco-sdk. Issues and code are already there, let me know if I missed something obvious or if you don’t have the right access to the project.

After 6 years in Google Code, we decided to move to Github to foster even more contributions and an ever growing flourishing community around the Alfresco SDK! I’m excited! :)

The old Google Code project location is temporarily still there for a limited amount of time, but I plan to close it for good and redirect to the Github location.

So, what else can I say?

Well, FORK US :)

After about 10 (really very busy) months of silence in this blog, I think I owe everyone an update of what’s going on with the Maven Alfresco SDK and more in general with Maven and Alfresco.

Lots happened, and it’s still happening, so here’s an update so that

So first things first, from the Alfresco side:

  • As you know, the long journey of Mavenizing the Alfresco build is ended. After Cloud, now Community and soon Enterprise are building with Maven
  • Alfresco Community 5.0.a is out and it’s fully built with Maven. Took about 5 years, but we made it, so get finally ready for a fully orchestrated ecosystem here :)
  • Highly likely the old Java / Eclipse SDK is going to be EOL’d, leaving the Maven SDK as the one and only standard de facto best practice to develop on Alfresco
  • We (and Mau specifically) are developing a Maven + Alfresco training that will be delivered at both Alfresco Summits in London and San Francisco. On this note, did you already sign up for Summit US or EMEA? If not, what are you waiting for? The schedule is, once again this year, just A M A Z I N G!

On the SDK side instead we plan to do the following:

  • Move the SDK project to Github, consolidating it in the Alfresco organization. The rationale here, apart from consolidation, is to move to a more modern SCM system which would foster even more visibility and community contributions. Pretty excited about that :)
  • We are preparing the SDK release 2.x, which will be compatible with Alfresco 5.x. In the meanwhile you might want to check out the latest 2.0.0-SNAPSHOTS which are increasingly compatible with 5.0.a (disclaimer: YMMV!). Here all the issues we are targeting to resolve, so some work is still required
  • We are seeing community momentum in the SDK like never before, mostly thanks to Ole’s great community help. In particular, Ole has Mavenized already all the samples of the old Java/Eclipse SDK, so we plan to release those together with the new 2.x SDK release and in general make those the reference examples for Alfresco development. Neat isn’t it?
  • If you are interested please help us testing the snapshots, opening issues or even provide contributions. Don’t be shy!

Stay tuned, as we plan to wrap up all this work by Summit, so less than 2 months away. I will then going to be presenting together with Maurizio on a full end to end process to manage Alfresco process, from development and release with the Maven SDK to continuous delivery and deployment with Alfresco Boxes, in a session called “Get Your Alfresco Project from Zero to Hero with Maven Alfresco SDK and Alfresco Boxes“.

 

           See you there?

            Sign up Here :)

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!

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!

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 »

Just in case you were wondering, this is the time things are actually happening.

If you are working or willing to work on Alfresco ECM platform with Maven, you better stay tuned and keep your patience for a few weeks more.

Why?

Well for a few interesting reasons:

*  The Maven Alfresco Community is growing and every day there is more activity in the lists and on the code contributions side. If you need information around Maven and Alfresco, the Maven Alfresco discussion group is the place to be.

* Alfresco is integrating Maven artifacts deployment in its build process (see issue): we are literally days away from having 3.4 and 4.0 Community and Enterprise versions available on the Alfresco Artifacts Repository. BTW, bear with us in these days as some changes might be undergoing in the repositories. This is great news for all of you who are hosting corporate repositories (especially for Alfresco Enterprise) as this way you will just have to point to maven.alfresco.com to retrieve Alfresco artifacts

* We are working actively (kudos to Mau) on a clean, neat, supportable version of the Maven Alfresco Lifecycle project: if you check out the experimental branch you’ll find a nicely merged, lean, fully functional set of parent POMs and archetypes to allow you, for example, to run a full Alfresco Repository, Share, AMP, etc. as a single project embedded in Jetty and H2. Nice, ain’t it? Stay tuned there because we are aligning that to the automated deployment at point #2, so we’re just really weeks away from a nice, fully featured, extensible but above all standard open Maven Alfresco SDK.

As we do lots of progress on this area, your feedback is more than welcome and, once again, bear with us while we actively work to make your Maven Alfresco developer life easier.

Hey guys,

I’m proud to announce that thanks to a vigorous Community help (special mentions and kudos to Mao and Stijnr for the great help in the last period), we have been able to pull out the 3.9.1 release of the Maven Alfresco LIfecycle.

Multiple bug-fixes, a zero defect targeted release and a couple of juicy new features like:

make of this one probably the most stable and tested release of the Maven Alfresco Lifecycle. The release is tested against Alfresco 4.0b Community, and it’s the perfect foundation to the great work we are going to do in the next weeks to clean it up completely and support Alfresco Enterprise.

The releases is available in the Maven Alfresco Repository (in case you are wondering, I still need to update the archetype-catalog.xml, but that will happen just after Easter, as I have no permissions right now :( ). Full release notes are also published on the Google Code project and per component documentation is available in the brand new published Maven Site (using the HUGELY COOL Maven Fluido Skin).

Feedback is always welcome in the Maven Alfresco List and we also have a Skype chat so feel free to contact me on Skype if you want to contribute / participate in any way :)

Have fun and let us know what you think!

This is probably more of a note to myself than anything else, since every time I have to do some sneaky X11 forwarding (e.g. to profile or perfomance tune a production server) it somehow never works the first time…having to waste at least 15, fundamentally boring, minutes to figure it out again.

Of course prerequisite is that you need to have some kind of X11 server running on your client, whose display will be forwarded to the server. Linux has it by default, Mac users can install it from the OS disks, for Windows users I suggest XMing to avoid the whole CygWin download).

So this is Gab self reminding recipe for that (tested from MacOS 10.6.8 to RHEL5):

  1. Make sure that
    "X11Forwarding Yes"

    is in your

    /etc/ssh/sshd_config

    on the SERVER SIDE

  2. Make sure that
    "ForwardX11 yes"

    is your

    /etc/ssh_config

    (or

    /etc/ssh/ssh_config

    for Linux distros) on the CLIENT SIDE

  3. Login to the machine with
    ssh -X user@host
  4. If “echo $DISPLAY” does not display any meaningful value (e.g. host:display) then you typically miss libraries on the server side. From root or sudo your should issue at least (this worked for me on all RedHat based distros):
  • yum install xorg-x11-xauth
  • yum install libXtst
  • yum install libXi

At that point you might have to logout/login but the you should be able to run whatever X based application (e.g. JConsole, JProfiler, can you tell I use Java? :) ) directly from the server and see the UI pop up on your client.

Never forget anymore Gab…and thanks for reminding to write this down my friend :)