The IMP project was created in part to address the need to produce full-featured IDEs for several language research activities at IBM Research, including:
After spending some time investigating the possibility of extending/adapting the JDT, it quickly became apparent that much too much of that code needed significant reworking in order to handle arbitrarily different languages.
Near the same time, Chris Laffra gave a talk on a prototype he had been building called "GUIDE", or the "Universal IDE". He gave a very nice demo that showed some basic IDEs for a few languages including Smalltalk. It was very far from something one could use for serious work, but we had already been thinking along these lines, and Chris proved it could be done in Eclipse. Some of the code Chris wrote still survives in IMP to this day (notably, the LanguageRegistry, and pieces of the UniversalEditor and LPG IDE).
Another driving force was Bob Fuhrer's involvement in prototyping refactorings for the JDT (such as "Introduce Factory" and "Infer Generic Type Arguments"). It quickly became clear that
The potential of meta-tooling and frameworks was becoming more apparent every minute, and existing meta-tooling/IDE frameworks all seemed deficient in one way or another. Thus, the "SAFARI" project was born (later to be renamed "IMP" for obvious reasons).
After a year or so, SAFARI became an open-source project on SourceForge.
In late 2007, the IMP eclipse.org Technology Project project was officially created.
And the rest, as they say, is future.