“CDE is a tool that automatically packages up the Code, Data, and Environment involved in running any Linux command so that it can execute identically on another computer without any installation or configuration. The only requirement is that the other computer have the same hardware architecture (e.g., x86) and major kernel version (e.g., 2.6.X) as yours. CDE allows you to easily run programs without the dependency hell that inevitably occurs when attempting to install software or libraries. You can use CDE to allow your colleagues to reproduce and build upon your computational experiments, to quickly deploy prototype software to a compute cluster, and to submit executable bug reports.”
Translation: here’s how I can have you run my software as a black box, so I don’t have to release the source code and lose my competitive advantage, while saving my own computer time.
Not a bad idea.
But it’s probably better for the community to have the most useful research software be released as source, and deployed by systems like BSD Ports or Gentoo Portage. The author will still get his citations.
I’m pretty sure that sysadmins would love this.
While I understand that some people find the package fragmentation difficult to handle, I find this method not that appealing ( although I might simplifies deployment for mac users refugees ), Except for user only application ( that is they can sit in the user directory without touching the system that much) and sandboxing.
But as most linux application tend to be installed system wide (to be shared to all user), I’m pretty confident that package remain the best solution for manageability and bloat management(that is not having multiple copies of the same library sitting ).
I’m sure the Common Desktop Environment would love to know that it is now “a tool that automatically packages up code …”
haha, that’s exactly what i thought when reading this at first. did a few double takes, before I realized they were talking about something else.
Nice little tool though, I like it.
\begin{joke}
CDE packages up your binary, it’s dependency libraries down to libstdc++, and every file your program touches at run-time into a f–king Huge Image (or “FHI”).
\end{joke}
Just to point out, since the excerpt from their web-site is a little ambiguous: CDE isn’t a generalized software distribution tool, precisely because the above is true. The images CDE generates include every library used and file opened, down to the C library. Use CDE to wrap up a GNOME app, and it’ll package every loaded GNOME library, and every library beneath down to the C library into a f–king Huge Image.
The main uses of CDE are, exactly as it says, preserving not just the application in question, but the exact dependencies and environment used, to allow for deterministic reproductions of the results of running a given program in a given environment with given inputs. This is all evidently motivated by the desire to make scientific computation reliably reproducable in different environments, to facilitate peer review.
Edited 2010-11-15 23:09 UTC
I can see another obvious use for this: Debugging. Wouldn’t it be handy if I could say to the developer not just “I’m seeing a crash, here’s a trace” but also “and here’s the exact environment I was using so you can reproduce this yourself”?
I’ve had a hell of a time trying to compile Xfce on my RedHat machine at work which I don’t have root access on. I decided to just settle for Thunar. Even then I had to get a bunch of stuff installed locally using LD_LIBRARY_PATH, and PKG_CONFIG variables. Installing new gtk+, and glib.
intltool
exo
libxfce4ui
libxfce4util
xfconf
glib
gtk
atk
pango
fontconfig
cairo
pixman
I’ll try to package up Thunar using CDE at home on my Gentoo machine and see how it runs on RHEL 5 here at work.