Much ado about scripting, Linux & Eclipse: card subject to change

Showing posts with label bugzilla. Show all posts
Showing posts with label bugzilla. Show all posts

2010-06-30

Update Site Aggregation: B3 vs. Tycho

Last year, I used to aggregate update sites with the Buckminster Aggregator, but since that won't install into Eclipse 3.6 (Helios), I had to migrate to the B3 Aggregator. This new version of the Aggregator is greatly expanded and worked fine until recently, when it has begun to suffer from a rather nasty p2 problem: instead of the Director just installing the aggregator into an Eclipse instance prior to then running the aggregation, I get "The copies of profile SDKProfile are not in sync," and the whole process dies. http://www.blogger.com/img/blank.gif

So, in order to find a workaround, I went back to Tycho, and discovered you can merge update sites with little more than two simple files:

  • a site.xml, which lists the features to aggregate and how to categorize them, and
  • a pom.xml to list the source sites and drive the aggregation.

Unfortunately the Tycho solution doesn't include the ability to add associate sites to the metadata after generation, but that can simply be done as a downstream step (Tycho can call Ant using the maven-antrun-plugin).

2010-02-18

p2 Repository Association And The Fine Art Of Forceably Enabling Disabled Sites

This week I've spent some time exploring how to associate p2 repo sites with other sites. The reason for this is that we publish features which depend on other publishers' features, and so would like to be able to have our update site automatically enable sites on which we depend in the end user's Eclipse.

The first attempt to do this was by using p2.inf files. Based on examples on blogs and in newsgroups, I added this p2.inf file into our BIRT Integration feature:

instructions.configure=addRepository(location:http${#58}//download.eclipse.org/releases/galileo/,type:0,name:Eclipse Galileo,enabled:true); \
   addRepository(location:http${#58}//download.eclipse.org/releases/galileo/,type:1,name:Eclipse Galileo,enabled:true); \
   addRepository(location:http${#58}//download.eclipse.org/eclipse/updates/3.5/,type:0,name:Eclipse 3.5,enabled:true); \
   addRepository(location:http${#58}//download.eclipse.org/eclipse/updates/3.5/,type:1,name:Eclipse 3.5,enabled:true); \
   addRepository(location:http${#58}//download.eclipse.org/birt/update-site/2.5/,type:0,name:BIRT 2.5,enabled:true); \
   addRepository(location:http${#58}//download.eclipse.org/birt/update-site/2.5/,type:1,name:BIRT 2.5,enabled:true);
Unfortunately, this didn't work - I got this error while building:

 java.lang.IllegalArgumentException: No action found for: addRepository.

So, hoping that using a fully-qualified name for the action would help, I tried this:

instructions.configure=org.eclipse.equinox.p2.touchpoint.eclipse.addRepository(location:http${#58}//download.eclipse.org/releases/galileo/,type:0,name:Eclipse Galileo,enabled:true); \
   org.eclipse.equinox.p2.touchpoint.eclipse.addRepository(location:http${#58}//download.eclipse.org/releases/galileo/,type:1,name:Eclipse Galileo,enabled:true); \
   org.eclipse.equinox.p2.touchpoint.eclipse.addRepository(location:http${#58}//download.eclipse.org/eclipse/updates/3.5/,type:0,name:Eclipse 3.5,enabled:true); \
   org.eclipse.equinox.p2.touchpoint.eclipse.addRepository(location:http${#58}//download.eclipse.org/eclipse/updates/3.5/,type:1,name:Eclipse 3.5,enabled:true); \
   org.eclipse.equinox.p2.touchpoint.eclipse.addRepository(location:http${#58}//download.eclipse.org/birt/update-site/2.5/,type:0,name:BIRT 2.5,enabled:true); \
   org.eclipse.equinox.p2.touchpoint.eclipse.addRepository(location:http${#58}//download.eclipse.org/birt/update-site/2.5/,type:1,name:BIRT 2.5,enabled:true);

Success! The build no longer complained. Of course I wasn't getting any associate sites enabled when I added the new repo into Eclipse. Why, I wondered?

Thankfully, I was told that the now-deprecated Metadata Generator (org.eclipse.equinox.p2.metadata.generator.EclipseGenerator) doesn't support p2.inf files, so it was finally time to switch to Eclipse 3.5's Update Site Publisher (org.eclipse.equinox.p2.publisher.UpdateSitePublisher), which can be run like this as a drop-in replacement for the above application:

<echo>Run p2.publisher.UpdateSitePublisher using launcherjar = @{launcherjar}</echo>
<java jar="@{launcherjar}"
      fork="true" timeout="10800000"
      jvm="${java.home}/bin/java"
      failonerror="false" maxmemory="256m" taskname="p2">
 <classpath>
  <fileset dir="${builder.build.path}/plugins"
           includes="org.eclipse.equinox.launcher_*.jar, org.eclipse.equinox.p2.publisher_*.jar, org.eclipse.equinox.p2.updatesite_*.jar"
  />
  <fileset dir="${clean.eclipse.home}/plugins"
           includes="org.eclipse.equinox.launcher_*.jar, org.eclipse.equinox.p2.publisher_*.jar, org.eclipse.equinox.p2.updatesite_*.jar"
  />
  <pathelement location="${builder.build.path}/plugins" />
  <pathelement location="${clean.eclipse.home}/plugins" />
 </classpath>
 <arg line=" org.eclipse.equinox.launcher.Main -application org.eclipse.equinox.p2.publisher.UpdateSitePublisher" />
 <arg line=" -metadataRepository file:${updateSiteJarDir}/ -metadataRepositoryName "${update.site.product.name} ${update.site.description} Update Site"" />
 <arg line=" -artifactRepository file:${updateSiteJarDir}/ -artifactRepositoryName "${update.site.product.name} ${update.site.description} Artifacts"" />
 <arg line=" -source ${updateSiteJarDir}/" />
 <arg line=" -compress -publishArtifacts -reusePack200Files -configs *,*,*" />
</java>

Having switched out the deprecated app for its successor, I then discovered that using the instructions.configure touchpoint was way too late in the process to be of any use; this information is only used when you install the feature, not when you poll the repo for metadata. So to add the BIRT 2.5 update site I'd have to install the BIRT integration feature... which depends on the BIRT 2.5 site. I needed to inject this requirement in at an earlier point in the process.

So, the next step was to hit up #equinox-dev and ask for help, which I got from Pascal "LeNettoyeur" Rapicault, fellow IBM alumnus. He suggested that I append into the content.xml file in my repo the following information. Note that type 0 and 1 represent metadata repo and artifact repo, and options=1 or 0 is used to mark the site enabled or disabled.

  <references size='2'>
    <repository uri='http://download.eclipse.org/birt/update-site/2.5/'
url='http://download.eclipse.org/birt/update-site/2.5/' type='0' options='1'/>
    <repository uri='http://download.eclipse.org/birt/update-site/2.5/'
url='http://download.eclipse.org/birt/update-site/2.5/' type='1' options='1'/>
  </references>
</repository>

Success, I again thought, since the associated sites were finally being added and enabled into Eclipse when the repo was scanned for metadata. I even scripted this process so that it could be integrated into our build process, or simply reused, eg., to merge two update sites and add some associate site for optional feature installs.

But alas, every step forward brings another step backward, as I discovered that available but disabled sites are NOT enabled despite the instructions in the repo. In other words, I cannot force an existing, yet disabled site to become enabled because my repo requires it. I can only document the requirement and hope that users will RTFM without getting too annoyed.

So, what's the solution? Well, there currently isn't one. But if this scenario seems like something you'd like to see improved, please cast your votes & comments in one of these bugs:

2009-10-13

Dash Athena News, Oct 2009

Have you heard the latest? Here's what's been going on in the Dash Athena project lately.

Infrastructure Changes

  • There are now 43 Athena jobs on build.eclipse.org! Of those, 30 are green, 1 is yellow, and 6 have not yet been enabled. These jobs represent 29 different projects' builds! 6 of them use SVN sources instead of CVS.

  • bug 257074 comment 12 build.eclipse.org now has SVN 1.6.5; if your map files no longer work (your build complains it can't resolve plugin or features sources) then read this.

New Features

  • bug 291446 Provide hook for extra actions after fetching code from repo and before compiling it (e.g. code generation, parser generators, etc.)

  • bug 275529 Athena is now a full Project rather than a Component! Now if we could just get someone to design a logo... Do I need to offer up prizes? I will, if you comment on bug 272723 with some design ideas (or prize ideas).

Better Documentation

See also Older New & Noteworthy.

2009-05-20

Use Your Metadata, Vol. 1

It's been a bad week for update sites and Galileo contribution from Modeling... and I confess I'm partly to blame. That and the fact that despite documenting processes, workarounds, tips, tricks, and advice... no one Reads The Fine Mediawiki (Category:Releng or Modeling Project Releng).

Highlights:

  1. The mysterious appearance of a new version of org.eclipse.osgi_*.jar in releng.basebuilder's R35_M5 tag, which caused an ant <copy/> used to rename a file to fail because copy can't merge two jars into one file. Still no idea why an old basebuilder tag would magically grow a new jars, but I've worked around the now-faulty assumption w/ smarter Ant code.
  2. A change to the way our sites are created, in an attempt to workaround what I believe (but can't yet prove) is a flaw in the way content.xml is produced - namely, if the xml file is > 21M, it gets truncated or corrupted. We used to cache 2 or 3 releases of a given project (eg., M5 and M6) on the same site, in order to give people a way to "back up" to the previous release; now, you only get the latest (bug 271486). I confess I screwed up here and instead of replacing a folder with new contents, I was copying INTO that folder - `cp -r one two` resulted in folder one/two/ instead of two/. I fixed that by changing to a move instead of a copy, but a downstream process failed because of the assumption that both one/ and two/ would exist. The lessons here are: a) shotgun debugging sucks, and b) don't change the way stuff is created after M7.
  3. People publishing two updates to a site at the same time, resulting in the appearance of two </site> tags in a site.xml file, causing p2 metadata generation to be incomplete or fail entirely; unfortunately, no error is logged when this happens so it's rather difficult to decipher the tea leaves. This may be the real source of the metadata corruption, if not the "file is too big" issue above.
  4. Observations about obsolete jars corrupting metadata, but no one taking it upon themselves to clean up the site or do some troubleshooting
  5. People inconsistently naming their milestones (it's 2.0.0M7, not just M7!) and corrupting our Release Notes database. This one amazes me the most since it takes seconds to see what was done last time (check any of the following: RSS feeds, release notes, downloads pages, update sites) and follow suit. And, of course, the conventions are documented, along with the rationale (consistent patterns == simpler code).

Or, to put it another way...

Sick of this life
Not that you'd care
I'm not the only one with
whom these feelings I share

Nobody understands
Quite why we're here
We're searchin' for answers
That never appear

But maybe if I looked real hard I'd
I'd see your tryin' too
To understand this life,
That we're all goin' through

Sometimes I feel like I'm beatin' a dead horse
And I don't know why you'd be bringin' me down
I'd like to think that your love's
Worth a tad more
It may sound funny but you'd think by now
I'd be smilin'
I guess some things never change
Never change

So, please, can we stop opening bugs (277172, 277105, 277034, 276928, 276641) and just use the tools and docs already available?

2009-01-02

Clarifying Our All-In-Ones

In order to make it clearer what's in the various flavours of all-in-one zips provided in Modeling, GEF, and PDT, I've concocted some new icons to better differentiate them.

Image

This is actually moving in the opposite direction from what I'd proposed in bug 240223 regarding Simplified EMF Downloads as we're now providing more, not less... but IMHO that's okay as long as the community is well served. If you have an opinion on update site vs. update zips vs. SDK zips vs. EPP bundles, please feel free to weigh in on bug 240223.

And if you hate the new icons, please let me know. Better still, design me a replacement. Thanks to iconeden.com for the source pixels.

2008-12-03

phpeclipse vs. PDT, Part 3

Well, I may be no closer to having my top ten enhancement requests fixed in PDT 2.0, but on the plus side...

In other news, PHPEclipse 1.2.1 just came out...

2008-11-02

Request For Comment: The End Of SDO?

Four months ago, I started a discussion about simplifying the EMF download experience. Consensus appears to be that we should keep the EMF-SDO-XSD "All-in-one" SDK zip, perhaps more.

Now, a new proposal is in the works: removing SDO from the EMF build, and from this year's coordinated release, Galileo. The source would still be in CVS, but we'd stop providing SDO binaries. This would also mean the much-loved* EMF-SDO-XSD "All-in-one" SDK zip would be renamed to EMF-XSD "All-in-one" SDK, but would otherwise continue as is.

For more on this topic see:

EMF 2.5 - Simplified Downloads (bug 240223)
Remove SDO from Galileo (bug 251402)
Consider improvements to the termination process (bug 249408)

To voice your opinion, please post your feedback in any or all of the three bugs linked above.

Thanks!

2008-10-27

50,000 Zips

Since turning on Google Analytics for tracking Modeling project zips on September 15, we've gotten over 50,000 pageviews (33,000 unique) of the download tracker. While this doesn't necessarily mean every one of those hits resulted in a download, it certainly shows a lot of interest in downloading EMF, UML2, UML2 Tools, GMF, Query, OCL, and XSD, to name but a few of the more than two dozen Modeling Project components.

Image

Unfortunately, this only scratches the surface -- most of our downloads come from EPP bundles and update sites. But thanks to bug 239668, we will one day be able to track downloads done via p2. If download stats interest you, please vote for bug 239668.

2008-09-25

And the plan said...

With everyone's standardized project plans due next week, I've been tasked to draft a consistent workflow for the Modeling projects. And because we're such Model Citizens, I'd like to share it with others, in case this approach works for your project too. See details here.

On that note...

And the plan said usability, motherhood, apple pie
So I shined up my Chrome
Logged into the Bugz and I went in to run a query
It came back with a list of items, too many to possibly do
So I flagged a few, set milestones, and voom!
A plan came into view

woah!

(Chorus)
Plan, plan everywhere a plan
Charting out development, done for The Man
Do this, can't do that, did you read the plan?

And the plan said a lot of these
Have been deferred outta sight
So I looked at those bugs and thought to myself,
Hey! I'll submit a patch tonight
To contribute to this project or to get some new feature in
If God was here, he'd tell you to your face,
Thanks, man you're some kinda winner

Chorus

Now, hey you Mister! Can't you read?
You ain't got to be a committer to get a seat
You can write a patch, or build a new feature,
Ain't supposed to be hard
Plan says anyone can contribute,
Just look for the 'helpwanted' keyword!

And the plan said everybody welcome
Come in, site down and code
But when they passed around the hat
At the end of it all,
I didn't have a buck to unload
So I got me an account with Blogger
And I made up my own little site
I said thank you Eclipse for thinking about me,
I'm alive and you're alright

Chorus x 2

Five Man Electrical Band - Signs

Incidentally, there are over 2500 open 'helpwanted' bugs, with over 1100 closed. Thanks to everyone who's contributed over the years!

2008-07-09

Request For Comment: Will Anyone Miss All Those EMF Zips?

With the advent of p2 and the smaller EMF features introduced in EMF 2.3, the EMF team is evaluating if the All-In-One, Runtime (3), Sourcedoc (3) & Examples Zips are still meaningful and useful to consuming teams, projects, and products. We'd like to reduce those 8 zips down to a single archived update site zip.

Image For more on this topic see:

EMF 2.5 - Simplified Downloads

To voice your opinion (be it 'I need that/those zip(s)!' or 'I'm good with using Update'), please post your feedback in bug 240223.

Thanks!

2008-05-20

p2: The Good, The Bad, The Whiners

After taking a break from reading the Planet this past week, tonight I discovered several p2-bashing posts. Now, I admit, in December I had some less-than-positive things to say about p2, but that was over 5 months ago. It's been evolving rapidly ever since, and has one of the most responsive dev teams I've ever had the pleasure of working with.

Some statistics, to prove my point:

  • 695 resolved Equinox.p2 bugs; 472 open Equinox.p2 bugs. Closure rate: 60%. Given the oldest changed bug is in February, that's over 200 features and work items a month for the past 3 months! (A bug is not always a problem. I use bugs as TODOs, thanks to the wonderful workflow integration provided by Mylyn. But I digress.)
  • Of the 20 Equinox.p2 bugs I've opened; only 5 remain. Closure rate: 75%.
  • Of the 39 Equinox.p2 bugs I've opened, commented on, or am watching; only 8 remain. Closure rate: 80%.
  • Articles in the Eclipse Wiki related to p2: at least 46
  • Time required to go from knowing nothing about p2 metadata to having it enabled for all the Modeling projects' update sites and integrated into automated promote scripts: about 2 hrs
  • (Recently) active committers for the whole Equinox project: 14
  • Lines of code committed in Equinox project in the past year: 378,000
  • Number of commits in Equinox project in the past year: 28,000

Bottom line? Ask (early) and ye shall receive. Wait to complain when there's no time left in the cycle, and ye shall be disappointed. This is open source, people. You get back what you put in.

2008-04-26

Synch View Magic

Earlier this week, I opened bug 228701 asking for Mylyn filtering on the Synch view. (Please vote if you agree.) This afternoon in #eclipse-dev, Eugene pinged to ask why I don't simply use the Change Sets presentation in the Synch view, and Boris chimed in to tell me about bug 143419, "Strange tree rendering in synchronize view". Strange indeed.

I agreed I'd document my experiences with this view, but because Bugzilla is undergoing maintenance at the moment (thanks to our tireless webmasters!) and I want to share it while it's fresh, here's my account of how to make files vanish from the Synch view, though Mylyn continues to track them.

DO try this at home, as magic tricks in Eclipse are rare (e4 demo at EclipseCON with spinning views & scriptable UI elements notwithstanding), and this one's pretty cool.

Steps to reproduce

  1. Install the latest Eclipse 3.4 I build (I've got eclipse-SDK-I20080422-0800-linux-gtk.tar.gz.)
  2. Install Mylyn from its update site (mylyn-2.3.2-e3.4.zip).
    DO NOT unpack it first, just give the URL to Eclipse's new p2 / Install Manager or download the zip and hand it that. If you unpack it first, p2 doesn't seem to know how to find the features therein. But I digress...

    Image

  3. Check out some CVS project into your workspace. I used :ext:[email protected]:/cvsroot/modeling/org.eclipse.emf/org.eclipse.emf.releng, from HEAD.
  4. Open Mylyn's Task List view (Shift-Alt-Q, Q). Create a new Local Task or open an existing Bugzilla task. Enable the task.
  5. Unfilter the Package Explorer view.
    This is one of my *very* few complaints about Mylyn -- I'm starting a new task w/ no context, yet it insists on filtering my view to show me my non-existent context, so I can't start selecting files on which to work until I unfilter the view. But I digress again...
  6. Open the Synchronize View (Shift-Alt-Q, Y).
  7. Configure the view as shown below:

    Image Image Image Image Image

  8. Image In the Synchronize view, select the Change Sets presentation (the toolbar icon that looks like a file tree).
  9. Image Create a new Synchronization. Type CVS, Resources to synch: Workspace. Hit Finish.
  10. Open some files in the Package Explorer view, and edit them. Watch as they appear in the Synch view as items under your Change Set (ie., as changes for your Local or Bugzilla Task)
    It would be nice if the Change Set title included the bug number, or could be configured the same way that commit comments can be. Not crucial, just a handy enhancement. For now, the task's title is sufficient.
  11. Pick some file in the CVS-backed project and copy it within the same folder. Notice how it appears in the Synch view as an outgoing addition.

    Image



  12. Here's where the magic trick starts. Made sure your audience is still awake.

  13. Disable your Task.
  14. Copy some file (could be the same one as before, or a new one -- doesn't matter as long as it's in a CVS-backed project. The new file will appear in the Synchronize view under a new <Unassigned> Change Set.

    Image

  15. Re-enable your Task.
  16. In the synch view, select the new file from under the <Unassigned> Change Set.
  17. As you select the file, it will be added to Mylyn's context for that task, and appear in the filtered Package Explorer. Note however that it didn't change from the <Unassigned> Change Set to your Task's change set. So begins the magic.

    Image

  18. Image In the Synchronize view, select the Workspace presentation (the toolbar icon that looks like a file tree).
  19. When you expand the tree, you'll see that your new file does appear as you'd expect. This tree should mirror what's in the Package Explorer (as in previous screenshot).

    Image

  20. Image Switch back to the Change Sets presentation, and get ready for your exit with flourish.

    Image

  21. Lo, that new file has vanished!

Image

Image from Happy Tree Friends - I Get a Trick Out of You.
Courtesy of Mondo Media / YouTube. Used without permission.

2008-03-26

p2: Planned Parenthood (v3)

Image P2 is ready to drop this week.

And, like a human birth, it seemed like a great idea 9 months ago, has started to cause some pain and annoyance to its parents (the p2 developers) and relatives (the early adopters in the community), and comes with much excitement & some trepidation. (And some bugs.) I kid. ;)

Bear in there, though. As with human births, people will remember not the pain of birth, but the years of joy to come.

What's that you say? How can you help? Download the latest good Eclipse platform w/ p2, try it out, and report your successes/problems. Documentation from the newbie/end-user experience & related testing is (IMHO) urgently needed. If you configure your plugins with .eclipseextensions (eg., Update Manager) or .link files, just unpack zips or use some other approach, try p2 and see if the new dropins folder format or installer work for your usecase. Note also this patch, should you encounter a similar glitch.

Meanwhile, p2's proud parents have already started working on the nursery pending their new arrival: there' already a lot of documentation out there for you to explore.

People, don't blog when sick, tired, and under the gun to deliver 8 project builds. You risk being misread, as I clearly have. Apologies to those that saw and didn't appreciate the previous edits of this post.

2008-01-16

Personal Changelog

To kick off a new blog series on change and change accessories, I'd like to start with a bit of self-promotion about a great bit of system integration that would not have been possible without the Magic of Co-Op StudentsTM. Anyone who's been to the Eclipse Modeling Project's websites has probably seen how we generate release notes per build/release and per-bug deltas & patches. And as I've shamelessly promoted this a number of times in numerous bugzillae, it seems fitting to use a song we've most likely all heard before...

Reach out and touch change

Your own personal Changelog
Something that's accountable
Something able
Your own personal Changelog
Something for forensics
Something that's sick

Hist'ry unknown?
But you're not alone
Commits you own
Bugs that you have pwned
Load your web retriever
It'll make you a believer, oh

Search CVS
Put it the test
Well, it's not Jazz
But it's still real snazz
It will deliver
You know truth's a forgiver, oh

Reach out and track change [x2]

Your own personal Changelog
Something to show off your skillz
Your tricks and your spills
Your own personal Changelog
Something to show you're 1337
(And) don't miss a beat

Reach out, audit change

With hist'ry known
Your devs will come home
Flesh and bone
See what they have pwned
Load your web receiver
It'll make you a believer, oh
It will deliver
The truth's a forgiver, oh

Reach out and watch change

Your own personal Changelog

Reach out and touch change [x5]

Marilyn Manson (Depeche Mode cover) - Personal Jesus

2007-12-06

The system is... up!

Transient error messages are like fireflies. Caught these tonight, but they'd been squashed before I could stick a pin in them and add them to my collection.

Image
Eclipsepedia has a problem

Image
Software error

2007-11-09

403'd

Image
Error 403: Access Forbidden!

2007-09-28

EuroFM is on the air!

Europa Fall Maintenance is out today, so in tribute...

(Ctrl-) Space Down

Hey Eclipse you know you drive me crazy.
Ctrl-3 puts the rhythm in my hand.
Still I'll never understand how you can do so much
Plugins, features and such
Install Europa bundles from a mirror
Tell yourself it's so gonna rock your world again
You fire it up and then you swear a little

Do you feel like a geek
When you push its buttons?
Do you feel better now Ctrl-Space'ing a ton?
Well I'll tell you my friend no way this world's going to end
IDEs crumble down, they're eclipsed by this one

A pebble in the water makes a ripple effect
Every action in this world will bear a consequence
If you code by hand forever you will surely drown
I see what's goin' down.
Don't be a fool and use vi, emacs or notepad,
Startin' from scratch again,
Heed my lecture

Do you feel like a geek
When you push its buttons?
Do you feel better now Ctrl-Space'ing a ton?
Well I'll tell you my friend no way this world's going to end
IDEs crumble down, they're eclipsed by this one

In June '08 when we've all had enough,
Time for the Gany train!
[x2]

Do you feel like a geek
When you push its buttons?
Do you feel better now Ctrl-Space'ing a ton?
Well I'll tell you my friend no way this world's going to end
IDEs crumble down, they're eclipsed by this one

Downloadin' the code, she said, 'The mother lode!'
She said, I've finally found the best!
[x2]

Red Jumpsuit Aparatus - Face Down

10,000 Hits

Europa!
Europa!

One more download, yay! I know what I want
And my want will be an upgrade all right, an upgrade all right
Just another day when all that I want
Will mark me as an Eclipser tonight, an Eclipse geek tonight, yeah

[Chorus]
Jupiter's moons that can block out the Sun
If this disturbs you then walk away
You will remember: use -vmargs and -vm
10,000 Googlin' away!

Plug-ins un-restrained, dead on the mark
Is what we will deliver tonight, deliver tonight
"Features suck," they say, "but Update finally works!"
With even plugins tonight? Yes, even plugins tonight. Yeah!

[Chorus]

We are the ones that will open your mind
Leave the weak and the NetBeans behind
[x4]

[Chorus]

10,000 Googlin' away! 10,000 reqs per half-day!

Disturbed - Ten Thousand Fists

2007-09-12

Compare Different

In my role as the weekend webmaster for Rainbow Cinemas, I have on occasion the need to compare local and remote (ftp or ssh) files between my staging server and the production website; I also have to compare files between my local Eclipse projects and my local CVS repo, to see why and when changes were made.

So, what do I use? Well, I run KDE on my MEPIS box, so I've set up Konqueror profiles for the various admin tasks I need to do. For the web, I split a Konq window into four panes and can drag/drop files between local and remote, and also compare local and remote versions of the site.

Image

When diffing files, I use Beyond Compare 2 (or Cirrus, their new beta), and have quite enjoyed it since the dark ages (circa Eclipse 3.0) when I first joined the IBM Toronto Lab (which isn't in Toronto anymore, but I digress). It's my not-so-secret weapon for releng work, web work, java work, ... really, everything. BC supports comparing/synching from local to a remote FTP site, but in most cases I find it slow as it has to download all the remote files, compare them to the local ones, and update the view. It's handy for single file compares or small folder compares, but doing entire trees requires a lot of patience as it builds the diff tree. So, more often than not, I just use Konqueror for swapping files back and forth, since its ftp and fish ioslaves rock. (This is perhaps the biggest reason I won't change to another wm like gnome or xfce.)

I can be pretty jaded sometimes when it comes to trying new software, especially if I've grown happy and complacent using a set of tools that I find work well. Switching to something new doesn't necessarily mean finding something better; often it just means time wasted and functionality lost.

While it's cool to use a mix of tools, sometimes it's nice when you can do everything in a single IDE. So, to that end, this past weekend I started playing with DSDP's Target Management (TM) offering. Very cool. It doesn't do folder compares yet, though there's been some talk about how that could be implemented either at the Eclipse Compare level or at the DSDP-TM level. I like being able to finally browse remote files within an Eclipse view (rather than in Konq or Konsole), but the absence of folder-to-folder comparison makes TM a bit of a non-starter for me, so far.

So, to that end, I opened bug 203001 to see if folder compares were possible, and now I'm realizing that it's both not a trivial thing to implement and also introduces some philosophical questions about "derivative work", "ethical competetion", "changing your business model" and "reinventing the wheel".

If there's a commercial piece of software, like Beyond Compare, with a superior (IMHO) diff engine, should they be persuaded to contribute to Eclipse? The current version of BC can be launched from inside Eclipse using Beyond CVS, and it does the job when Eclipse's internal compare isn't enough. But it's not a plugin, nor does it integrate into the IDE. It also requires WINE, but this is being addressed in Cirrus (BC3), with a linux-friendly qt version.

But should Scooter provide their code to Eclipse, and potentially lose customers in order to make Eclipse's Compare better?

If they did, they could grow their market share and get some good PR, but they wouldn't sell licenses. They could instead switch to a donation/swag model, I suppose.

Or they could sell a standalone RCP app version with just their compare stuff in it, so people could choose between the free integrated-in-Eclipse version and the paid standalone version. Problem is, integrated in Eclipse is much more useful IMHO so I'd think that would be a non-starter too.

What would you do, if you were were Scooter?

Conversely, if you were a committer for Eclipse Compare or DSDP-TM, how much functionality in BC would you attempt to recreate, given that you're reinventing the wheel, and that by giving it away for free you're taking business from a small company who's been in the biz of compare for years. I mean, sure, it would be great if all the functionality of BC was in Eclipse so that IBM could build on it and sell product based on it, but personally I'd feel a very dirty if by opening a feature request against DSDP-TM / Eclipse Compare I was helping IBM make money at the expense of all the good work Scooter has done over the years to make my life (and my job at IBM) so much easier.

Me, I'd just like to see a way to hook in different compare engines (eg., via a plugin like Beyond CVS), but is doing the work to allow what's in Eclipse Compare to be replaced by something else in Eclipse's best interest?

Yes, there'll always be competition in the marketplace, but how does a community like Eclipse compete ethically in a situation like this? And if open source is about enabling business to succeed faster/better/smarter/whatever (among other motivations), how do small companies survive if their product gets replaced by a free open source alternative? Does anyone have experience with their product being "Eclipsed" by something free?

Blogged with Flock

2007-08-27

Notes 8: Part 3: M'aidez!

After much digging and hacking I've found a number of places to go for help with the newest Notes offering. That's the good news. Usability score: +1

The bad news is that if you're like me and used to tracking bugs a la Eclipse Bugzilla or Sourceforge, you will be sorely disappointed with the options for bug reporting for Notes 8. Usability score: -1

I hate to bite the Big Blue hand that feeds, but there are much more efficient tools & processes to manage software development than the use of a discussion forum. Sure, it's a case of eating your own cooking +1, but I've used lots of Notes databases in my 8 years with IBM that were more user-friendly than this -1. Why is using Bugzilla (or sourceforge's tracker) such a big deal?

Well, for one thing, they're transparent, open source systems. For another, using a system like Bugzilla provides consistency across dev teams. Notes 8 is proudly 'built on Eclipse' +1 but hasn't adopted the Eclipse Way yet for issue tracking, so developers that work both sides of the fence (like myself) have to learn more than one system and in some cases, report issues in more than one place -1. So much for the mantra of 'do more with less'.

Anyway, here's a couple places to go for help, which it turns out are all linked from within Notes 8 itself under the Help menu (unless you're on the Getting Started page or a web browser tab, in which case they magically disappear) +1 -1.

  • Notes/Domino 8 Support Forum

    Well trafficked, but a bit of a pain to use -- cannot attach screenshots or log files without the use of some free service like imagebin.ca or pastebin.ca; cannot view an entire expanded thread in one page; follow-ups may be posted anonymously (as far as company name goes, anyway) so there's no enforced accountability; 4 different ways to search for my posts (only two produce results, albeit differently) +1 -4

  • Product Feedback Form

    This form proudly states "We value and review all comments, but cannot respond directly to them." +1 -1

Here's a few handy blogs +3:

Now, just in case it's perceived that I'm actively trying to embarrass or offend, I'm not. Let me clarify:

  • I blog to talk about things I like and things that bug me, with hopefully some balance between the two. By showing the things that bug me, it's my hope that those annoyances will be fixed, or that someone will share a hack / workaround, or prove me wrong. By talking about the things I like, I hope to encourage others to try those technologies or use a hack I've worked out. I'm a tester by nature, and I want software to work well. Think of me as the Penny Arcade of usability nerds, without the advertising, merch, comics, and clever dialogue. Oh, and the shipments of free software. And the write-ups in Wired. And 7-figure income. Yep, just like 'em.
  • I've signed up to be a Usability Tester for Lotus. Time will tell what that means.
  • And, as it's better than a boot to the head, I plan to hang out in the forum and try to help out as best I can. Of course this will also yield some of my own bug reports discussion topics from time to time, but it's all about balance.

As always, the contents of this site are my own and don't necessarily represent IBM's positions, strategies or opinions.

2007-08-17

phpeclipse vs. PDT, Part 2 [Update 2]

As I mentioned in Part 1 I've been a phpeclipse user for a couple years and have loved it, but have recently switched to PDT.

I'm happy to report that in the last month the PDT folks have closed 3 of the 6 bugs I opened back on 2007/07/23. Kudos to the team for their responsiveness!

In order to encourage more PHP developers to vote for some of these bugs (and to prove that the squeaky wheel does in fact get greased if you write a cogent enough bug report!), here's the top ten enhancements I'd like to see added to PDT:

  • [197565] FIXED: NPE thrown when using PHP Explorer Working Sets in Package Explorer
  • [197572] FIXED: PHP/Script Explorer: keybinding conflict - ALT+SHIFT+Q, P
  • [197579] FIXED: Window > Preferences > PHP > Debug will break if an invalid server config is entered and cannot be fixed
  • [166178] FIXED in PDT 2.0: Provide "mark occurences" action
  • [162771] Detect undefined variables as warnings (already in phpeclipse)
  • [169062] Code completion for file paths in include()/require() (already in phpeclipse)
  • [161760] [Usability] UI to add PDT nature to existing Eclipse projects
  • [197573] [Configurability] Use smaller features (eg., split debug feature from runtime)
  • [197490] [Reuse] Question: Use outline view provided by the Eclipse Platform?
  • [197581] [Simplify?] Question: All-In-One tar.gz contains lots of extra features vs. Update Site?

UPDATE, 2008/05/22: none of the above 7 pending bugs are closed, though one got marked as a dupe of another open bug, so I've updated the number. Nine months later, no closer to closing my top ten list -- so much for the squeaky wheel theory. Hopefully PDT 1.1 2.0's release in September December 2008 will include a few of these.

UPDATE, 2008/09/12: one more bug closed. PDT 1.1 is now 2.0, and the schedule's been pushed back a bit to accommodate all the new stuff they've been adding into it. Coming soon -- new web, metadata and releng content!