What's in a Package?
Christian W. Damus
There has been some interesting discussion on the cross-project issues mailing list at Eclipse in the last few days, about the Eclipse download packages. There are numerous questions, concerns, assumptions, and opinions about the number, size, utility, and public perception of these packages.
Indeed, this discussion has even spawned its own mailing list for Eclipse-as-an-IDE, which is something that hasn't happened very often in my memory.
Raised in the discussion were a few familiar Eclipse-isms:
- the P2 UI for software install/update
- the Eclipse Marketplace UI for discovery of a wide variety of plug-ins
- "activities" (or "capabilities") for reducing the complexity of the UI
In some ways, these concepts are complimentary as they all serve discrete and useful functions very well:
- P2 is great for updating the plug-ins I have to the latest version
- Marketplace is greating for finding stuff I thought I could use but didn't know where to point P2 at
- capabilities are great for keeping my menus sane while still making functions available when it appears that I need them
But, what if we could combine all of these concepts into one? I would like to have an Eclipse IDE that expands itself as I need it to. It would start with a minimal download, like the Eclipse for Java Developers or even a new bare-bones Eclipse workbench that doesn't even have JDT installed. Then the process is a matter of progressive discovery of functionality and software.
The first thing I need to do when I start working with this bare-bones installation is to create a project, because that's where we do our work in Eclipse. This is where the blend of capabilities and Marketplace discovery starts: just because no tooling plug-ins are installed, that doesn't mean that Eclipse shows me an empty list of New Project wizards. It shows me the wizards for projects that Eclipse will know how to create once it has installed the necessary plug-ins. This is similar to the Show All
option today that lets one see wizards from inactive capabilities, but it's more powerful because it knows about wizards that aren't even installed.
So, let's say that I need to do some generation of Lua code from models. The New Acceleo Project wizard in a Modeling category is there for me to pick. I pick it and press Next
.
What have I just done? I've discovered something that Eclipse can do for me, that it can't do yet but knows that it can install some plug-ins to provide. There's no need to jump into some other UI to hunt for software from who-knows-where that I may or may not know is the right stuff. I just press OK to tell Eclipse
"Yes, I want to create an Acceleo project now."
and Eclipse responds by telling me
"OK, I can do that, but let me download some plug-ins first."
Great! After a bit, the Acceleo plug-ins are installed, I finish the wizard to create my project, and I get down to work. Just like that.
The nature of dependencies, of course, also means that a bunch of other modeling and development functions (EMF, OCL, JDT) are now installed and readily available.
Bit by bit, I can now discover the vast wealth of excellent tools that the Eclipse community offers but seems to be hidden in some impenetrable wilderness, as my Eclipse grows itself in response to my needs.
Pipe dream? Delusion? Impractical? Infeasible? Maybe, but I might like it.
And so might my cat.