Twitter github

Posts Tagged with “eclipse”

My Thoughts on Hudson and Jenkins

The Jenkins community had a meeting yesterday, here are the minutes. As part of the meeting, there was discussion to see if there could be any reconciliation with the Hudson proposal at eclipse.org, they started a wiki page with their requirements.

I was mostly at the meeting to dismiss any false knowledge with how we operate at the Eclipse Foundation. There seems to be a lot of confusion that Eclipse is controlled by IBM and whatever evil companies you want to name, but that’s so almost a decade ago when Eclipse wasn’t a Foundation but a Consortium. If you take a peak at this year’s commit information so far, you see that individuals make up the most commits at eclipse.org so far (with IBM as a close second). Eclipse.org is a very professionally run open source organization that understands the line between commercial and open source offerings well, you won’t find many freetards here. You’ll find people who care deeply about developing quality open source software for companies and individuals alike. Just take a look at the eclipse.org membership rolls and you’ll see the amount of diversity. There’s an established development process called the Eclipse Development Process which gets refined every year or so and helps guide projects in the right direction to releasing quality software. In the end, each eclipse.org project is individually run by the committers and project leadership.

I have a selfish reason to have a great CI system at eclipse.org… we already are fanatical users of an older Hudson version for a lot of our eclipse.org projects (http://hudson.eclipse.org/) and having a project within the eclipse.org walls would allow for some nice dogfooding. On top of that, we have a great set of Mylyn Builds tools (see Mik Kersten’s blog entry) that allow developers to interact with their Hudson/Jenkins instances from within the Eclipse IDE. On top of that, the Eclipse community also has a lot of advice to share when creating a plug-in based ecosystem, from technology (e.g., OSGi) decisions to infrastructure to licensing.

In the end, it’s pretty comical that the Java ecosystem is large enough to damage itself like this. A prolonging fork of Hudson/Jenkins is a not an ideal solution for the future and having the projects reunited would be better in my humble opinion. Regardless of the decision, I hope people from both sides can put the politics and hard feelings aside and do what is right for your adopters, because at the end, you need to keep them happy, whether they are individuals or companies.

Git Ant Tasks via JGit

As part of our upcoming 1.0 release, JGit will feature some Git Ant tasks. This is great news if you want Ant tasks that are portable and don’t rely shelling out to call the Git command line interface. If you want to take a peak at the, check out the org.eclipse.jgit.ant module.

A special thank you to Ketan Padegaonkar from ThoughtWorks for the initial contribution. If you want more Ant tasks available, please feel free to contribute by looking at our contributor guide.

EGit and JGit 0.12 Released

The EGit and JGit teams are proud to announce the 0.12 release!

If you’re interested in what’s new, please checkout the respective new and noteworthy documents…

This is the last release before we wrap up development in early June and declare 1.0 in time for the Eclipse Indigo release. There’s a lot of stuff in the pipeline that didn’t make the 0.12 release so if you want to get anything in for the 1.0 release, please consider contributing by following our contributor guide. As always, if you have any questions in using the tools, please checkout the thorough EGit User Guide. Also, if you want the JGit maven repository, you can find more information here.


Enjoy!

Eclipse and Mylyn GitHub Integration

Do you recall the recent now mirrored at GitHub? Well, I have good news, within the EGit project at eclipse.org, we have started creating some tooling to integrate GitHub. At the moment, we only support working with GitHub Issues and Gists…

In the future, we’re looking at integrating with other parts of the GitHub API, but for now we are targetting solid Gist and Issues support from within Eclipse for the Indigo release in June 2011. I can only imagine how cool it would be to work with GitHub pull requests from within Eclipse, but good things come to those who wait (or contribute). To test out the tooling, please add this repository to Eclipse:

http://download.eclipse.org/egit/github/updates-nightly

It’s important to note that the tooling should be considered alpha-level and we’re really seeking people to test and contribute to the project. You will run into issues using the tooling and you should keep that in mind. You can find more information on the contributor guide or take a peak at the code at its GitHub mirror. If you find any bugs or have enhancement ideas, please file them here.

I would like to thank Kevin Sawicki from GitHub and Christian Trutz who pushed me a bit to get the initial tooling contribution in place at eclipse.org so people can contribute. In open source, sometimes it takes having a frosty beverage with someone to move things along…

Eclipse Indigo Wallpaper

Get in the Eclipse Indigo spirit with some new wallpaper!

Thanks Nathan!

Debugging Eclipse p2 Dropins

If you ever have any issues with the p2 dropins directory (which you shouldn’t be using in the first place), there are some handy tracing options you can use…

org.eclipse.equinox.p2.core/debug=true
org.eclipse.equinox.p2.core/reconciler=true

Just create a .options file at the root of the Eclipse installation directory and pass -debug when you start Eclipse. You should see some debug output from p2 in the log…

[p2] Mon Apr 04 08:36:19 CDT 2011 - [Start Level Event Dispatcher] [reconciler] [dropins] Repository created file:/usr/share/eclipse/dropins/pydev/
[p2] Mon Apr 04 08:36:19 CDT 2011 - [Start Level Event Dispatcher] [reconciler] [dropins] com.python.pydev.codecompletion 1.6.1.2010080312
[p2] Mon Apr 04 08:36:19 CDT 2011 - [Start Level Event Dispatcher] [reconciler] [dropins] org.python.pydev.parser 1.6.1.2010080312
[p2] Mon Apr 04 08:36:19 CDT 2011 - [Start Level Event Dispatcher] [reconciler] [dropins] org.python.pydev.feature.feature.jar 1.6.1.2010080312
[p2] Mon Apr 04 08:36:19 CDT 2011 - [Start Level Event Dispatcher] [reconciler] [dropins] org.python.pydev.help 1.6.1.2010080312
[p2] Mon Apr 04 08:36:19 CDT 2011 - [Start Level Event Dispatcher] [reconciler] [dropins] org.python.pydev.debug 1.6.1.2010080312
[p2] Mon Apr 04 08:36:19 CDT 2011 - [Start Level Event Dispatcher] [reconciler] [dropins] com.python.pydev.fastparser 1.6.1.2010080312
[p2] Mon Apr 04 08:36:19 CDT 2011 - [Start Level Event Dispatcher] [reconciler] [dropins] org.python.pydev.feature.feature.group 1.6.1.2010080312

Happy debugging!

Eclipse.org and GitHub

I’m happy to announce we finally setup mirroring of eclipse.org repositories on GitHub.

I think this is an important step to making the eclipse.org codebase more accessible for people to fork and contribute changes. If you’re an eclipse.org project accepting changes from someone on GitHub, please check the official policy on handling Git contributions. If you’re an eclipse.org project and you don’t see yourself on the mirrored repository list at GitHub, you have to:

  • First move to Git if you haven’t already at eclipse.org
  • If you’re on Git already and don’t see your self on the list, file a bug against Community->Git

If you need more information, please check out the wiki for more information about GitHub. I also want to thank Wayne Beaton for his portal metadata wrangling and Ketan Padegaonkar for helping out with this effort.

Enjoy!

Mylyn Builds and Hudson (Jenkins) Integration

Have you tried Mylyn Builds yet? Well, you should!

I’ve been using the Mylyn Builds Hudson/Jenkins integration extensively for the past few weeks and all I can say is awesome. As developers, we tend to spend a lot of time switching between Eclipse and something else, like a browser pointing to build results. With Mylyn Builds, I’m able to see build results within Eclipse and can even open the test results in the JUnit view and re-run any test failures. This alone helps with time savings on my end when it comes to dealing with build failures. In the end, this reminds me of my experience when first using Mylyn to work with Bugzilla… I spend more time in Eclipse working on what I need to.

Anyways, enough of me talking about it… give it a try and see yourself!

The State of Git at Eclipse – Early 2011

Next week at EclipseCon 2011, it will be a year after we first presented some rough Git tooling to the eclipse.org community via a tutorial. At the time, the deal was that the tooling was in early stages and needed some love from early adopters to help improve the situation. I’m happy that things have come quite a long way since last year based on Eclipse Marketplace stats and the community contributions the projects have received.

So what’s next? In terms of tooling, we’re getting closer to our 1.0 release (which is planned for the Indigo release). The git tooling at Eclipse is much better these days, if you need help or have questions, please start with the most excellent EGit User Guide. From our user guide, you should tell that we support the majority of the common work flows now. If something is missing, please let us know by filing bugs or contributing.

If you’re an eclipse.org project, please consider starting the process to move your project repository to Git. There are a lot of eclipse.org projects already on Git. You can find great documentation at Eclipsepedia on how to do the move. It’s not that bad, the LinuxTools project has recently migrated to Git and the CDT project has stated that they will start the process after the Indigo release. It would be nice to see the all of the eclipse.org projects have plans to move to Git by the Indigo release.

A portion of the EGit and JGit teams will be at EclipseCon 2011, so please swing by our tutorial and track us down if you have any issues moving to Git or using the tooling. We believe that the tooling is good enough now to meet the majority of eclipse.org committer needs. All of us want to see eclipse.org fully on Git by the end of the year, so let’s work together to make this happen. If people think holding a BOF about moving eclipse.org projects to Git is a good idea, let us know and we can do it.

Maven Tycho, Hudson (Jenkins) and Eclipse

I’ve helped setup quite a few Maven Tycho builds for people as of late, with more requests coming in. Personally, I’ve had quite a bit of experience working with Tycho-based builds as being one of the first early adopters with the EGit and JGit projects at Eclipse. At that time, Tycho was pretty rough around the edges but I’m pleased to report I believe now Tycho to be one of the best, if not the best option for building Eclipse/OSGi related artifacts. Sure, it’s not perfect but it’s pretty damn good now. Furthermore, there are even large projects like Mylyn at eclipse.org that have moved to Tycho to manage their whole build if you need further proof.

One of the common complaints from folks within the eclipse.org ecosystem is how difficult it is to setup build. In the past, we had the Athena Common Build project at eclipse.org with some success. Athena helped many projects get off the ground when it comes to building and publishing their artifacts. However, it still suffered the drawbacks of PDE Build based systems when it came to debugging, customizing and extending the build system. For example, if you wanted to integrate with Hudson, add FindBugs to your build or run SWTBot unit tests, you suffered quite a bit. Well, I’m happy to report that Maven Tycho helps quite a bit with these customization issues. To help alleviate some of the pain we’re experiencing with build at eclipse.org, I decided to put up sample Maven Tycho project for people to look at and refine. I’m calling the effort Minerva as I think it plays nicely with what was done in the Athena project (Minerva is the Roman equivalent of Athena and the word Maven is in Minerva!).

The goal of the Minerva project would be to get a well documented sample build for eclipse.org projects. I can even envision a future when a new eclipse.org project comes around and they get a build already generated for them and hooked up to hudson.eclipse.org! I think once you have something working and it’s well documented, it becomes pretty easy to expand as you add new features.

To get started, I’d take a look at what is on the wiki already. If you want to play with code, ensure that Maven 3 is installed and then do a quick clone.

git clone git://github.com/caniszczyk/minerva.git
mvn -Dskip-ui-tests=true clean install

Once you do that, you should notice a p2 repository (update site) generated in the update site project’s target/site folder. To sweeten the deal, if you have Hudson (Jenkins) installed anywhere, you can configure it quickly to build the code base.

Remember how long something like that took before? In reality, Tycho isn’t that complicated to setup.

In Maven, the parent pom.xml serves as the central point on adding things to the build. It’s also generally the most complicated piece of the build as it contains information that is shared by children pom.xml files. The first part of the parent pom.xml contains identifying information:

...
<groupId>org.aniszczyk.minerva</groupId>
<artifactId>minerva-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>

<name>Minvera Parent</name>
...

The second part contains profile information and where to get dependencies.

  <properties>
    <tycho-version>0.10.0</tycho-version>
    <platform-version-name>helios</platform-version-name>
    <eclipse-site>http://download.eclipse.org/releases/${platform-version-name}</eclipse-site>
    <wikitext-site>http://download.eclipse.org/tools/mylyn/update/weekly</wikitext-site>
    <swtbot-site>http://download.eclipse.org/technology/swtbot/${platform-version-name}/dev-build/update-site</swtbot-site>
  </properties>

  <profiles>
    <profile>
      <id>platform-helios</id>
      <activation>
        <property>
          <name>platform-version-name</name>
          <value>helios</value>
        </property>
      </activation>
      <properties>
        <eclipse-site>http://download.eclipse.org/releases/helios</eclipse-site>
        <platform-version>[3.6,3.7)</platform-version>
        <swtbot-site>http://download.eclipse.org/technology/swtbot/helios/dev-build/update-site</swtbot-site>
      </properties>
    </profile>
    <profile>
      <id>platform-indigo</id>
      <activation>
        <property>
          <name>platform-version-name</name>
          <value>indigo</value>
        </property>
      </activation>
      <properties>
        <eclipse-site>http://download.eclipse.org/releases/indigo</eclipse-site>
        <platform-version>[3.7,3.8)</platform-version>
        <swtbot-site>http://download.eclipse.org/technology/swtbot/indigo/dev-build/update-site</swtbot-site>
      </properties>
    </profile>
  </profiles>
...
  <repositories>
    <repository>
      <id>helios</id>
      <layout>p2</layout>
      <url>${eclipse-site}</url>
    </repository>
    <repository>
      <id>swtbot</id>
      <layout>p2</layout>
      <url>${swtbot-site}</url>
    </repository>
    <repository>
      <id>wikitext</id>
      <layout>p2</layout>
      <url>${wikitext-site}</url>
    </repository>
  </repositories>

What’s cool about setting up these repositories and profiles is that we can easily switch the build to run against Helios or Indigo repositories. If you want to run Indigo, simply set -Dplatform-version-name=indigo and you’re good to go. You could even setup multiple hudson jobs that build against various Eclipse releases if you want to ensure everything works properly.

The third part lists the modules (e.g., features, plug-ins) that are part of the build:

  <modules>
    <module>org.aniszczyk.minerva.core</module>
    <module>org.aniszczyk.minerva.ui</module>

    <module>org.aniszczyk.minerva-feature</module>
    <module>org.aniszczyk.minerva.source-feature</module>

    <module>org.aniszczyk.minerva-updatesite</module>

    <module>org.aniszczyk.minerva.tests.core</module>
    <module>org.aniszczyk.minerva.tests.ui</module>
   </modules>

Each of those modules has a simple pom.xml that tells Tycho what type of project it is (think feature or plug-in). You should be able to piece things together by looking at the documentation on the wiki. Let me know if you have any questions and please feel free to add anything. My plan is eventually to get things up to shape so the code could live at eclipse.org and get things up to a point where a Maven archetype could be built and used to generate new projects.

Thoughts? Also, if you’re an eclipse.org project and interested in moving to Tycho, feel free to contact me and look at the example.