Coder Social home page Coder Social logo

python3statement.github.io's Introduction

A pledge to migrate to Python 3.

This is the main website for a pledge to stop supporting Python 2 for free in open source software.

History

This page is now an archive of part of the transition from Python 2 to 3.

By around 2015, when Python 2 support was originally planned to end, many important Python libraries and tools supported Python 3. But Python 2 still had a lot of users, and projects needed to support both major versions. The end of Python 2 support was postponed to 2020, and some people argued that development of Python 2 should resume. It seemed like a real possibility that the end date would be postponed again, and we'd need to support two versions of the language indefinitely.

The Python 3 statement was drawn up around 2016. Projects pledged to require Python 3 by 2020, giving other projects confidence that they could plan a similar transition, and allowing downstream users to figure out their options without a nasty surprise. We didn't force people to move to Python 3, but if they wanted to stick with Python 2, they would stop getting new versions of our projects. The focus was originally on the scientific Python ecosystem, with Jupyter and matplotlib among the first projects involved, but in late 2017 it was expanded to any Python projects. A rapidly growing number of projects signed up as we approached 2020.

The long-term transition we hoped for has succeeded: in 2024 it is entirely normal for projects to support only Python 3, simplifying maintainers' lives and letting us take full advantage of newer language features.

Thank-you to all of the people, in projects big and small, who contributed their support to the statement!

Run locally

Install Jekyll : gem install jekyll, gem install github-pages

Clone this locally, cd in the newly created directory.

Run jekyll serve -w in one terminal, open your browser to localhost:4000.

Modify the various files, refresh your browser and enjoy.

PRs welcomed.

Add your project

We're no longer adding new projects - see the history section above.

If you just want to add your project to the list of participating projects, add a line in the list of participating projects. It's markdown so feel free to just list your project name or add a link, and make a pull request. You should even be able to edit it online.

There is no need to install Jekyll: A check creating a preview will be run on your pull request. Please check this preview.

Add timeline information

The front page also has a timeline chart, with past release dates and future (planned) releases. You can also add your project there, if you have a specific date where you plan to drop Python 2 support.

See site.js around line 100 to see how to add this kind of data.

Base template

This site is based on github.com/t413/SinglePaged.

python3statement.github.io's People

Contributors

adulau avatar apalala avatar asmeurer avatar astrofrog avatar brettcannon avatar cadair avatar cam-gerlach avatar carreau avatar chrisrichardson avatar cjermain avatar drvinceknight avatar hjoliver avatar hugovk avatar jasonrbriggs avatar kami avatar lgautier avatar matham avatar mattmilten avatar mrbean-bremen avatar mscuthbert avatar nschloe avatar rth avatar seanlaw avatar sebastientourbier avatar shimizukawa avatar takluyver avatar timsavage avatar valeriupredoi avatar yasunarizhashimoto avatar zac-hd avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

python3statement.github.io's Issues

IPython timeline

Not part of the IPython/Jupyter team, but according to the timeline they should be on v. 7, but there's no movement on releasing a version 7 at present. Any objections to my extending v. 6 by a year and pushing other versions back? It's strange to make a unilateral move on someone else's project but I think it'd be helpful.

All Python 3 releases ?

I have been in the trenches of Python 2->3 for quite some time now with rpy2, and some of the earlier Python 3 releases did not appear to gain as much traction as the later ones. For rpy2, the target is currently Python 3.5, with the possibility (but absence of support) for going back up to Python 3.3.

Would it make sense to make Python 3 version required on the Gantt chart on your web page ?

Wording

In conjunction with #1, here's my attempt at drafting a statement I like more than the current one:


All of the major projects making up the Scientific Python stack now support both Python 3.x and Python 2.7, and many projects have been supporting these two versions of the language for several years. While we have developed tools and techniques to maintain compatibility efficiently, it is a small but constant friction in the development of a lot of code.

We are keen to use Python 3, and we currently accept the cost of writing cross-compatible code to allow a smooth transition, but we don’t intend to maintain this indefinitely. Although the transition has not been as quick as we hoped, we do see it taking place, with more and more people using, teaching and recommending Python 3.

The developers of the Python language extended support of Python 2.7 from 2015 to 2020, recognising that many people were still using Python 2. We believe that the extra 5 years is sufficient, and our projects plan to stop supporting Python 2 when upstream support ends in 2020, if not before. We will then be able to simplify our code and take advantage of the many new features in the current version of the Python language and standard library.

In addition, significantly before 2020, some of our projects will step down Python 2.7 support to only fixing bugs, and make new feature releases which require Python 3. This too parallels support for the language itself, as Python 2.7 releases only include bugfixes and security improvements.

Third parties may offer paid support for our projects on old Python versions for longer than we support them ourselves. We won’t obstruct this, and it is a core principle of free and open source software that this is possible. However, if you enjoy the free, first party support for many projects in the Scientific Python stack, please start planning to move to Python 3.

Color change in timeline

this is a tiny little thing, but I associate Green w/ good and Blue with neutral. Any objections to my changing the timeline to make Py2/3 Blue and Py3-only Green? And we can use Yellow/Red for the Python 2.7 code to make it stand out (as the only Py2-only bar currently on the graph).

Text is very hard to read

screen shot 2017-05-05 at 2 05 20 pm

I hope this is just my browser, but all the text on the site is very hard to read. The contrast is low enough that I really have to strain to pick it up and I have good vision and am reading on a large, bright monitor. This has to be even more difficult for folks not as fortunate as I am.

Chrome 57.0.2987, OS X 10.11 (El Capitan), retina mac screen (effectively 3350x2100px).

Non-Project support.

I think there are organisation that might not have Python Project per se that might want to support us.
Typically SWC that would provide tutorial that are Python 3 only maybe ? Should we add a different section ?

Fancier listing of participating projects

The current list of project names feels a bit cramped, although I like the 'signatories' feel to it, I think it could be nicer. At a minimum, we could make the names a bit bigger, space them out more, and lose the underlines. Going further, maybe we can put them in a 2D grid rather than a central list, possibly with project logos.

Non-Scientific Python Projects?

Thanks for the great initiative. From what I understand the statement is currently worded very much towards the scientific Python stack. Are there any plans to extend the scope to Python libraries in general?

"If someone wants to continue to support 2.7..."

I see a lot of projects that have dropped or are planning on dropping Python 2 have put notes to vendors or others who want to continue to support Python 2 to contact them, etc. Has anyone been contacted by a serious dev who wants to do so? I'm just wondering for community information whether or not there does in fact exist a set of enthusiastic or deep-pocketed group of people interested in keeping Python 2 versions of our software alive after statement signers have moved on.

(will close in a month or sooner if this isn't a good forum for discussing)

Squash logo images

Some projects have pretty large logo images (e.g. yt, xarray, psi4 & fecon235 are over 100 KB each). We display quite a lot of logos on the page, so the total data to transfer can add up.

It would be good to find the maximum dimensions logos are shown at, double it for high-dpi displays, and scale larger logos down to that size. I imagine this is easily scriptable if you're used to Pillow or ImageMagick.

This could even be set up as a Github bot to run automatically when new logos are added (@Carreau ?), but a script in the repository to run manually would work as well.

Make it clearer that projects are dropping Python 2 support

I posted the page to the Python subreddit, and the comment with the most votes currently is pointing out that this is about projects dropping Python 2 support, not adding Python 3 support.

Looking at the page again, it's easy to see why people are confused: the page title is Python 3 support in scientific Python projects (this is also the title on the reddit link). And if you skim the page without reading the statement text, it's not at all obvious what the 'Participating projects' are participating in.

I think we should:

  • Make a clearer page title
  • Have the top header say something clearer than 'Python 3 Statement' (e.g. 'Moving to Python 3 by default'?)
  • Add a sentence above the project logos highlighting what the list means.

Add Marrow projects.

Howdy!

I've committed myself to deprecation and removal of Python 2 support from participating Marrow projects within 2019Q1 to make better use of newly available language features such as function annotations. This is notably a challenge due to adherence to the "namespaces are one honking great idea" Zen, and the updated Python 3 semantics therein. Projects include:

Logo (small; larger can be provided if needed):
marrow logo small

Error in local install instructions

I ran the local install instructions on a macOS 10.13 system with Ruby installed via Homebrew, but got the following error when trying to run the server:

python3statement.github.io feature/cherrypy $ jekyll serve -w
Traceback (most recent call last):
        10: from /usr/local/bin/jekyll:23:in `<main>'
         9: from /usr/local/bin/jekyll:23:in `load'
         8: from /usr/local/lib/ruby/gems/2.5.0/gems/jekyll-3.8.3/exe/jekyll:11:in `<top (required)>'
         7: from /usr/local/lib/ruby/gems/2.5.0/gems/jekyll-3.8.3/lib/jekyll/plugin_manager.rb:50:in `require_from_bundler'
         6: from /usr/local/Cellar/ruby/2.5.1/lib/ruby/2.5.0/bundler.rb:107:in `setup'
         5: from /usr/local/Cellar/ruby/2.5.1/lib/ruby/2.5.0/bundler/runtime.rb:26:in `setup'
         4: from /usr/local/Cellar/ruby/2.5.1/lib/ruby/2.5.0/bundler/runtime.rb:26:in `map'
         3: from /usr/local/Cellar/ruby/2.5.1/lib/ruby/2.5.0/forwardable.rb:229:in `each'
         2: from /usr/local/Cellar/ruby/2.5.1/lib/ruby/2.5.0/forwardable.rb:229:in `each'
         1: from /usr/local/Cellar/ruby/2.5.1/lib/ruby/2.5.0/bundler/runtime.rb:31:in `block in setup'
/usr/local/Cellar/ruby/2.5.1/lib/ruby/2.5.0/bundler/runtime.rb:313:in `check_for_activated_spec!': You have already activated rouge 3.2.1, but your Gemfile requires rouge 2.2.1. Prepending `bundle exec` to your command may solve this. (Gem::LoadError)

Expanding timeline

The timeline view is already just over the height of the scrolling screen area on my laptop, and there are plenty more projects we hope to get on board. Can we find a better way to display this information with a large number of projects? I'd rather not have to filter which projects get to be on the timeline.

Add license file

It's not clear what the license situation is for this repository. Can you add some information about how content is licensed?

It might be good to also clarify something about image use as well, if people are going to be adding their project logos. Not sure if there are boilerplate terms for that situation - e.g. the logos are fair use or by making a PR you are granting a non-transferrable non-exclusive right to use the logo for the purposes of this website, something of that nature.

Projects ordering

We've tried to order projects roughly by prominence, using Github stars as a proxy. Projects with logos also come before those without, for aesthetic reasons. Reviewing #56, I noticed that some of them are now out of order because they've gained more stars (xonsh in particular has got a lot more stars now).

  • What do we do for projects that aren't on Github, or don't have a single main repository on Github (like Software Carpentry)?
  • Do we try to group related projects together (e.g. Jupyter & IPython)
  • Do we differentiate documentation/teaching projects from software packages? (SC, IAB)
  • Do we treat xonsh specially? We're kind of considering it an honorary scientific Python package because Anthony is part of our community, but I suspect it's less familiar to people in this community than more specifically scientific packages which may have fewer stars.

Pledge -> statement?

Pledge:

A solemn binding promise to do, give, or refrain from doing something

It sounds a bit dramatic and self-sacrificing. That has its good points - a 'pledge' might get more attention than a 'statement'. But I think it will also be harder to get people to sign if it sounds like they're promising to do something risky.

I favour publicly calling this a 'statement', with the implication that we're just highlighting what we were already going to do. The common base level should be "we won't support Python 2 beyond 2020", which doesn't feel controversial or dramatic. Then individual projects can add details to go further, e.g. bugfixes only for Python 2, or ending support before 2020.

Practicalities section points to nonexistant information?

We are thus collecting a list of things to be aware of for when transitioning that are less obvious. For example : as a developer, how to make sure that your package manager like pip does not upgrade your libraries to incompatible versions on Python 2. Check our repository for more information.

The link to the repository is just the root of the github project, there does not appear to be any specific migration information there. Did I miss something?

Add RDKit to list of projects

The RDKit is an open-source cheminformatics toolkit that has had Python 3 support for several years and has recently committed to move over completely to Python 3 by 2020:
http://www.mail-archive.com/[email protected]/msg06935.html

Here's the text:
- [![](assets/rdkit.png)RDKit](https://github.com/rdkit/rdkit)

and the logo:
rdkit 64

And the timeline (hopefully I got this right):

'RDKit':[
	    {content: '2014.9.1 - 2019.03.1', start: '2014-09-1', end: '2019-09-1', py2:true},
	    {content: '2019.9.1 -' , start: '2019-09-01', end: '2021-03-01'}
	    ]

Domain verification

GitHub allows projects to verify domains as belonging to them (https://blog.github.com/changelog/2018-08-07-domain-verification/). I was going to do it for python3statement.org, but I guess it uses a custom DNS, separate from namecheap, which I don't have access to.

I was also looking to check the HTTPs only box, but it doesn't let me because the DNS is set as an A record instead of a CNAME record.

This is not high priority obviously, but whoever has access to the DNS stuff might want to look into this if you get some free time (I'm assuming either @Carreau or @takluyver).

How to uninstall?

The instructions provide details on how to install jekyll and github-pages. Those two commands installed a lot of things. Is it possible now to uninstall those packages and their dependencies now that I no longer need them?

It looks like I can uninstall the gems one by one, using the log of the gems it installed to determine which ones to uninstall, but this is tedious.

Perhaps the instructions should guide the user on how to create an isolated environment for this work, especially considering that many are likely to be unfamiliar with the Ruby ecosystem.

Engage the discussion on broader channels?

I strongly support this initiative, thanks a lot!

I was wondering if you are willing to advertise this more, or if you'd rather wait for the text to be more mature? I came to this through the mpl-devel mailing list, but I think it's worth advertising the initiative on other channels as well: pydata, numpy, comp.lang.python, etc...

Adding Pants build tool

Hello, I'm leading Pants' migration to Python 3, and am wondering if you'd be interested in them joining the statement?

Pants is an open source build-tool for multilingual monorepos, used by Twitter, Foursquare, Medium, Square, and a few other firms and startups. Competitor to Bazel and Buck.

They want to drop Py2 completely within the next two major releases, which should be well before January 2020.

See pantsbuild/pants#6062 for the migration plan and I'll ask the maintainers if they're willing to sign (I'm a contributor who's been working closely with them).

Default anaconda download

Both anaconda and miniconda download pages put py2.7 and py3.5 at the same level (arguably py2.7 even has more prominence since it's the first on the list).

I don't know if you folks have contacts with continuum or if I am being too optimistic, but a good thing to do would be to make 3.5 a default download and make 2.7 less prominent (for example as a footnote: "btw, you can still download py2.7 if you really want to").

(my apologies if this post is OT: in that case just let me know)

Real domain?

Any interest in putting this under a real domain? python3statement.org is avaiable.

Add OpenQuake to the list of projects

We also plan to drop support for Python 3 during the course of the year 2018. Here is the change

- [![](assets/openquake.png)OpenQuake engine](https://github.com/gem/oq-engine)

and this is the logo:
openquake

Add SciPy to projects

Hi, sorry no time for a PR right now but wanted to already summarize the info for SciPy:

v1.2.0 will be the last release that support Python 2.7 and 3.4 (release date mid-Dec 2018). It will be an LTS release, with backports until 1 Jan 2020.

SSL certificate issues

Currently, the SSL certificate for https://www.python3statement.org/ appears to be invalid,

wget https://www.python3statement.org/ 
--2018-02-14 09:10:15--  https://www.python3statement.org/
Resolving www.python3statement.org... 151.101.61.147, 2a04:4e42:f::403
Connecting to www.python3statement.org|151.101.61.147|:443... connected.
The certificate's owner does not match hostname ‘www.python3statement.org’

anyone else seeing the same error? (I also get warning pages in Firefox and Chrome).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.