Consolidate executables for simplicity, size and nonconflict w/ convert.exe
Posted: 2016-03-29T11:07:35-07:00
For next major ImageMagick version, please consider folding the 8 major command line binaries into one like this:
im compare ...
im composite ...
im conjure ...
im convert ...
im identify ...
im mogrify ...
im montage ...
im stream ...
This would make so much sense: Why should convert/mogrify be separate binaries internally 99% identical? And to new users: Why is the software called ImageMagick but not the binary?
For the statically linked versions, this would reduce space dramatically from about 8×15 MB to 1×15 MB! Almost all the code is in the libraries which all link, very little is specific to each.
Imagine that one killer statically linked portable im executable. Just one file could do almost everything on its own without being significantly larger than either of the current 8.
To not immediately break all existing scripts/wrappers/APIs, consider bridging the gap with 8 symlinks/shell scripts/batch files with the old names pointing to the new. But do state those are being deprecated. Also consider making the binaries filename-sensitive so you could e.g. get the new im to behave like the old convert simply by renaming it. Then a user could even just copy it into 8 copies or 7 symlinks and 1 real file for restoring the old behavior/waste of space.
This would also solve the long-standing problem for Windows versions that IM's convert.exe conflicts with a system command. As a poor workaround IM's installer sets the path to the exes before the system root; bad practice, slows system down. See also this post.
This of mirrors what the fork GraphicsMagick did. But that one doesn't come statically linked so their benefit is less.
I wouldn't suggest folding the 4 binaries IMDisplay, dcraw, ffmpeg or hp2xx into this; they are different animals.
im compare ...
im composite ...
im conjure ...
im convert ...
im identify ...
im mogrify ...
im montage ...
im stream ...
This would make so much sense: Why should convert/mogrify be separate binaries internally 99% identical? And to new users: Why is the software called ImageMagick but not the binary?
For the statically linked versions, this would reduce space dramatically from about 8×15 MB to 1×15 MB! Almost all the code is in the libraries which all link, very little is specific to each.
Imagine that one killer statically linked portable im executable. Just one file could do almost everything on its own without being significantly larger than either of the current 8.
To not immediately break all existing scripts/wrappers/APIs, consider bridging the gap with 8 symlinks/shell scripts/batch files with the old names pointing to the new. But do state those are being deprecated. Also consider making the binaries filename-sensitive so you could e.g. get the new im to behave like the old convert simply by renaming it. Then a user could even just copy it into 8 copies or 7 symlinks and 1 real file for restoring the old behavior/waste of space.
This would also solve the long-standing problem for Windows versions that IM's convert.exe conflicts with a system command. As a poor workaround IM's installer sets the path to the exes before the system root; bad practice, slows system down. See also this post.
This of mirrors what the fork GraphicsMagick did. But that one doesn't come statically linked so their benefit is less.
I wouldn't suggest folding the 4 binaries IMDisplay, dcraw, ffmpeg or hp2xx into this; they are different animals.