Dynamic Projects and Minimalistic Workspace Setup in Enterprise Environment

Session Type: 
Standard [25 minutes]

Schedule info


Abstract: We will describe our journey into setting up minimalistic development environment at eBay. Developers tend to include many source projects in their workspaces because they may potentially need to view, debug or otherwise tinker with included source. While viewing and debugging are possible with precompiled project libraries (jars), they don’t allow one to make modifications.

We describe dynamic projects as a way to bridge this gap by allowing developers to include projects in their binary form with an option to convert them to source projects! Like PDE but with regular JDT projects. This can be taken a step further by including only the source files being modified while having the rest of them come from their binary form. This is done by manipulating classpath which can elegantly be handled using custom classpath container.

With the dynamic projects, as much of the code is brought as binary, we run the risk of not caching the compilation issues due to source changes that affect their dependent binaries. We describe technique used to detect such binary compatibility breakage that would have gotten caught if those elements where coming as source.

Developers tend to import or create all the source projects they need before hand and compile and build everything even if they don’t edit it. There is a reason why they do that. They want to see the source, put break points, run individually, basically they want to play around with it a little bit.. This is exactly what dynamic projects enable them with i.e. cater all the facilities of a source project without the overhead of compilation. As we all know nothing comes for free, we need to build the binary and source jars for these projects and keep them available for using it in the dynamic project. Once the developers decides to edit a file, that’s when we provision the source as real source and compile it.

Let us take it to the next level, Till now we treated the whole project or a jar as a single unit. Why even that? How about we convert only the single file you want to edit. Amazing huh??. That’s what really makes the dynamic projects big. Here we let the developer modify just the files he wants to edit, and the rest of the code comes as binary from the jar files. The whole classpath complexity associated with the above two use cases is being handled inside of a custom classpath container.

Let us try to make it a little more interesting by detecting binary compatibility in this scenario. One of the biggest problems with libraries especially utility libraries is that changes to the API might break the binary compatibility. Earlier, this type of errors were be detected by compiling the consumer source code and if the consumers are binaries. In the worst case if consumers are not recompiled against the changed API,, then these errors will be manifested as run time errors there by breaking the production. Here we are addressing this issue, by detecting the binary compatibility breakage inside of the jars on the fly. Basically as and when user edits it, we signal the user if he breaks an existing consumer with his change.


Woww. Thank you. Sounds good.

Woww. Thank you. Sounds good.

Well, we had our final call

Well, we had our final call tonight... It takes some more days to finalize the program. Then you'll be notified officially

Sure thing. This session is

Sure thing.
This session is not accepted at this moment. So please vote for it too.

OK, Thx a lot. See you in

OK, Thx a lot. See you in November ;-)


I was OOO for a week and

I was OOO for a week and thats the reason for the delay. Sorry about that.

Yes,It works with web

Yes,It works with web projects and for that matter any project with eclipse metadata.

We plan to open source it. But did not get time to really do it. But we shall do it asap.

The takehome for a developer would be the key concepts and how to make use of this approach in their own companies. Infact its not very difficult to do this as this presentation will cover the common issues one shall face and solutions to those. We expect the implementation to go pretty smooth for one who attend this session.

No reply???

No reply???

This talk sound interesting.

This talk sound interesting. I think this is a problem many developers have. Is this a solution with is open source? If so, can you please point to the code? If not, do you focus on the concepts? Does it work with e.g. web projects? What will a attendee take home from this talk?