1 |
Hi, everyone. |
2 |
|
3 |
I've noticed yesterday that one of our users is forking python-utils-r1 |
4 |
[1] to include support for Tauthon. I kinda feel bad about our users |
5 |
having to fork the eclass, so I started wondering about adding |
6 |
the support officially. However, since it's a relatively controversial |
7 |
topic, I'd like to gather the opinion of the community at large. |
8 |
|
9 |
|
10 |
What Tauthon is? |
11 |
================ |
12 |
|
13 |
Tauthon [2] (formerly called 'Python 2.8') is a 'fork of Python 2.7 with |
14 |
new syntax, builtins, and libraries backported from Python 3'. I haven't |
15 |
taken it seriously as long as it was pretending to be a continuation of |
16 |
CPython but since upstream grew up to use its own name and the project |
17 |
didn't seem to die, it might be worth thinking of for a few minutes. |
18 |
|
19 |
Technically, it's simply a fork of CPython with modifications. I haven't |
20 |
tested it myself but I've heard opinions that some stuff written for 2.7 |
21 |
works. I haven't verified that either but FWICS its sys.version states |
22 |
2.8.0a0 or sth like that. I am not aware if it's possible to clearly |
23 |
distinguish it using some other characteristics. |
24 |
|
25 |
The project seems to be maintained by a single person, Naftali Harris, |
26 |
who seems to have a clear goal. It seems to have gathered a small |
27 |
community around it. |
28 |
|
29 |
|
30 |
What implementations we support currently? |
31 |
========================================== |
32 |
|
33 |
Right now, we support three families of Python interpreters: CPython, |
34 |
PyPy and Jython. |
35 |
|
36 |
CPython is the reference C implementation of Python. We slot it per |
37 |
minor version which matches the way it is installed, its ABI stability |
38 |
and feature changes. This is the default interpreter, and the only |
39 |
implementation available for stable. |
40 |
|
41 |
PyPy is the fancy implementation which is written in Python. That Python |
42 |
is magically converted into C, and compiled. PyPy has been steadily |
43 |
gaining popularity due to its supposed performance benefits |
44 |
and extraordinary features. We support PyPy on ~arch. |
45 |
|
46 |
Historically, we have been slotting PyPy per version. However, |
47 |
the 'original' PyPy has been based on Python 2.7 for as long as I can |
48 |
remember, so I eventually dropped the slotting and just combined it into |
49 |
'pypy'. Afterwards, upstream has released PyPy 3* variants that I've |
50 |
also combined into 'pypy3'. |
51 |
|
52 |
Jython is the half-dead implementation in Java. We have been |
53 |
historically somewhat supporting Jython 2.5 (versions matching CPython) |
54 |
but we removed it after Python 2.5 was removed. Then Jython 2.7 was in |
55 |
a very long, half-dead alpha stage and we never actually went beyond |
56 |
having a Jython package and 'experimental' support in eclass that is not |
57 |
really used by any packages. |
58 |
|
59 |
|
60 |
What levels of support can we provide? |
61 |
====================================== |
62 |
|
63 |
For Tauthon, I would consider one of the following levels of support: |
64 |
|
65 |
A. provide low-level eclass support only, without USE flags or even |
66 |
a Tauthon package -- i.e. make it easier for others to play with it but |
67 |
not support it in any degree, |
68 |
|
69 |
B. eclass support + package -- make it experimental like jython2.7; let |
70 |
people play with it but do not add its support to packages; |
71 |
|
72 |
C. full ~arch -- let people actually use it on ~arch, and add it to |
73 |
PYTHON_COMPAT. |
74 |
|
75 |
As for PYTHON_COMPAT values, we could either use a versioned form, i.e. |
76 |
'tauthon2_8' or just 'tauthon'. I would lean towards the latter since |
77 |
I don't expect us to put much effort into that project. |
78 |
|
79 |
|
80 |
Subjective view on Tauthon |
81 |
========================== |
82 |
|
83 |
Now that all technicalities have been covered, few words of my opinion. |
84 |
|
85 |
As I said, I find the topic controversial. I wouldn't mind that much |
86 |
providing people ability to play with Tauthon but I wouldn't put any |
87 |
real effort on supporting it beyond the absolute minimum. In my opinion, |
88 |
this project has a number of issues and no future. |
89 |
|
90 |
1. Python version mayhem. |
91 |
|
92 |
The idea of 'old Python with new features' has already been tested and |
93 |
proven wrong a lot. dev-python/future is one example where it failed -- |
94 |
it installs some stuff that makes Python 2 look more like Python 3 which |
95 |
simply breaks random assumptions in packages. |
96 |
|
97 |
Tauthon just seems like a reiteration of that, with some extra syntax |
98 |
and a version that pretends to be neither 2.7 nor 3.x. I can imagine |
99 |
this is going to cause a lot of fun results for people playing with |
100 |
versions, or modules, or anything in particular |
101 |
|
102 |
Plus, it's not Python 3. Even if it would be able to run some pure |
103 |
Python 3 code (which I don't think it can), random Python 3-only |
104 |
packages will still refuse to run because the version says 2. |
105 |
|
106 |
2. No real innovation. |
107 |
|
108 |
Think of PyPy. It had to introduce a lot of fancy to actually get |
109 |
noticed. Tauthon just doesn't have it. Some people will use it as |
110 |
an excuse not to use Python 3 but that's all. |
111 |
|
112 |
If someone was to consider adding Python 3 features to a semi-serious |
113 |
project that needs Python 2, it is far more likely that he will use one |
114 |
of the backport modules -- that work with pure CPython which he has |
115 |
already installed, and which are easy to install e.g. in virtualenv. It |
116 |
is highly unlikely that someone will consider building a custom Python |
117 |
interpreter just to have a few syntax extras. |
118 |
|
119 |
3. Bus factor. |
120 |
|
121 |
As I said, the project is developed by a single person. While it has a |
122 |
community, the problem is that it runs on quite a fragile equilibrium. |
123 |
If the community takes over, it is quite likely that the project will |
124 |
trip over with additional features that make it a moving target that |
125 |
breaks more stuff than it fixes. |
126 |
|
127 |
|
128 |
Your thoughts? |
129 |
|
130 |
|
131 |
[1]:https://github.com/stefantalpalaru/gentoo-overlay/blob/master/eclass/python-utils-r1.eclass |
132 |
[2]:https://github.com/naftaliharris/tauthon |
133 |
|
134 |
-- |
135 |
Best regards, |
136 |
Michał Górny |