I’m starting a new project with some new (to me) technologies and finding the start up process – setting up my IDE and build script to play nice together – to be somewhat frustrating. I kept thinking to myself, “Somebody already solved this; wouldn’t it be great if I could grab their project and just start coding?”
My idea is for a directory of Java example projects.1 It would make it easy to search projects by stack: IDE, tools, frameworks, libraries, and app server. Projects would include the minimum to show the integration points. The directory would also have basic social features: a way to vote up projects and a forum for discussing integration, setup, and architecture best practices. This is probably something a CMS expert could tackle fairly easily.
I admit there are a few problems with this idea. People expect to thrash around during project startup. They learn from it. When it’s over, they start doing real work. They probably don’t want to share their lessons learned. Those that do are typically evangelists for a particular framework. Spring, as an integration framework, comes to mind with its Pet Clinic and Pet Store examples. Hibernate’s Caveat Emptor is probably the best example app I’ve seen. AppFuse also demonstrates integration, although earlier versions seemed more explicit (the new version built with Maven seems to hide a lot of the details).
However, these apps don’t cover IDE configuration, and the IDE/build tool mismatch problem is where most of the difficulty lies. The most important IDE features, IMHO, are incremental building for syntax checking, and debugging. So you have this natural duplication of effort. The IDE/build script conversion tools (in either direction) seem narrow in scope; granted, I’m limiting myself to Eclipse/Flex Builder to/from Ant. I don’t know if full integration between the IDE and the build tool is the answer, but it would certainly go a long way in making things easier.
In the meantime, however, a project directory would be a welcome resource.
- You don’t need to host the projects themselves when there are already sites like code.google.com and Source Forge. [↩]