First look at open source IntelliJ
- over 20k java source files, totalling just over 2M lines
- over 150 jar files
- over 500 xml files
- build system based on ant, gant, and a library called jps for running intellij builds for which the source apparently is not available yet (see IDEA-25160)
- Apache license header applied to most of the files, copyrights both jetbrains and a variety of individuals, license data not quite complete, no NOTICE.txt (see IDEA-25161)
- ./platform is the core system
- ./plugins plug into the core platform
- ./java and ./xml are bigger plugin-collection-ish subsystems
- Install ant (there is an ant in ./lib/ant)
- Run ant
- Build takes about 7 minutes on my macbook
cd /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/bin sudo bash mv java java.orig lipo java -remove x86_64 -output java_x32 ln -s java_32 java cd - export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home export PATH=$JAVA_HOME/bin:$PATH rm -Rf out ant cd out/artifacts unzip ideaIC-90.SNAPSHOT.mac.zip open ./Maia-IC-90.SNAPSHOT.app
Loading the idea source code into your just-built ide works seemlessly (just navigate to your git repo, an intellij project is already set up in the .idea directory.
Reading the code
MainImpl to invoke
IdeaApplication.run(). We’re in IntelliJ OpenAPI land now. Somewhere further down the call stack something creates an
ApplicationImpl which uses PicoContainer. w00t! That makes much more sense to me than the heavyweight OSGi/equinox that’s underpinning eclipse. Its where plugins and extensions get loaded, after which things become very fluid and multi-threaded and harder to follow.
So now I’m thinking I should find a way to hook up IntelliJ into a debugger inside another IntelliJ…though it’d be cool if intellij was somehow “self-hosting” in that sense. Here’s hoping the intellij devs will write some how-to-hack docs soon!