Changing the Culture of Python at Facebook [video]
youtube.com
youtube.com
- Python is popular at Facebook
- Python 3 is the default for new projects
- Changing to Python 3 needed an internal advocate to update build and dev tools to push the change
- Facebook is a big user of the new ``asyncio`` module
Perhaps the most subtle point of the talk is that Facebook managed to change from 2 to 3 from the efforts of just one person. Of course there were more folks changing code than just the speaker, but it appears he was able to heavily influence the culture change. Enabling 3 for the build tools probably made a big difference.
The main problem is library support, not the language changes. A large company like Facebook can afford to put someone on library compatibility to make this happen.
In my own experience, most libraries are 3-compatible.
But note that a small company will have correspondingly fewer dependencies. So I'm not sure a small company would need a dedicated upgrade engineer.
What teams are using Python at Facebook now? So far job requirements seem to be mainly C++ and PHP.
Do they use Cython to speed up? What about PyPy?
Plus, the extent to which people can't do this because they have no/have a terrible build system is generally underestimated.
I've had great success using pex to bundle up tools that use a few dependencies. It's a lot simpler than tools that try to bundle a full python distribution.
Worked in production at a hundred different merchants
And PyInstaller is quite complicated.
That's certainly a practical strategy, but it reduces flexibility/modularity. Go-lang shares the same strategy for deployment. Perhaps it was inspired by Java-users.
On a mobile device using a native app, it is quite hard/impossible to get a different url. Could you whitelist the youtu.be url ? because I'm guessing this will start to happen more frequently.
Mobile versions have the 'm.' subdomain, and provide a less optimized experience for desktop.
I would also argue that the youtu.be link is a canonical form, since the identifiers are identical to the source. It is just an optimized canonical proxy.