Python version support tracking
Edit: Initially this issue was used to track work related to dropping support for Python 2.7 and 3.5, but we're now using it to track the python versions used by gitlint users over time.
Both Python 2.7 and Python 3.5 are EOL. As a result, the upcoming gitlint 0.14.x release will be the last version to support them.
This is mainly because many of gitlint's dependencies have dropped support for Python 2.7 and 3.5 or are planning to do so very soon - this makes it impossible to keep them up-to-date while still supporting Python 2.7 and 3.5. In addition, not having to support both Python 2 and 3 should make maintaining gitlint significantly easier. Today a lot of development time is spend on maintaining this compatibility.
While the act of "dropping support" is easy (we just don't advertise and test for it anymore), we should also remove any code that's no longer required. Dropping support for Python 2.7 in particular will allow us to remove quite a bit of code.
This issue can be used to discuss and track any related work.
So since I've put in the work to make all latest changes compatible with both 3.5 and 2.7, I think it makes sense to keep compatibility with those version for the upcoming 0.14.0 release. I do have some other things I want to get in that release, hoping to release it over the next few weeks.
I'm thinking that we can do a quick follow-up 0.15.0 release after 0.14.0, that just drops support for Python 2.7 and 3.5 and bumps dependency versions.
Some data points from pypi downloads.
Last 3 months
pip install -U pypistats
pypistats python_minor gitlint -sd 2020-06-25 -ed 2020-09-25
| category | percent | downloads |
|---|---|---|
| 3.6 | 33.74% | 32,270 |
| 3.7 | 28.71% | 27,465 |
| 3.8 | 21.01% | 20,095 |
| 2.7 | 8.05% | 7,696 |
| 3.5 | 7.77% | 7,434 |
| null | 0.70% | 667 |
| 3.9 | 0.02% | 17 |
| 3.4 | 0.01% | 12 |
| Total | 95,656 |
Date range: 2020-06-25 - 2020-09-25
Take-away: 15% still on Python 2.7 or 3.5
Last Month
pypistats python_minor gitlint --last-month
| category | percent | downloads |
|---|---|---|
| 3.6 | 33.09% | 10,451 |
| 3.7 | 29.36% | 9,273 |
| 3.8 | 18.18% | 5,740 |
| 3.5 | 10.11% | 3,193 |
| 2.7 | 8.66% | 2,735 |
| null | 0.56% | 178 |
| 3.4 | 0.03% | 9 |
| 3.9 | 0.00% | 1 |
| Total | 31,580 |
Date range: 2020-08-01 - 2020-08-31
Take-away: 18% still on Python 2.7 or 3.5
Overall take-away: probably a good decision to keep 2.7 and 3.5 for one more release (0.14.0) with a clear warning during install and in the docs.
Overall take-away: probably a good decision to keep 2.7 and 3.5 for one more release (0.14.0) with a clear warning during install and in the docs.
:+1: Makes good sense
All work has been completed, this marks the end of gitlint support for Python 2.7 and Python 3.5 (and a lot of related suffering on my end 🎉). Will keep this ticket open for a bit in case there's any follow-up discussion.
For reference, here's the latest stats at the time of writing.
3 Month Average
| category | percent | downloads |
|---|---|---|
| 3.6 | 31.40% | 28,368 |
| 3.7 | 28.80% | 26,020 |
| 3.8 | 16.26% | 14,695 |
| 3.5 | 12.28% | 11,092 |
| 2.7 | 6.89% | 6,229 |
| 3.9 | 2.63% | 2,377 |
| null | 1.73% | 1,566 |
| 3.4 | 0.01% | 10 |
| Total | 90,357 |
Date range: 2020-08-22 - 2020-11-22
1 Month Average
| category | percent | downloads |
|---|---|---|
| 3.6 | 32.42% | 9,575 |
| 3.7 | 26.41% | 7,798 |
| 3.8 | 15.86% | 4,683 |
| 3.5 | 12.84% | 3,792 |
| 2.7 | 7.78% | 2,296 |
| 3.9 | 3.32% | 981 |
| null | 1.37% | 404 |
| 3.4 | 0.00% | 1 |
| Total | 29,530 |
Date range: 2020-10-01 - 2020-10-31
Take-away is the same as before. About ~20% of users is still using Python 3.5 or 2.7.
Given that there are no functional differences between gitlint 0.15.0 (Python 3.6+ only) and gitlint 0.14.0, users on older versions of python should pin their version like so:
pip install "gitlint>=0.14.0,<0.15.0"
Just because it's fun to keep tracking this, today's numbers below.
Last Month
pypistats python_minor gitlint --last-month
| category | percent | downloads |
|---|---|---|
| 3.6 | 28.08% | 5,138 |
| 3.8 | 27.34% | 5,003 |
| 3.7 | 17.65% | 3,230 |
| 3.5 | 9.46% | 1,731 |
| 3.9 | 7.99% | 1,462 |
| 2.7 | 5.36% | 980 |
| null | 4.12% | 753 |
| Total | 18,297 |
Date range: 2021-02-01 - 2021-02-28
Python 2.7 + 3.5 share = 14.82%
Last 3 Months
pypistats python_minor gitlint -sd 2020-12-07 -ed 2021-03-07
| category | percent | downloads |
|---|---|---|
| 3.8 | 36.74% | 27,904 |
| 3.6 | 22.69% | 17,238 |
| 3.7 | 17.82% | 13,536 |
| 3.5 | 8.61% | 6,542 |
| 3.9 | 6.50% | 4,940 |
| 2.7 | 4.26% | 3,237 |
| null | 3.37% | 2,558 |
| 3.4 | 0.00% | 2 |
| Total | 75,957 |
Date range: 2020-12-07 - 2021-03-07
Python 2.7 + 3.5 share = 12.87%
So overall there's a slow but steady decline.
Reminder, users on older versions of python should pin their version like so
pip install "gitlint>=0.14.0,<0.15.0"
New Numbers! Interestingly, number of overall downloads is increasing :-)
Last Month
pypistats python_minor gitlint --last-month
| category | percent | downloads |
|---|---|---|
| 3.8 | 46.08% | 28,132 |
| 3.6 | 13.09% | 7,991 |
| 3.7 | 12.53% | 7,650 |
| 3.9 | 9.93% | 6,065 |
| null | 7.98% | 4,871 |
| 3.5 | 7.00% | 4,275 |
| 2.7 | 3.25% | 1,986 |
| 3.4 | 0.14% | 84 |
| 3.10 | 0.00% | 1 |
| Total | 61,055 |
Date range: 2021-09-01 - 2021-09-30
Python 2.7 + 3.5 share = 10.25%
Last 3 Months
pypistats python_minor gitlint -sd 2021-07-04 -ed 2021-10-04
| category | percent | downloads |
|---|---|---|
| 3.8 | 43.90% | 78,129 |
| 3.6 | 14.19% | 25,261 |
| 3.7 | 12.60% | 22,435 |
| 3.9 | 9.54% | 16,976 |
| null | 7.77% | 13,835 |
| 3.5 | 7.64% | 13,594 |
| 2.7 | 4.31% | 7,671 |
| 3.4 | 0.05% | 85 |
| 3.10 | 0.00% | 4 |
| Total | 177,990 |
Date range: 2021-07-04 - 2021-10-04
Python 2.7 + 3.5 share = 11.95%
The decline of older python versions in use continues.
Reminder, users on older versions of python should pin their version like so
pip install "gitlint>=0.14.0,<0.15.0"
New Numbers!
Last Month
pypistats python_minor gitlint --last-month
| category | percent | downloads |
|---|---|---|
| 3.8 | 40.19% | 33,760 |
| null | 12.40% | 10,413 |
| 3.9 | 12.20% | 10,250 |
| 3.7 | 9.89% | 8,303 |
| 3.10 | 9.17% | 7,702 |
| 3.6 | 8.20% | 6,889 |
| 3.5 | 5.68% | 4,771 |
| 2.7 | 2.27% | 1,905 |
| Total | 83,993 |
Date range: 2022-03-01 - 2022-03-31
Python 2.7 + 3.5 share = 7.95%
Last 3 Months
pypistats python_minor gitlint -sd 2022-01-16 -ed 2022-04-16
| category | percent | downloads |
|---|---|---|
| 3.8 | 44.39% | 113,217 |
| null | 12.13% | 30,933 |
| 3.9 | 11.61% | 29,625 |
| 3.10 | 8.28% | 21,127 |
| 3.6 | 8.22% | 20,963 |
| 3.7 | 8.13% | 20,727 |
| 3.5 | 5.12% | 13,059 |
| 2.7 | 2.12% | 5,408 |
| 3.11 | 0.00% | 2 |
| Total | 255,061 |
Date range: 2022-01-16 - 2022-04-16
Python 2.7 + 3.5 share = 7.24%
The decline of older python versions in use continues.
Reminder, users on older versions of python should pin their version like so
pip install "gitlint>=0.14.0,<0.15.0"
New Numbers!
Last Month
pypistats python_minor gitlint --last-month
| category | percent | downloads |
|---|---|---|
| 3.8 | 52.53% | 64,890 |
| 3.9 | 12.40% | 15,319 |
| 3.10 | 11.61% | 14,345 |
| null | 7.93% | 9,795 |
| 3.7 | 5.90% | 7,289 |
| 3.6 | 5.45% | 6,731 |
| 3.5 | 3.77% | 4,654 |
| 2.7 | 0.41% | 503 |
| 3.11 | 0.01% | 8 |
| 3.4 | 0.00% | 6 |
| 3.12 | 0.00% | 1 |
| Total | 123,541 |
Date range: 2022-09-01 - 2022-09-30
Python 2.7 + 3.5 share = 4.18% Python 2.7 + 3.5 + 3.6 share = 9.63%
Last 3 Months
pypistats python_minor gitlint -sd 2022-07-27 -ed 2022-10-27
| category | percent | downloads |
|---|---|---|
| 3.8 | 53.09% | 187,448 |
| 3.10 | 12.27% | 43,338 |
| 3.9 | 11.20% | 39,555 |
| null | 7.98% | 28,160 |
| 3.7 | 5.78% | 20,415 |
| 3.6 | 5.27% | 18,621 |
| 3.5 | 3.93% | 13,869 |
| 2.7 | 0.44% | 1,570 |
| 3.11 | 0.03% | 92 |
| 3.4 | 0.00% | 12 |
| 3.12 | 0.00% | 1 |
| Total | 353,081 |
Date range: 2022-07-27 - 2022-10-27
Python 2.7 + 3.5 share = 4.37% Python 2.7 + 3.5 + 3.6 share = 9.64%
The upcoming 0.18.0 release will be the last one to support Python 3.6.