After version 9.0, if you really want so, you can still build and use SageMath with Python 2, as follows.
make configure ./configure --with-python=2 make build
Beware that you will need to call the second line again if you ever call "make distclean".
This will work until version 9.1 at least. Then the backward compatibility with Python 2 will no longer be ensured.--
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+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/sage-devel/2a6cdc41-1ef1-4f95-b44c-c062342dc82b%40googlegroups.com.
+1 for dropping python 2.7 compatibilityIt is unfortunate that the wiki makes that promise. But it is a community wiki, and as such I wouldn't consider it an authorative source. Keeping python2 support will be a *lot* of effort, either for the sage project or (if it just refuses to deal with this problem and keeps using outdated dependencies) for packagers. At the same time, I see little to no benefit in keeping it. People who insist on python2 can keep using 9.0 as long as they need to. It will continue to work for all the purposes it works for now.
I don't think there's a doubt that we'll drop py2.7 support. This Wiki, however, has been referred to in many places describing the py2/py3 transition.
Those who do want to keep that promise intact - can you please explain who will be affected and how if we drop Python 2 support? "Regular" users do not have a choice - precompiled binaries are with Python 3 only. Those who can build from source and add configure parameters may just as well checkout 9.0 and compile that.
You could say: there is such a way: just check out 9.0 and build that with py2. Perhaps that's enough. However, I would err at the side of caution and make a slightly bigger gesture here and still include 9.1 as well -- that was published as a definite promise already. Once again, for any piece of code where this turns out to be a bother, just wait with the merge until 9.2. I don't think it needs to put a very large load on developers. It will mainly be a pain for the release manager, so he/she should actually get to have a significant voice in this
the wiki promise was written by myself alone, and I think it should be changed. I think there will be very few (or no) people that will desire to compile sage 9.0 with python 2. And 9.1 even more. People that want to be up to date do not care about py2.I therefore strongly vote for the immediate drop of python2, and for removing the promise that 9.1 will be py2-compatible
I agree with Nils. There should be at least a one release deprecation
period. Also, while I don't think we use any kind of real semantic
versioning, I think we should name a Python 3-only release 10.0 as
it's a very major backwards-incompatibility change.
On the other hand, for the end user the major backwards-incompatibility change already happened: a Python 2-only piece of code will break immediately in any Sage 9.0 binary. Can we really say to the end user: "to solve your issue, download SageMath sources and compile them with ./configure --with-python=2" ?
Because a lot of Sage users are also developers (presumably a higher proportion than for Python or Mathematica!), a lot of Sage work has had developers in mind. However, I think it is pretty important to pay attention to the users, the vast majority of whom we don't ever hear from, since they aren't paying for Sage.As an example, if there were a coordinated strategy that a company would make, I can't imagine that there wouldn't have been two versions of Sage cell server going at once - or even an addition (temporary) to the drop-down menu saying "Sage with Python 2", for transitioning.
I don't know if I want to ask the very capable, but very busy, Andrey N. to do that! But once again, sage-devel will never know, because the users didn't pay anything,
For CoCalc (run by a company), we have many different versions of Sage installed for projects to use. For Jupyter notebooks, users just explicitly select whatever version they want (via kernel selection), and it stays selected unless they change it. For the sage command line, we have a "sage_select" command to set the default, or the user can type "sage-[version]" to get a specific version./ext/bin/sage_select <version>Available versions: develop, 8.2, 8.3, 8.4, 8.5, 8.6, 8.7, 8.8, 8.9, 9.0For Sage worksheets, they just use whatever is "sage" in the PATH, which is a problem since there's a TON of python2 content used on cocalc, much made by paying customers (with thousands of students), so we can't break it. We've been discussing how to move forward, slowly but surely, here https://github.com/sagemathinc/cocalc/issues/4212/. It's a confusing and tricky problem because Sage worksheets don't encode the version of Sage they use (dumb design decision by me) -- Jupyter is much better in this regard. In any case, we don't have the luxury of break things for our paying customers.
I don't know if I want to ask the very capable, but very busy, Andrey N. to do that! But once again, sage-devel will never know, because the users didn't pay anything,Users (at least UTMOST) does sometimes pay a little bit to cover some hosting (thanks NSF!), but it doesn't cover what Andrey does, and I fully support his decision.
Why 8.9? One can build 9.0 with python2 just fine.
This is just some clarification and remarks related to what Karl wrote, and not really super relevant to this thread...
On Monday, January 6, 2020 at 7:17:16 AM UTC-8, kcrisman wrote:Because a lot of Sage users are also developers (presumably a higher proportion than for Python or Mathematica!), a lot of Sage work has had developers in mind. However, I think it is pretty important to pay attention to the users, the vast majority of whom we don't ever hear from, since they aren't paying for Sage.As an example, if there were a coordinated strategy that a company would make, I can't imagine that there wouldn't have been two versions of Sage cell server going at once - or even an addition (temporary) to the drop-down menu saying "Sage with Python 2", for transitioning.For CoCalc (run by a company), we have many different versions of Sage installed for projects to use. For Jupyter notebooks, users just explicitly select whatever version they want (via kernel selection), and it stays selected unless they change it. For the sage command line, we have a "sage_select" command to set the default, or the user can type "sage-[version]" to get a specific version./ext/bin/sage_select <version>Available versions: develop, 8.2, 8.3, 8.4, 8.5, 8.6, 8.7, 8.8, 8.9, 9.0
For Sage worksheets, they just use whatever is "sage" in the PATH, which is a problem since there's a TON of python2 content used on cocalc, much made by paying customers (with thousands of students), so we can't break it. We've been discussing how to move forward, slowly but surely, here https://github.com/sagemathinc/cocalc/issues/4212/. It's a confusing and tricky problem because Sage worksheets don't encode the version of Sage they use (dumb design decision by me) -- Jupyter is much better in this regard. In any case, we don't have the luxury of break things for our paying customers.I don't know if I want to ask the very capable, but very busy, Andrey N. to do that! But once again, sage-devel will never know, because the users didn't pay anything,Users (at least UTMOST) does sometimes pay a little bit to cover some hosting (thanks NSF!), but it doesn't cover what Andrey does, and I fully support his decision. I wish I had the money to pay to support maintenance of other versions of the Sage cell server, but I don't.William
--
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+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/sage-devel/99d1c833-d393-46b0-a7d3-72e184ba047b%40googlegroups.com.
Just a silly question. How do we know that the code remains python2 compatible in the first place?As far as I can see all the patchbots run python3 so it is very easy to break something. 9.0 is supposed to be fully python2 compatible, but are the doctests being tested for that?
If we don't test the upcoming tickets for python2 compatibility, we have de facto stopped supporting python2 already.
--
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+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/sage-devel/CAOTD34ZqHf%2BrzoSD8juhhk%3D4YF1WB6BHZuxAOO0ZQYk6KhhX_g%40mail.gmail.com.
The main person that has valid reason to want longer support for python2 is William.
As he mentions, he has paying customers.
At this point my only reasonable suggestion is to have a python2 compatibility branch
for a while as sage-9.x while some of us plow on ahead without in sage-10.x.
That’s unreasonable on the release manager unless someone step up to help.
François
--
You received this message because you are subscribed to a topic in the Google Groups "sage-devel" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/sage-devel/vYlbnAwKATM/unsubscribe.
To unsubscribe from this group and all its topics, send an email to sage-devel+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/sage-devel/BBC8CF32-2E9D-4DC0-BBE5-5130E15B3B14%40gmail.com.
The main person that has valid reason to want longer support for python2 is William.
As he mentions, he has paying customers.I am 100% satisfied for my use case with cocalc by just keeping a copy of sage-8.9 available longterm. Fortunately, I don't need any sage-9.x versions to support python2.
That seems like the obvious approach to me. As it is I've long felt
that Sage should be more flexible in its dependencies where
possible/necessary. With most Python packages it's easy as most have
a <package>.__version__ and its not so hard to define some variable
like IS_RPY_2 and just have two separate branches. I have things like
that all over the place in other packages to support e.g. different
Numpy versions or work around version-specific bugs.
On Sat, Jan 11, 2020 at 9:24 AM Antonio Rojas <nqn...@gmail.com> wrote:
>
> El viernes, 10 de enero de 2020, 14:54:24 (UTC+1), E. Madison Bray escribió:
>>
>> That seems like the obvious approach to me. As it is I've long felt
>> that Sage should be more flexible in its dependencies where
>> possible/necessary. With most Python packages it's easy as most have
>> a <package>.__version__ and its not so hard to define some variable
>> like IS_RPY_2 and just have two separate branches. I have things like
>> that all over the place in other packages to support e.g. different
>> Numpy versions or work around version-specific bugs.
>
>
> I've opened https://trac.sagemath.org/ticket/28988 for rpy. But at this point the major issues are python 3.8 and ipython 7, and I don't see how one could support several versions of them without forking hundreds of doctests. Both updates require multi-thousand-lines patches, due to changes in dict sorting and hashes.
That remains a fault of over-reliance on doctests.
I don't think
downstream packaging is a good enough reason to push sage to rush
things in such a way that is not well-communicated to the user
community. If you need to have a multi-thousand-line patch then so be
it. A patch is a patch.
Hello,I would like to suggest that the sooner we drop Python 2 support the better. We still need to handle the upgrade to ipython7 and the compatibility with python 3.8. All this will be made very difficult if we insist on maintaining a codebase that is both compatible with python 2 and python 3.So, please vote :
Frédéric
--
You received this message because you are subscribed to a topic in the Google Groups "sage-devel" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/sage-devel/vYlbnAwKATM/unsubscribe.
To unsubscribe from this group and all its topics, send an email to sage-devel+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/sage-devel/9db91206-3a7c-434a-8b07-7656e5b5f458%40googlegroups.com.
So here is my proposal.* Starting from now, we allow ourselves to move on, using 9.1 betas and further releases for external python3 updates, including switch to ipython7, which seems to me the most urgent matter. But we also do not introduce python3-only code in our own code base if we can avoid it.
1. Branch off the 9.0 release
2. Drop compatibility in 9.1
3. Proceed as normal
4. If there are any major bugs found in 9.1, backport the fix to
the 9.0 branch, and release a 9.0.1 that supports python-2.x.
Mathematical bug fixes that merge clean and pass the tests could also
make the cut, but ideally step (4) would require little work. This would
buy users a few more months of python2 compatibility, and lets the rest
of us move on.
The main downside is that this relies solely on the release manager to
merge bugfix tickets twice, into both release branches. So if he thinks
this is a waste of time (understandable), then it's a non-starter.
So here is my proposal.* Starting from now, we allow ourselves to move on, using 9.1 betas and further releases for external python3 updates, including switch to ipython7, which seems to me the most urgent matter. But we also do not introduce python3-only code in our own code base if we can avoid it.* Concerning semantic versioning, I would advocate to use 10.0 as the first release where all compatibility code will be removed, hence pure py3. This may take some time, given the sparse work force. Once done, we allow ourself to use python3-only syntax in our own codebase, such as "yield from".Therefore, we can use 9.1, 9.2 and so on until somebody™ does the job of cleaning up sagemath codebase from remains of py2-only code.I have tried to make a balanced and reasonable proposal. Applause or scream at your will.
This has been a long discussion already. Let me try to summarize. My question was :Do you agree that sage release 9.1 (and most of the 9.1.betas) will not be kept compatible with Python 2 ?