The open source software companies (ISVs) that I’ve been talking with about Fedora have a common problem. Ironically they, as usual, are resolving this problem individually. Making an RPM that relies upon system packages is not seen as desirable, as it reduces their portability and focuses (in their minds) on one delivery platform — RPM-based Linux, specifically Fedora and Red Hat Enterprise Linux (RHEL). They see that as artificially limiting the pool of customers.
What if we had a tool that could take a proper Fedora RPM and build other targets such as ZIP files? In the process, it would download and bundle the dependencies instead of relying upon system packages.
Why would we care? Honestly, the only platform I care gets good packages is Fedora and friends. If one of these ISVs customers is running Fedora, RHEL, or a RHEL clone such as CentOS, I want those customers to have a better RPM-based experience. If those customers are running another OS, there is little I can do to help their experience, and we don’t have time to care.
But if I can make the ISVs lives easier, or at least no harder than before, that is a way we can help make Fedora-based distributions better.
Our argument that there it is a strategic investment to build good packages is falling on deaf ears. The common viewpoint sounds like this: “Our customers are not demanding RPM packages, they don’t want to feel we are pushing a Linux-based solution of any kind, after all we’re Java and run anywhere, and have you looked at how hard it is to package Java apps for Fedora?”
From a business viewpoint, I understand. Being able to convince them to re-engineer in the middle of the race is going to take a lot more understanding than I can give them in five minutes here and there. So I got to thinking … if they ran Fedora or RHEL as a development, build, QA, and release engineering environment, but they could get an installer out the other side for any OS (ZIP, EXE, BIN, DEB, OpenSUSE RPM, Mandriva RPM) using some kind of magic ‘rpm2all’ tool, would that be compelling?
I know there is a lot more to it than I’ve described. I bet the MinGW cross-compiler has something to do with it. They might still need to specify mapping details for the conversion or plug in a proprietary installer builder.
But just as an idea … what do you think?