26 ms·
So instead of BDFL for Python, he's going "make using Python better". Congrats to him for finding something fun to do in retirement - dictators usually end up
by MR4D 6y ago
So instead of BDFL for Python, he's going "make using Python better".
Congrats to him for finding something fun to do in retirement - dictators usually end up with a different outcome. ;)
I'm looking forward to seeing the future of Python - I think this move will be great for the whole community, and lets him push boundaries without being bogged down on the management side.
- URfejk 6y agoA dictator found himself a new master. :)
- systemvoltage 6y agoAn official package manager with great dependency resolution would be fantastic. Or over take pipenv or poetry and sponsor it through Microsoft $$$. The biggest hurdle to python right now is the stupid package managers. We need cargo for Python.
- meowface 6y agopoetry feels like the closest equivalent to cargo that I've used. pipenv is better than the previous status quo but is still oddly unstable, with random new issues I encounter with every release. poetry "just works" for me, has better dependency resolution, and IMO has a nicer interface and terminal output to boot.
- codethief 6y agoCould you elaborate on what issues you've had with pipenv? I've only had very good experiences with it, so I'm surprised how many people here seem to prefer poetry.
- BerislavLopac 6y agohttps://chriswarrick.com/blog/2018/07/17/pipenv-promises-a-lot-delivers-very-little/ https://chriswarrick.com/blog/2018/07/17/pipenv-promises-a-l...
- codethief 6y agoRegarding not being able to work outside the project root[0]: This is actually one of the things that I love about pipenv! Anaconda, for instance, has environments that are not tied to a directory and are referred to by name (rather than by a directory path) and I've found this to be an absolute nightmare and extremely cumbersome! Not everyone has 10 projects that can share the same environment. (Besides, I would argue they never should.) I, for instance, have 10 projects that all require a slightly different environment and it's much easier to type a generic `pipenv shell` on the command line no matter what project I'm in, rather than trying to remember the Conda environment's name time and again. (Besides, it can be easily automated using .bashrc.) [0]: https://chriswarrick.com/blog/2018/07/17/pipenv-promises-a-lot-delivers-very-little/#working-outside-of-the-project-root https://chriswarrick.com/blog/2018/07/17/pipenv-promises-a-l...
- roel_v 6y agoI only know a bit about Python - in what sense is pip not a package manager?
- andi999 6y agoin the functioning sense.
- estomagordo 6y agocare to elaborate?
- nickjj 6y ago> in what sense is pip not a package manager? It is a package manager but it lacks features that many other package managers have in Ruby, Node, Elixir, and other languages. For example there's no concept of a separate lock file with pip. Sure you can pip freeze your dependencies out to a file but this includes dependencies of dependencies, not just your app's top level dependencies. The frozen file is good to replicate versions across builds but it's really bad for human readability. Ideally we should have a file made for humans to define their top level dependencies (with version pinning support) and a lock file that has every dependency with exact pinned versions.
- musingsole 6y agoIsn't that effectively the result of a typical `setup.py -> pip compile -> requirements.txt` flow? The setup.py file contains a human readable designation of requirements and then `pip compile` generates a requirements.txt with all deps' (and deps of deps') versions specified.
- xapata 6y ago> Sure you can pip freeze your dependencies out to a file but this includes dependencies of dependencies, not just your app's top level dependencies. Isn't that a good thing? > no concept of a separate lock file with pip. setup.py/.cfg vs requirements.txt, no?
- dalfonso 6y agoMicrosoft already bought NPM so there's precedent.
- TheDesolate0 6y agoYeah, but do we REALLY want M$ to control, github, npm, node, rust, python, and ...
- vmchale 6y agoWe still have Idris and ATS.
- ampdepolymerase 6y agoConsidering that half of all prominent functional PL researchers are hired by Microsoft Research I won't be too confident about that.
- coldtea 6y agoM"$"? 1999 called, they want their edginess back...
- webmaven 6y ago> M"$"? 1999 called, they want their edginess back... You realize that we're potentially just one leadership change away from returning to the 'bad old days', right?
- oblio 6y agoYou're missing the big picture. In 1999, Microsoft's revenue was at least 10x that of the closest competitor. It controlled the client (desktop) and was working on controlling the server, too. Google, Facebook, Netflix, etc didn't exist. Amazon was much smaller and in a different niche. Apple was trying to not keel over in 2 months. We're not a leadership change away from anything. The world has changed.
- Yajirobe 6y agopip is completely fine
- robmurrer 6y agopip in virtualenv. It is solved problem.
- coldtea 6y agoNot even pip developers believe "pip in virtualenv" makes python dependencies and package management a "solved problem"...
- user5994461 6y ago90% of professional python developers believe that python dependencies is a solved problem (with pip and virtualenv). The rest is too vocal.
- coldtea 6y ago>90% of professional python developers believe that python dependencies is a solved problem (with pip and virtualenv). 99% of professional python developers think that you've pulled this statistic out of your ass!
- deleted 6y ago[deleted]
- webmaven 6y ago> >90% of professional python developers believe that python dependencies is a solved problem (with pip and virtualenv). > 99% of professional python developers think that you've pulled this statistic out of your ass! 72.6% of all statistics are made up, anyway.
- dragonwriter 6y ago> 90% of professional python developers believe that python dependencies is a solved problem (with pip and virtualenv). I doubt that even 90% of those professional python developers who believe that python dependencies is a solved problem believe that it is solved with pip and virtualenv; the conda faction has to be bigger than 10%. Plus there's the people that think pip/venv aren't enough, but that tools on top of them plug the gaps (poetry). But I think that the share of professional developers who see it as a solved problem at all is less than 90%. Obviously, we've all got some way of working with/around the issues, that doesn't mean that we don't feel that they exist.
- staticassertion 6y agoI'd love to see Poetry take off. I'm watching it pretty closely.
- transcranial 6y agoSame here. Poetry has been a joy, after many bouts of frustration with pipenv.
- kamyarg 6y agoSame, we switched from pipenv ~6 months ago, had not had to worry about package/env related stuff since then, "just works". "evangelized" a sibling team also to consider switching, they were sceptical but just recently they mentioned they also like it more.
- robmurrer 6y agoBetter not move to NuGeT.eXe
- kitanata 6y agoWe use poetry for apps in production. At this point I think that's the winning solution and as it continues to grow and improve I think it will overtake all the others in this respect.
- hobofan 6y agoYes, Poetry is great! I avoided Python for a long time due to it's bad package management/environment handling situation, but Poetry solved all my problems there.
- derefr 6y agoPeople keep saying that about every new solution. But then another one comes along that's even better-er, and the previous one peters out. The biggest need for a package manager and its ecosystem is continuity: the stance that new features and paradigms will be gradually shifted toward — without package-ecosystem incompatibilities, without CLI commands just disappearing (but instead, with long deprecation timelines), etc. In other words, an officially-blessed package manager is one where, when something better-er comes along, it gets absorbed by the existing thing, instead of replacing it. That is what the Python ecosystem is missing.
- DangitBobby 6y agoYes, Poetry should be the blessed package manager.
- mumblemumble 6y agoI only want Poetry to become the be-all-end-all of package managers if it turns out that Python really is never going to fix the core problems that have engendered so many of the hacks upon which Poetry (and its competitors) is precariously balanced. Pyenv and venv, for example.
- bshanks 6y agoIf you were doing a green field redesign, how would you want Python to fix the core problems?
- beagle3 6y agoConda works well. Have never used cargo - what can cargo do that conda cannot?
- sidlls 6y agoConda works slightly better than pip, which is a pretty low bar. Python package management is probably the absolute worst thing about that language.
- beagle3 6y agoStill, it worked perfectly for me for Python, and a few more things. So I ask - what problems does conda have? And which of those does cargo not have? Alternatively, what does cargo do better than conda if they are not feature-for-feature comparable ?
- baq 6y agoconda can manage python versions itself as if it was another package. https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-python.html https://docs.conda.io/projects/conda/en/latest/user-guide/ta... i've never used it particular feature, but then i'm using python since 1.5 and i'm just used to it being a bit behind the times. stockholm syndrome, you might say, especially after trying out rust and seeing the work of art cargo is.
- jshen 6y agoHow do you ensure a team of 30 developers are all using the same version of python and all of the dependencies of your project with conda? How do you distinguish prod dependencies from dev dependencies? How do you update and manage transitive dependencies? There are more, but those are the big three.
- beagle3 6y agoConda manages Python itself as one of the dependencies - so that’s not actually a problem. I used conda to manage 2.6, 2.7 and 3.3 side by side, a d that was fine. I never locked the patch version (e.g. 2.7.3 vs 2.7.5) though that is definitely possible. It apparently requires a specific workflow - explicitly editing the requirements.txt file, rather than freezing it - which is not harder and which I was doing since day 1 but is apparently uncommon. (And it worked well across a few tens of machines, some running windows and some running Linux, with a mix of os versions and distributions. So I know it worked well already in 2013, and I’m sure it works better now). Speed is not good, but I never had it take more than a minute for anything. Some people here are reporting 15 minutes resolution times - that is a real problem.
- vmchale 6y ago> An official package manager with great dependency resolution would be fantastic. Need something like cabal. And a package index.
- birdyrooster 6y agoPython’s biggest hurdle is and always will be speed. Pip and wheels aren’t great but I would rather stop using golang. That’s a bigger win for me to stop maintaining proficiency and tooling for a language that I honestly consider inferior for the way I think about problems.
- systemvoltage 6y agoStrongly disagree. Python’s adoption is primarily driven by how easy it is to get started (barring some nasties in datetime, typing, and ofcourse the package manager). Python is plenty fast for most automation tasks.
- fermigier 6y agoPython is fast enough for many tasks, including number crunching for which it excels (as long as you are using the right libraries). Projects like Cython allow to tweak without too much effort the parts of a program that need an extra-boost. Last but not least, there have been discussions in the Python community in the last weeks of ways to speed up considerably the default (CPython) implementation. Hopefully, all of this will bear some fruits in the next 2-5 years. Guido will probably help from his new position at Microsoft.
- Radim 6y ago> discussions in the Python community in the last weeks of ways to speed up CPython This piqued my interest. I found this, by Mark Shannon: https://mail.python.org/archives/list/python-dev@python.org/thread/RDXLCH22T2EZDRCBM6ZYYIUTBWQVVVWH/ https://mail.python.org/archives/list/python-dev@python.org/... Is that what you mean?
- birdyrooster 6y agoOnly because libraries have to use C bindings to make it fast enough. I don't think Python performance is good enough when I have to stop writing in the language that we are benchmarking to get good results.
- 6y ago
- bengalister 6y agoI like the way npm does. It has a cache of all downloaded versions and it tries to flatten the dependencies when possible. If there are incompatible versions they remain deep in the dependency hierarchy.
- tomrod 6y agoI jumped down the black hole of pip + geo packages this week. Your comments are absolutely spot onm
- throwaway894345 6y agoPackage management and performance. Microsoft has done an impressive job of making software development better lately, and if any community needs it, it’s Python. Python has a lot of potential, but it’s sorely hampered by poor package management and performance, which are ultimately both symptoms of its commitment to exposing the entire CPython interpreter as a stable public interface. If the Python leadership were willing to commit to a narrower interface that met the goals of the c-extension community and also allowed Python to improve with respect to performance and package management (and I think this is very possible, hpy gets us close afaict), then we could have the best of both worlds, and I’m optimistic that Microsoft could provide this leadership.
- zo1 6y agoWhat poor performance? At this point, this criticism has become a "thing" that no one really expands on or enumerates as if it's a given. It's not a given, and at the very least is nuanced and complicated.
- throwaway894345 6y agoI’m not sure where you’re getting your information, but Python itself is quite slow (100-1000X slower than Go or Java) and it’s only “fast” when it’s dispatching to C or Rust or FORTRAN, and even then (to your point about nuance) these optimizations are only feasible sometimes; namely, when the cost of serializing is lower than the efficiencies gained by the optimizations available in the target language. This is all pretty widely discussed, including here on this very forum. No doubt that Python is sometimes fast enough (e.g., vanilla CRUD apps that do all of the heavy lifting in Postgres), but sometimes it’s not and you’re left with really crumby optimization options. And since we rarely can know with certainty on the outset of a project whether or not the bottlenecks will be amenable to the optimizations afforded by Python, it’s a dangerous game. I would even go so far as to say that other languages have become quite good at many of the things that Python is good at (namely pace of development) while being much better at the things that it’s not good at (performance, package management, etc), so I actually wouldn’t recommend starting new projects in Python except for certain niches, like scientific computing (and who knows if Python will even retain its dominance there).
- hodgesrm 6y agoBut if you fix Python package managers that will remove 50% of the audience for Docker. Think of the children! ;)
- fmakunbound 6y agoDefinitely this, but I doubt such a luminary of computer science will interested in such work. The XKCD comic on Python package managers/Python environments is not an exaggeration. I've always wanted to get more into Python but every time I attempt to, it's this hurdle that dissuades me. Edit: Also, I guess Poetry is another thing that came along since my last attempt.
- acqq 6y ago> The XKCD comic on Python package managers/Python environments is not an exaggeration. Thanks, I haven't seen it before. It's really quite close to the state on my home machine: https://xkcd.com/1987/ https://xkcd.com/1987/ It's not that I couldn't eventually resolve the current state, it's that at the moment a few programs I regularly run work, in spite of the different dependencies they have, and I know that starting "cleaning up" will cost too much time.
- webmaven 6y ago> > The XKCD comic on Python package managers/Python environments is not an exaggeration. > Thanks, I haven't seen it before. It's really quite close to the state on my home machine: > https://xkcd.com/1987/ https://xkcd.com/1987/ Hmm. I've had machines with similar states, though never with both Anaconda and Homebrew. Instead, I often had (in addition to the rest of the system-level snarl) isolated per-app Python interpreters that were specified & constructed with Buildout for development testing & deployment. Though I don't quite get the arrow from Homebrew 2.7 to Python.org 2.6. Is that actually a thing or hyperbole?
- acqq 6y ago> Is that actually a thing or hyperbole? It's fiction, of course. Art often has to exaggerate to make a point. I exaggerated too, just to remain in the artistic rather than the technical spirit of the comics. But there are some important bits of truth there, like in every good joke.
- 6y ago
- nickbauman 6y agoSo I hear Poetry is the way to go these days for python. But a plurality of the people I encounter in the Clojure community came there because leiningen (Clojure's package manager that uses Maven under the covers) "just works" and they got tired of having a tough time reproducing builds consistently on other platforms / OSs with Python; not to mention the performance gains of the JVM.
- JAlexoid 6y agoPython's package management is light years behind, the much hated Maven.
- dcolkitt 6y agoI think in general Python's biggest challenge is that it doesn't scale well. This is an agglomeration of issues around the same theme: bad packaging when there's a lot of cross-cutting dependencies, slow performance, no concurrency, typing as second-class citizens, etc. All of that is barely noticeable when you're just getting started on a small experimental project, but incredibly painful in large production systems. I strongly suspect that devs' satisfaction with Python is strongly correlated with the size of the codebase they're working on. Generally people using Python for one-off projects or self-contained tools tend to be pretty happy. People stuck in sprawling enterprise codebases, with O(million) lines of code to wrangle, seem almost universally miserable with the language. What I've observed a lot is that many startups or greenfield projects start with Python to get an MVP out the door as fast as possible. Then as the scope of the software expands they feel increasingly bogged down and trapped in the language.
- d0mine 6y agoHave you ever seen O(million) lines enterprise codebase that didn't suck?
- MR4D 6y agoLOL!! Or even worse - could you imagine how many lines that would be in C++ ? Yowza!
- oarabbus_ 6y agon!
- lrem 6y agoI've worked on several separate projects of that size in C++ and Go. None of them seemed to achieve a similar mess as Python codebases with one or two dozen thousand lines seem to. OTOH, all the typing developments in Python should have helped? I don't have that much experience with them in enterprise setting.
- zo1 6y ago
- shirakawasuna 6y agoPoetry is very good: https://python-poetry.org/ https://python-poetry.org/ It should be heavily promoted as the official option and included with the distribution.
- Arkanosis 6y agoCargo for Python… that's pretty much Poetry. I was already in love with Python, but Poetry has definitely made me a much happier Python developer.
- p1necone 6y agoI've never used anything I liked better than Maven Central + Gradle. Why can't everyone just copy the Java ecosystem when it comes to package management. (Although the maven package ecosystem seems ideal to me, Gradle is just "good enough" - it's mostly the standards around versioning and tooling dealing with versioning and everything being there that makes it good to me).
- wtetzner 6y agoMaybe they should just adopt the Nix package manager, and put some of Microsoft’s resources into making it work on Windows.
- 0xbadcafebee 6y ago> sponsor it through Microsoft $$$ You don't want that. When companies "sponsor" things they try to take them over, unless it's a pure donation, which is rare. The community then drops out because a company is in control. Later the project is abandoned by then company. It's a slow death spiral. I would love if Guido could create a new PEP for extending modules with generic namespaces, ala Perl/CPAN modules. There aren't 15 different libraries for doing the same thing in Perl, there's 1. You never replace it, you extend it by making a new module in a hierarchical namespace. The same core library's code might not change in years while new extensions can keep popping up. So even if you think Requests sucks, you can make Requests::UserAgent which inherits Requests code and extends it / gives a better interface. And these can be written & packaged by completely different authors. Then maybe Pypi wouldn't have 5,000 nearly identical yet mostly unusable modules, or modules with nonsense names.
- sakex 6y agoI had a job interview today and said this exact last sentence ahah
- ropable 6y agoJust use poetry (my preference) or pipenv. This has been a solved problem for a long time.
- jtdev 6y agoWhat’s wrong with virtualenv + requirements.txt + pip?
- takeda 6y agoWhat's wrong with poetry right now?
- greggman3 6y agodefaulting to installing and finding packages locally would be a big win for me.
- apichat 6y agoGnu Guix would be a great one ! (the package manager, not the distro GNU Guix System) https://guix.gnu.org/ https://guix.gnu.org/ https://guix.gnu.org/en/blog/2019/gnu-guix-1.0.0-released/ https://guix.gnu.org/en/blog/2019/gnu-guix-1.0.0-released/ https://guix.gnu.org/en/blog/2020/gnu-guix-1.1.0-released/ https://guix.gnu.org/en/blog/2020/gnu-guix-1.1.0-released/ https://guix.gnu.org/#guix-in-other-distros https://guix.gnu.org/#guix-in-other-distros https://guix.gnu.org/en/blog/2020/guile-3-and-guix/ https://guix.gnu.org/en/blog/2020/guile-3-and-guix/
- DylanDmitri 6y agoI'm hoping for a Jupyter/Excel hybrid, but that's mostly wishful thinking.
- deleted 6y ago[deleted]
- st1x7 6y agoPlease no. Excel is great when it stays within its lane and use case and doesn't try to be everything. Jupyter is okay-ish is some places but in general is way overused. Mixing them together would be a move in the wrong direction and a bit of a mess.
- Aperocky 6y agoOh no.
- gota 6y agoIf you mean to retire VB in favor of Python for writing macros, I'm all for it. Not much Jupyter though
- likelybear 6y agoThat's arguably the goal of [Pluto.jl](https://github.com/fonsp/Pluto.jl https://github.com/fonsp/Pluto.jl). It's a (Julia-specific) reactive notebook that automatically updates all affected cells and has no hidden state.
- DylanDmitri 6y agoOoh that's really good, thank you for sharing!
- antupis 6y agoThat looks so good that I am thinking about learning Julia.
- O_H_E 6y ago
- 29athrowaway 6y agoIf I remember correctly, Guido resigned as BDFL in 2018.
- nickbauman 6y agoThis is good news. It's sad that I find a lot of interesting possibilities on Azure end up being "windows only." Hopefully having more support for Python will fix some of that.
- bxbna 6y agoI'm not sure that Python will profit form this. He has had 50% positions before and most of the new things he did were precisely in the period in which he did not work for a corporation. If anything, this further corporate influence on Python development is not something to be applauded. I bet there will be lots of more churn in the next five years, big announcements and no results.
- eznzt 6y agoI hope they use Microsoft's money to make Python fast (or at least fast enough)
- pmontra 6y agoAt the top of my wish list there is a deployment tool for web applications like capistrano / mina for Ruby. I ended up writing my own for the project of a customer. It's been running for a few years now. Same customer, another project, I'm experimenting with a deployment system based on git format-patch. It copies the patches on the server (we have only one server) and applies them with patch. Then restart the web app. It's fun to learn the internals by rewriting the tooling but a good tooling to start with would be better.
- sireat 6y agoSolve "How to deploy my sweet Python script on grandma's computer" problem. That is some reasonable way to deploy to someone who is not a programmer nor tech person. Not sure how much has changed since this was written: http://effbot.org/pyfaq/can-python-be-compiled-to-machine-code-c-or-some-other-language.htm http://effbot.org/pyfaq/can-python-be-compiled-to-machine-co... PyInstaller.. well.. it works okay with std.. sometimes it does not. It is the Electron solution.. add pandas to a project and you get a 600MB install. As developers we can manage to deal with package managers.
- Pxtl 6y agoSuch a shame things like that used to be simple - Py2Exe was fine and Windows didn't freak the hell out at the sight of an unsigned binary.
- askvictor 6y agoIn the education space (where Python is pretty big), the biggest problem we have is that Python code isn't 'shareable' so it's hard for kids to show off their creations to Grandma. Sure, there are some products which work to work around that (like repl.it), but the core problem remains - a student can't easily get their Python program to run on an arbitrary computer. It's why I'm very tempted to move to JS for teaching, despite all of the dragons lurking there.
- floydnoel 6y agoI agree, it’s one of the reasons I stopped teaching my kids Python and switched to JS. It is so easy to share and so portable, and runs everywhere!
- benhurmarcel 6y agoNot just to grandma. I have trouble deploying my scripts to my colleagues.
- anitil 6y agoI had this with a collleague the other day: 1. Install foo 2. No not that foo! 3. Reinstall python 4. Goto 1
- ImaCake 6y ago>Congrats to him for finding something fun to do in retirement - dictators usually end up with a different outcome. ;) I guess he is going for a Diocletian cabbage farmer style retirement.
- business007 6y agoWhy dictator? lmao I'm not familiar with the guy on anything else than he's PHP's creator
- Pxtl 6y agoIn the off chance this isn't a joke: Python, not PHP. And he wasn't just its creator, he was the head of the project for its whole life until his recent retirement. Typical term in the OSS community for one guy who is in charge of a massive OSS project is Benevolent Dictator For Life, or BDFL. And Guido was definitely one of those.
- deleted 6y ago[deleted]
- takeda 6y agoDoes that mean I will need to switch from mypy to pyright?