|
| Quick comparison of automated build tools & related frameworks
Changelog:
| Tool | Language | Declarative | MD5 triggers | SQL hooks | Extensible | Parallelism | SGE compatible | Implemented | Thriving | Concise | Practical | GNU-compatible | Tried it? |
| GNU make | C | | no | no | no | (threads) | no | | | | | | |
| omake | C | | | no | no | ? | no | | | | | | no |
| distmake | C | | no | no | no | | sort of | | | | | | |
| qmake | C | | no | no | no | | | | | | | | not working yet |
| makepp | Perl | | | no | | (threads) | no | | | | | | |
| Saps Modules | Perl | no | no | | no | | no (PBS) | | | no (Perl) | | no | no |
| Post Make | SQL/C | | no | | via Postgres | ? | no | | ? | ? | ? | no | no |
| Apache Ant | XML/Java | | ? | no | | | no | | | no (XML) | | no | |
| SCons | Python | | | no | | | no | | | no | | no | |
| Jam | script/C | | no | no | ? | | no | | | ? | | no | no |
| Cook | script/C | | | no | ? | | no | | | ? | | no | no |
| Ruby Make | Ruby | | no | no | | (threads) | no | | | | | no | |
| Map Reduce | C | n/a | n/a | n/a | n/a | | no | Google (+others?) | | n/a | not yet | no | no |
| Bio Make | Prolog | | | | no | in theory | | no | no | | no | no | no |
| Erlang make | Erlang | | no | no | no | | no | no, hypothetical (make.erl?) | | n/a | no | no | |
| Termite Scheme make | Scheme | | no | no | no | | no | no, hypothetical | one guy | n/a | no | no | no |
| Taverna | Java | yes (GUI) | no | no | no | | ? | partially | ? | no (XML) | no | no | |
| Ruffus | Python | | ? | ? | probably | | ? | | early | | think so | no | hope to |
Obviously some of the columns are very subjective.
Here is an explanation of the meaning of some of them:
- "Declarative" means that it uses concepts of Declarative programming (Wikipedia)
- "SQL hooks" means that entries in relational database tables can be both targets and dependencies
- "Parallelism" means built-in support for distributed processing (as opposed to being able to run multiple threads)
- "MD5 triggers", "SQL hooks" and "Parallel" imply that the tool has such features built-in
- as opposed to "Extensible" which means that it's possible to add such things
- "Implemented" means that a "make"-type system is up & running in this framework
- "Thriving" means that the framework itself is well-supported (so it can be true even if "Implemented" is false)
- "Concise" is an unashamedly subjective call (let's just say that GNU make is, and XML isn't)
- "Practical" means "practical for our purposes"
Miscellaneous notes
George Hartzell recommends Rose-DB as a Perl database interface. |