Eclipse SDK's Greatest Hits:
The First Ten Years

John Arthorne
March, 2012

Disclaimer

Source: http://www.flickr.com/photos/cara_vsangel/

What we're going to look at

Workspace tree representation

It's ElementTree my dear Watson, ElementTree
ElementTree.java, line 75

ElementTree motivation

Data flow

Additional observations

Representing two tree states

Representing tree states as deltas

More details

Lessons learned

Incremental Java build

Conducts a trial on a single compilation unit. Returns true if the unit is guilty. The sentence is compilation without possibility of parole.
IncrementalImageBuilder.java v_146, line 1570

Starting assumptions

Source: Bill Gracey

Eclipse 1.0 Java builder

Revisiting assumptions

Builder 2.0

Lessons learned

RCP refactoring

Performs arbitrary actions when the event loop crashes.
WorkbenchAdvisor.java, line 297

RCP history

RCP refactoring

Policy vs mechanism

Mechanism Policy
Error handling Show error dialog, log, exit
Menus What menus appear, what do they contain
Toolbars Decide what commands appear in toolbar
Default perspective Select default perspective
Startup Restore settings, welcome screen, login
Window trim Progress, status line, title

Workbench advisor

Many ways to add policy

Mechanism Arity User Control App Control Plugin Control
Extension points Many No Transforms Yes
Services Many No No Yes
Preferences Many Maybe Yes Yes
System prop One Yes Yes Yes
Advisor One No Yes No

Lessons learned

Command framework

Okay. Have a seat. Relax a while. This is going to be a bumpy ride.
WidgetMethodHandler.java, line 81

Key bindings history

Challenges

Command framework

Lessons learned

p2 resolver

The fix is to avoid the workaround.
Control.java (Motif), 4076

p2 Background

Observations

Boolean satisfaction problem

1: x & !y
2: x | y

Solution: x=true, y=false

Mapping install to SAT (Projector)

a := Plugin A 1.0 - requires B [1.0,2.0)
b := Plugin B 1.0
c := Plugin B 1.1

1: (a & b) | (a & c)
2: (b & !c) | (!b & c)

Solution: a=true, b=false, c=true

Lessons learned

Thank you