Hi

mich...@orlitzky.com writes:

>   * Bundling libraries are terrible for security. I should be able to
>     open a PNG in code that I myself wrote, without worrying about a
>     buffer overflow. My distro patches these holes immediately. Sage
>     doesn't, there's just not enough manpower.
>
>   * It's wasted thousands of hours of developer time. Look at the
>     ChangeLog for a major release -- how many of the tickets are math?
>     How many are a result of trying to bootstrap the universe?
>
>   * It doesn't work. At the boundary between stuff-we-build and stuff-
>     the-system-provides, things break. Sage uses the dvipng built
>     against my system's gd, but runs it against the one bundled with
>     sage. *crash* Guess I can't plot anything today.
>
>   * Distributions won't touch it. Linux users should be our bread and
>     butter, but they can't install it. I should be able to tell people
>     "just type 'yum install sage'", but instead, I have to teach them
>     how to initiate a big bang the result of which, after millions of
>     seconds, might look like sage. Then they run into the aforementioned
>     problems anyway.

And some more points:

* If sage started to use what is available on the system, instead of
  duplicating effort, probably more linux distros would start packaging it.

* Depending on things instead of bundling them is the standard practice. I'd
  even say that the "batteries included" policy is kind of arrogant. Sage can
  pull this off only because it is virtually the only software package doing
  it. If every software depending on git, or zlib or python shipped their own
  version, things would get unbearable pretty fast. In this sense sage is not
  being a good neighbour in the system.

* System git and sage git share resources, like the main config file at
  ~/.gitconfig. What if it becomes incompatible between system and sage's git
  versions? The same goes for any other lib or standard tool sage
  uses. Embedding the tools within sage looks like shifting away the "different
  versions problem" from developer hands to the user.


I realize sage might have kind of unique needs to patch specific software, and
might have hard dependencies on specific versions of certain scientific
libraries. But I believe this policy of bundling everything should not be the
rule, but an exception. Even more so for stable standard stuff like git, zlib,
etc.

If sage finds a bug to a package, it should first try fixing it upstream, then
try to work-around it, and as a last resort, bundle a patched version. That is
the usual way open-source communities operate.

An other issue is having a "batteries included" tarball around. That may be nice
for some, I understand that, but it shouldn't be the only option.

Also, I think sage gets the focus wrong on this issue. Sage should aim at making
the code base as adaptable as possible to different environments, and software
versions, instead of trying to carefully control the environment. In the long
run that should ease sage's own development! for instance when upgrading bundled
python. It is a matter of being aware of what is backwards compatible and what
isn't when writing code. For instance, always use '--porcelain' versions of git
commands, etc.

As I said, it may not be possible to be that adaptable for some libs (so then
bundle them!). But for a non-negligible amount of software sage depends on, I'm
certain it is possible and mostly painless in the long run to be more
adaptable. Autotools is a mature and portable piece of software which aims to do
just that, to adapt the source tree to the particularities of the build
environment before building. A proof that this can be achieved is that virtually
every single open source software except sage manages to do it! Sage is an
awesome piece of software, but is not that special to be different from
everybody else in that respect.

What seems kind of scary is the amount of work needed to do that, but it seems
Felix has already walked a long way in that direction, isn't it?

Abdó Roig.

-- 
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to