p2 Provisioning, Eclipse Galileo Feature #1

Today is the big day! Eclipse 3.5 – Galileo – is available for the general public. To count down the final push towards Galileo, I have been reviewing the Top 10 features that I’m most excited about. There are tons of other great features – such as the SWT port to Cocoa – that I personally don’t make use of, so if you disagree with my Top 10 list, I encourage you to publish your own.

A quick recap of what I have reviewed so far:
10. Enhancements to the Java compare editor
9. Improved Java 2 Javascript Bridge
8. The new RAP Look and Feel
7. EMF Ultra Thin Diet
6. Install into self
5. Memory Analyzer Project
4. Mylyn Wikitext
3. Improved Target Platform Management
2. OSGi Declarative Services

And without further ado, the Number 1 Galileo feature (according to me) is – p2, Round 2.

The Eclipse provisioning platform (p2) was originally released as part of Eclipse 3.4. At the time it provided a solid replacement for Update Manager, with the scaffolding in place to enable it to be a true provisioning platform. As of Eclipse 3.5, I can say that p2 is now a full fledge platform for provisioning everything and nothing in particular.

During the past year, p2 has been updated and improved in a number of different areas. New features were added, over 1,000 bugs were closed, workflows were revamped and even the helpful error messages were improved.

The uber-talented UI designer – Susan F. McCourt – reworked the entire p2 workflow. The repositories lists have been updated, the installed software views received a face lift and the “Install New Software” wizard has been completely revamped to support a more asynchronous user experience. Susan also provided a number of extension mechanisms so you can make use of the p2 UI in a number of different ways within your own RCP application.

install new p2 Provisioning, Eclipse Galileo Feature #1
installed p2 Provisioning, Eclipse Galileo Feature #1

Jeff McAffer designed the publisher, a new mechanism for writing repositories. The publisher provides a flexible method for working with p2 metadata. Andrew Niefer – the workhorse behind PDE Build – provided a lot of the publisher polish, and even re-worked PDE Build to use this new technology.

Henrik Lindberg contributed “Chester the test-data molester” an environment that helps test p2 using a variety of error scenarios. Using this, p2 can be tested against network problems, invalid modify dates, invalid file sizes, endless redirects, etc… Henrik also worked extremely hard on p2 transport layer. Below the transport layer, Henrich Kraemer, Scott Lewis and the ECF team provided a new provider based on the Apache httpclient.

In the p2 planner, the part that actually computes what needs to be installed, Daniel Le Berre – as part of his research studies – improved the explanation support. This means instead of getting a long winded explanation when you try to install conflicting bundles, you get a concise error message outlining the root of the problem.

explain1 300x96 p2 Provisioning, Eclipse Galileo Feature #1

DJ Houghton provided bug fixes all over p2 including many of invaluable tools such as mirroring, the director, the p2 garbage collector and the publisher.

One of the coolest features – meta requirements – was implemented by Simon Kaegi. Using meta requirements you can now ship the code to help install your software, along with your software.

John Arthorne helped a number of contributors earn their commit rights by providing true mentorship and advice. Additionally, John managed to fix a few hundred bugs, implement composite repositories, cleanup the p2 metadata implementation, fix a number of p2 caching problems, and generally improve the scalability and performance of p2.

While everyone worked very hard, the biggest kudo for p2 goes out to Pascal Rapicault, the p2 team lead. Pascal knows p2 inside-and-out and managed to assemble an excellent provisioning platform despite the occasional poorly worded bug report. Great job Pascal!

Next year’s project planning is starting now. Personally I would love to see even better scalability (client – server repository models), improved repository tooling and tighter integration with the target platform management.

Thanks for everyone on the p2 team, and all committers, contributors and users who made the Galileo release possible.

Enjoy the rest of the day, and tomorrow everyone should be back at work on Helios.

9 Responses to “p2 Provisioning, Eclipse Galileo Feature #1”

  1. Thanks Ian, this was a great blog series. I hope you will do the same next year with Helios ;). This is very helpful for none Eclipse committers or contributors.

  2. Kim Moir says:

    Great series Ian. Very well written and informative. I agree with the choice for the number one feature too, p2 has improved tremendously over the past year.

  3. Well, it *would* have been great, if it ever worked. All I got is cryptic error messages and pop-up dialogs about timeouts and unavailablity of repositories. So far, no luck in upgrading :(

  4. Ian Bull says:

    Vladimir,

    The p2 team would love to hear about problems you are having. If you are trying to upgrade from Eclipse 3.4 to 3.5 using p2, this won’t work. Too much has changed in the past year.

  5. Ian Bull says:

    Holger,
    Thanks for the kind words.

    Kim,
    A lot of the polish around p2 / the publisher / PDE Build integration comes thanks to you and your early adoption. Thanks for making use of the publisher in the platform builds.

  6. Dean Schulze says:

    Already found a bug with p2:

    https://bugs.eclipse.org/bugs/show_bug.cgi?id=281410

    I’m sure others will run into this too, since subclipse is a widely used plugin.

  7. It should work Dean.

    Have you considered trying instructions on the Subclipse page?

  8. Dean Schulze says:

    Chris – This is definitely a bug, not a result of not following instructions.

    The Eclipse team has been aware of this bug since at least RC1, but haven’t fixed it. It isn’t easily reproducible but several people have seen it on different platforms and for different plugins.

  9. Lars Vogel says:

    I just updated my pde build from 3.4 to 3.5 and I amazed how easy pde build (using p2) is now. Kudos to the whole team and a well-earned Feature #1.

9 responses so far

Written by . Published in Categories: EclipseSource News, Planet Eclipse