From: Brian D. <br...@de...> - 2008-05-01 19:25:29
|
Charles Wilson wrote: > Only if you're happy with the licensing terms of gnulib, which often are > GPL -- or possibly LGPL (the gnulib strtod module is LGPL). Depending > on legal advice, sometimes not even LGPL is acceptable (my employer bans > the use of LGPL libraries, unless dynamically linked. For gnulib, it's > always a static link, so no-go). > > Mingw(-runtime) provides viral free implementations of (certain) > functions in libmingwex, for precisely these reasons. And the purpose > of libmingwex itself is to improve C99 compliance of the mingw compile > system -- not tell users "go use this [L]GPL module from this other > library". > > Don't get me wrong, I'm a fan of copyleft. But avoiding copyleft seems > to be a theme for mingw and the related runtimes, for several good reasons. Yes, gnulib's strtod is LGPL. Yes, that doesn't jive with every project. But where do you draw the line? There are countless areas where the Microsoft runtime's conformity to standards could be improved. As I understand it the reason for allowing a sprintf replacement was a tradeoff: adding long double support in that one place made it much easier to enable working long double support in gcc and libgfortran. And there was already a precendent for adding code to support long double in the form of libmingwex. Is strtod() really the same tradeoff, or is this going to open the door to rewriting substantial parts of MSVCRT? If the precedent becomes "it's fine to reimplement things in libmingw as long as it's an unrestrictive license and it improves standards conformity" then I don't see how you aren't going to eventually end up with a big bloated library that gets statically linked to every single app, which is really not along the lines of a project that calls itself Minimalistic. On the other hand, you have gnulib, which has a similar philosophy (write replacements that are enabled only on systems where the provided implementations are broken such that users can simply write code that assumes a conformant implementation) but instead of only fixing one function on one platform, you fix numerous functions on countless platforms. And since it's a separate project, people that don't want or need the bloat don't get it. That is why I suggested gnulib, because philosopically it just seems to be a better solution to the problem, modulo issues of licensing and m4-foo. Brian |