A great fire milestone is likely getting python3 -mcompileall python/
clean. It looks like there's a couple dozen syntax errors that I bet could
be knocked out in an hour.

Alex

On Wed, Aug 16, 2017 at 1:15 PM, Dustin Mitchell <dus...@mozilla.com> wrote:

> This feels like a project that could benefit from a number of people
> coordinating a slow hacking-away at it, with the leaf nodes of that
> dependency tree being good bite-sized projects suitable for hacking on in
> spare cycles or for casual contributors.  In my experience with other
> projects, one of the important pieces to making forward progress on Py3
> migrations is to use automated testing to prevent regressions. That
> requires chasing specific milestones like "all print statements removed and
> lint configured to reject them".
>
> Are there plans for some kind of coordination?  I'd like to be involved
> hacking on those leaf nodes, but I don't have the breadth of understanding
> to figure out where to start.
>
> Dustin
>
> 2017-08-16 12:54 GMT-04:00 Gregory Szorc <g...@mozilla.com>:
>
> > In the past few weeks, a few independent projects have inquired about
> > using Python 3 for Firefox build/development tooling.
> >
> > tl;dr we now have bug 1388447 (aliased as "buildpython3") tracking
> > everything Python 3 related to Firefox development. Please use it.
> >
> > My thoughts on Python 3 and Firefox follow.
> >
> > Python 2 will stop being supported in 2020 (exact date TBD). In theory,
> > there will be a 2.7.X release in 2020 and no more official Python 2
> > releases will be made. It is therefore prudent for any actively-developed
> > Python code to transition away from Python 2 so it remains on a supported
> > programming language. Python 2 won't disappear over night and is likely
> to
> > be a fixture of operating system installs for years to come. But as time
> > goes by, it will be more and more annoying having to support legacy
> Python
> > 2 code. Any developer who spends a lot of time writing Python will likely
> > scoff at the thought of maintaining Python 2 code after they are
> accustomed
> > to Python 3. Python 2 code will tend to rot from neglect. And, running
> > Python 2 code will likely expose you to unpatched security
> vulnerabilities.
> > It's best to be off of Python 2 by its end of life in 2020.
> >
> > That being said, you don't need to transition to Python 3 and nobody is
> > forcing you to transition to Python 3. While there are gains from
> > transitioning, it is a lot of work. In many cases, porting is of the same
> > scope as a rewrite and therefore many of the reasons why rewrites are a
> bad
> > idea apply to porting to Python 3. So it would be prudent to conduct a
> > cost-benefit analysis on porting, paying special attention to what other
> > work is being neglected because a port is being done.
> >
> > IMO Python 3 is a superior programming language to Python 2. The run-time
> > performance of Python 3 is substantially better than Python 2 as of the
> 3.6
> > release (although start-up time is still an issue). There are compelling
> > Python 3 features that make it attractive. These include support for type
> > hinting, which combined with a type aware editor like PyCharm (which
> > Mozilla employees can get a license for), should facilitate easier
> hacking
> > on large code bases like the Firefox build system. Asyncio allows much
> > higher concurrency for I/O bound tasks (which there are several of in the
> > build system and tools). And there are a ton of standard library
> > improvements that reduce code complexity, attain perf wins, lower
> > development overhead, etc. In aggregate, these make large, actively
> > developed, performance sensitive code the most lucrative targets to port.
> >
> > We should be encouraging the use of Python 3 for Firefox tooling. I dare
> > say that new Python code should strive to be Python 3 only if possible,
> as
> > new Python 2 in 2017 is a form of technical debt. At the very least, I
> > encourage all newly-written Python code to be as Python 3 compatible as
> > possible to minimize future porting work.
> >
> > Requiring Python 3 to build Firefox incurs a non-trivial amount of work,
> > especially to downstream packagers. Bug 636155 tracks *requiring* Python
> 3
> > to build Firefox. A summary of my thoughts are captured in comment #9.
> That
> > milestone likely won't happen until 2018Q2 or later.
> >
> > However, we don't need to require Python 3 to build Firefox in order to
> > use Python 3 in Firefox tooling. Non-essential development activities can
> > adopt Python 3 sooner. Examples of non-essential development activities
> > include mach commands not used by the build system, such as `mach watch`.
> > Strictly speaking, I even consider testing harnesses non-essential, as
> they
> > aren't required to *build*. (Although I'm not sure how much testing
> > downstream packagers do and we need to be cognizant about introducing a
> > Python 3 requirement on them.)
> >
> > Bug 1385381 recently landed to detect Python 3 in the build system. The
> > PYTHON3 subst variable, if defined, will point to a Python 3.5+
> executable.
> > The MozbuildObject base class now exposes a `python3` attribute. It
> returns
> > a 2-tuple of (path, version). So, from mach command classes inheriting
> from
> > MachCommandBase and various build system contexts, you can now do
> something
> > like:
> >
> >     python3 = self.python3[0]
> >     if not python3:
> >         raise Exception('Python 3 not found')
> >     subprocess.check_call([python3, ...])
> >
> > Mach itself is still Python 2 and likely will be for some time. There
> have
> > been some discussions around making it work with Python 3. We may even
> > facilitate light magic to allow mach @Command functions to transparently
> be
> > invoked as Python 3. But for now, you'll have to invoke a separate
> Python 3
> > process from mach commands to use Python 3.
> >
> > There is a group interested in porting various Mozilla packages (like
> > mozbase) so they are Python 3 compatible. Porting things like mozprocess
> > will be a prerequisite for making large amounts of the Python in the
> > Firefox repo Python 3 compatible.
> >
> > Managing a flag day transition to Python 3 across the entire Firefox code
> > base is not feasible: it is just too much work. The conversion to Python
> 3
> > will be gradual and take years. Expect Python 2 and 3 to run side-by-side
> > for years, well past 2020. Components will adopt different schedules and
> > priorities for the transition. Early adopters of Python 3 will likely be
> > hindered by various package dependencies not yet working on Python 3. For
> > this reason, early Python 3 efforts should be focused on shared packages
> > like mozbase and new code that doesn't need too much of the in-tree
> Python
> > (which is likely unported).
> >
> > Because Python 2 and 3 will run side-by-side for years, shared packages
> > should strive to run on both Python 2 and 3. This is achievable in many
> > cases. Packages like six do a great job of wallpapering over differences.
> > In cases where the same code can't run on both 2 and 3 simultaneously, we
> > can look at using source rewriting. I have some experience with this and
> > you can reach out if you have any questions.
> >
> > Again, nobody is forcing you to use or port to Python 3. But Python 3 is
> > the future and anyone writing or maintaining a significant amount of
> Python
> > should be cognizant of the technical debt being incurred by continuing to
> > write Python 2 in 2017 and beyond. We should start thinking "Python 3
> > first" and start planning for a world that is "Python 3 everywhere." For
> > most of you, it should be business as usual for the next several months.
> > But once more Python 3 "infrastructure" is in place in Firefox tooling,
> > expect the calls for Python 3 to grow louder. There's no stopping the
> > Python 3 train. So please be aware that it's coming.
> >
> > _______________________________________________
> > dev-builds mailing list
> > dev-builds@lists.mozilla.org
> > https://lists.mozilla.org/listinfo/dev-builds
> >
> >
> _______________________________________________
> tools mailing list
> to...@lists.mozilla.org
> https://lists.mozilla.org/listinfo/tools
>
_______________________________________________
dev-builds mailing list
dev-builds@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-builds

Reply via email to