They tend to have a particular, shared Attitude, which is this:
This software project is Mine, and all the files for it live in My working directory, along with all the other software projects that are Mine.
And so we end up with code under Eclipse stored in ~/workspace, and code under Arduino stored in ~/sketchbook, and, in general, everything organized by toolset.
Thing is, this just doesn't match up well with the way real projects are organized. The software, for any given language and target architecture, is just part of the project.
Typically, I'll have a directory tree which is a working copy of a repository, and that tree contains various subprojects, and for each of those there may well be one or more programs for an MCU (or for more than one MCU), and CAD files for the board (possibly more than one board), and mechanical CAD files for housings and whatnot, and drawings, and documents, and Ruby scripts for the Linux host, and test cases, and....
Well, there's a lot of stuff under there, but it's all organized by project and subproject, which makes sense, as opposed to being organized by which particular program I used.
And having SVN/Git/whatever version-control integration in the IDE doesn't help much when it comes time to check in a revision with new hardware, new firmware, and new specifications all nicely synchronized.
Seriously, guys: don't take the approach of old DOS apps that stored all "their" data in their own places (word-processor documents stored under the word-processor installation directory ring any bells?); let the user put the files where they make sense for him, and keep a list of where they are. (Also, pleeeeease have some easy way to see where the entries in that list are pointing.)
Comments