On Sat, Jun 29, 2013 at 1:52 AM, Sergey B Kirpichev
<skirpic...@gmail.com> wrote:
> On Fri, Jun 28, 2013 at 09:38:35PM -0500, Ondřej Čertík wrote:
>> >> That being said, if projects like binstar (https://binstar.org/),
>> >> which was announced *yesterday*, take off and allow easy
>> >> installation on all platforms (including Windows...), we can revisit
>> >> this. Clearly, the issue of distribution of packages has not been
>> >> fixed *today*.
>> >
>> > I don't see any reasons why this new project is an argument.  Can
>> > you list some real problems (better for python >= 2.5)?
>>
>> One of them is for example that sympy.mpmath has received 13 patches
>> since the last release of mpmath 0.17 over 2 years ago:
>>
>> ondrej@eagle:~/repos/sympy/sympy/mpmath(master)$ git shortlog -ns
>> --since="February 2011" . | wc -l
>> 13
>
> It's also - not an argument in favor of some mystical
> problems with mpmath's installation.

Well I think it is --- these patches are not in the latest release of mpmath.
Projects like binstar will hopefully provide easy means for people to contribute
releases and binaries for all platforms.

Currently the easiest way for us has been to maintain our own version of mpmath,
making sure the codebase is up-to-date and contributing our patches
back to mpmath.

>
> Actually, this just means that we have mpmath fork.

That's right.

>
>> At the moment we don't seem to have the manpower to also
>> manage a release of another external project (mpmath).
>
> Do you think, that mpmath is not supported well?

I CCed Fredrik, so that he can join the discussion.

Look, the whole problem of any project is to manage its dependencies well.
This is a deep problem, that one has to very carefully weigh pros and cons.
One should only depend on libraries, that are well supported and widely used.
Mpmath is not. For example on my Ubuntu, here are all the projects that depend
on mpmath:

ondrej@hawk:~$ wajig dependents python-mpmath
s python-mpmath-doc


So it's the mpmath (documentation) itself. Compare it's popularity:

http://qa.debian.org/popcon.php?package=mpmath

versus sympy:

http://qa.debian.org/popcon.php?package=sympy

As such, sympy is the only project that actually depends on mpmath, and also
sympy is vastly (e.g. more than 5x according to the stats) more popular. So
the result is that 80% of all people will have to bother installing
mpmath, which otherwise
they would not use separately. As such, that is not a healthy
dependency. At least not yet.

Now compare this for example with numpy. Let's list all packages that
depend on it:

ondrej@hawk:~$ wajig dependents python-numpy
d python-numpy-dbg
d cain
d castle-combat
d childsplay
d code-aster-run
d connectomeviewer
d dicompyler
d eficas
d epigrass
r expeyes
d fofix
d fonttools
d gausssum
r gnudatalanguage
d grass
s ipython
d labyrinth
d libsyfi1.0-dev
d mayavi2
d memaker
d mmass
d model-builder
d mypaint
d ninix-aya
d novnc
d nulog
d pdb2pqr
d psychopy
d pybik
s pykaraoke
d pymca
d pymca-data
s python-aubio
d python-biopython
d python-biosig
d python-brian
d python-brian-lib
d python-cclib
d python-cfflib
d python-chaco
d python-cmor
d python-cogent
d python-csa
r python-dballe
r python-dicom
d python-dipy
d python-dolfin
d python-enable
d python-epr
d python-fabio
d python-ferari
d python-fiat
d python-freenect
r python-gamera
d python-gdal
d python-getfem++
d python-gnuplot
d python-guiqwt
d python-h5py
r python-instant
r python-joblib
d python-magics++
d python-mathgl
d python-matplotlib
d python-mdp
d python-mlpy
d python-mlpy-lib
s python-mpi4py
d python-mpikmeans
d python-mvpa
d python-mvpa-lib
d python-mvpa2
d python-mvpa2-lib
d python-necpp
r python-networkx
d python-nibabel
d python-nifti
d python-nipy
d python-nipy-lib
d python-nipy-lib-dbg
d python-nitime
s python-nltk
d python-numexpr
s python-opengl
d python-openopt
d python-pandas
d python-pandas-lib
d python-pebl
d python-plplot
d python-plplot-qt
d python-pybiggles
d python-pyentropy
d python-pyepl
r python-pyevolve
d python-pyfits
d python-pygame
d python-pygetdata
d python-pygrace
s python-pykaraoke
d python-pymt
d python-pytango
d python-pytools
d python-pytrilinos
d python-pywt
d python-qwt5-qt4
d python-rpy
d python-rpy2
d python-scikits.statsmodels
d python-scipy
d python-scipy-dbg
d python-scitools
s python-shapely
d python-sidl
d python-sklearn
d python-sklearn-lib
d python-sparse
d python-sphere
r python-spyderlib
d python-stfio
d python-swiginac
d python-syfi
r python-sympy
d python-tables
r python-uncertainties
d python-vigra
d python-viper
d python-visual
d python-whiteboard
d pytrainer
r qiime
r science-mathematics-dev
r science-numericalcomputation
r screenlets-pack-all
r screenlets-pack-basic
d sfc
d shogun-elwms-static
d shogun-python-modular
d shogun-python-static
d singularity
d snowballz
d specto
d stimfit
d tpclient-pywx
d veusz
d veusz-helpers
d vistrails
d vitables
d wsjt
d wxbanker
d wxgeometrie
d yade
d mgltools-gle
d mgltools-molkit
d mgltools-opengltk
d mgltools-pyautodock
d mgltools-sff
d mgltools-symserv
d mgltools-volume
d python-pygpu
d python-pyopencl
d sixpack
d python-numpy-dbg
r gnudatalanguage
d grass
d libsyfi1.0-dev
d mayavi2
d mypaint
d ninix-aya
d novnc
d pdb2pqr
d pybik
d pymca
s python-aubio
d python-biopython
d python-biosig
d python-brian-lib
d python-chaco
d python-cmor
d python-cogent
r python-dballe
d python-dolfin
d python-enable
d python-epr
d python-fabio
d python-freenect
r python-gamera
d python-gdal
d python-getfem++
d python-guiqwt
d python-h5py
d python-magics++
d python-mathgl
d python-matplotlib
d python-mlpy-lib
s python-mpi4py
d python-mpikmeans
d python-mvpa-lib
d python-mvpa2-lib
d python-necpp
d python-nifti
d python-nipy-lib
d python-nipy-lib-dbg
d python-numexpr
d python-pandas-lib
d python-pebl
d python-plplot
d python-plplot-qt
d python-pybiggles
d python-pyepl
d python-pyfits
d python-pygame
d python-pygetdata
s python-pykaraoke
d python-pymt
d python-pytango
d python-pytrilinos
d python-pywt
d python-qwt5-qt4
d python-rpy
d python-rpy2
d python-scipy
d python-scipy-dbg
s python-shapely
d python-sidl
d python-sklearn-lib
d python-sparse
d python-sphere
d python-stfio
d python-swiginac
d python-syfi
d python-tables
d python-vigra
d python-visual
r qiime
d shogun-elwms-static
d shogun-python-modular
d shogun-python-static
d stimfit
d veusz-helpers
d wsjt
d yade
d mgltools-gle
d mgltools-opengltk
d mgltools-sff
d python-pyopencl
r inkscape
s pitivi
s ibid
d python-netcdf
d python-qwt3d-qt4
d python-scientific
d python-scientific-doc
r inkscape
d python-netcdf
d python-qwt3d-qt4
d conservation-code
d python-pycuda
d python-pycuda
r inkscape


And its popularity:

http://qa.debian.org/popcon.php?package=python-numpy

So that's a healthy dependency in the sense that we should not include
sources of numpy in our project, but
rather depend on it if needed.

By ignoring all this and just seeing "mpmath" in sympy sources and
thus requiring that we remove it and hard
depend on it, would not be a wise decision. Again, I am repeating what
the blogpost that I linked above discusses,
I encourage you to read it and think about the arguments.

>
>> There is another big problem, that I hadn't mentioned before. At the
>> moment, you can use git bisect and go into history of sympy and easily
>> figure out if something broke. The moment we start depending on
>> mpmath, and we commit just one fix that breaks sympy (by adding it to
>> mpmath directly and creating a new release), the git bisect stops
>> working, and different sympy git hashes will depend on different
>> versions of mpmath. That will be a huge nightmare.
>
> We already have this situation for others external dependecies.
>
>> Another issue, mentioned by Fredrik in the issue is that currently
>> mpmath is tested with sympy.
>
> Are you about sympy/mpmath/tests/*?

Yes.

> Why this can't be tested with
> travis for a separate project?

It could and it should, but arguably mpmath gets much better testing
when many of sympy users run our test suite.

Again, if we were talking about numpy, then my argument would be quite
ridiculous, in the light of the stats that I discussed above, because
vastly more users install numpy than sympy. But we are talking about
mpmath, and there it stands, because at least 80% of Debian users only
install sympy, not mpmath.


Now for projects like Debian or Fedora, which do allow easy dependency
installation, we should provide an easy switch in our setup.py. That
way they can manage mpmath at one place and any Debian specific
patches and fixes that they contribute will automatically apply to
sympy. But this is specific to Debian/Fedora, as well as homebrew and
other distributions like Anaconda. On other platforms the users would
have to install mpmath from its webpage, so they will have an older
version than it is in sympy. Any security fixes that you mentioned (as
one possible worry), we would simply apply to sympy itself.


I apologize for the longer email, but this issue is something that I
want to make clear, as it is my highest priority that sympy remains
easy to use and install.

Ondrej

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


Reply via email to