2000s: "extend Python with C"
2010s: "extend Python with Python"
2020s: "extend Python with Rust"
I have many conflicting feelings about this progression…
@jacob in the last few months use uv is addressed more things that people realize. pip, pipx, github actions, and now a docker image.
I wonder when they have their own python fork.
@webology @jacob … you mean RustPython? https://github.com/RustPython/RustPython It’s been around for years; but it’s quite a bit slower than CPython.
@freakboy3742 @jacob No, I'm aware of it and I wish them luck with it.
I mean the UV people taking a fresh take on it using whatever magic they are working with.
@webology @jacob I don’t think the magic is that magic… the magic is money. If you spend money, you can hire people, and *shit* *gets* *done*. Astral’s proving that with packaging; I’ve spent the last week working full time on getting iOS cross compiles working. That’s time that I don’t have unless someone’s (Anaconda, in my case) is paying me to do it.
@freakboy3742 @jacob Exactly that.
@freakboy3742 I'm impressed with how they are managing so much, too. Their output is stability has been impressive.
@webology @freakboy3742 it’s that but it’s not JUST that. Plenty of people get paid to write some pretty terrible software. It’s also taste, and good design, and good execution, and listening to the community, and the benefit of having like a dozen pieces of prior art to learn from, and, and, and …
@jacob @freakboy3742 sure, but it's one of the main ingredients too.
@jacob @freakboy3742 Second mover, moving in across the board, is that what you're saying?
@sgillies @jacob … no? Astral is hardly the *second* mover here - cf pipenv, poetry, pdm, etc etc. But, they’re the first one that has been *funded*, which means it’s not “2 folks fixing bugs on weekends”, it’s “a whole team writing code full time with a purpose”. That makes a *big* difference to the rate of progress. *That* is the point.
You can question whether the money poses a strategic risk if/when it goes away; but you can’t argue the money yields *progress*.
@freakboy3742 @sgillies ha yeah it’s more like the 12th mover than the 2nd. I mean, it’s not even the first that’s been funded.
@jacob @freakboy3742 @sgillies I _want_ to be supportive of and enthusiastic about this work, I think it's great that people are getting paid properly, but it just has neon warning lights flashing "unsustainable" all over it. and the fact that it is being written *assuming* a full time maintenance team — writing Rust — leads me to an inexorable conclusion that the community will all switch to this great option, which will start bitrotting in 10 months when astral flames out
@jacob @freakboy3742 @sgillies the only times I have ever wanted to be wrong about something more badly have been about US federal politics and the pandemic (unfortunately, I was not wrong either of those times)
@glyph @jacob @sgillies Oh - absolutely this. As enthusiastic as I am about the direction uv is going, I *haven't* adopted them anywhere - because I want very much to understand Astral’s intended business model before I hook my wagon to their tools. It's definitely not clear to me how they're going to stay liquid once the VC money runs out. They could get me onboard in a hot second if they published a "This is what we're planning to charge for" blog post.
@freakboy3742 @glyph @jacob @sgillies I haven't adopted uv anywhere for similar reasons. 100% agreed on money being the magic, it turns out you can do a whole lot with 8 hours a day.
@sethmlarson @freakboy3742 @jacob @sgillies kind of a relief to hear that this is a common sentiment, and maybe I will also remain stalwartly anti-uv until a similar milestone
@glyph @sethmlarson @freakboy3742 @jacob @sgillies As much as I hate VC, I find this whole genre of pearl-clutching around uv weird. FOSS projects flame out all the time too. If Frost loses interest, there’s no PDM anymore. Same for Ofek and Hatch(ling).
I fully expect Astral to flame out and us having to fork/take over—it’s the circle of FOSS. To me uv looks like a genius sting to trick VCs into paying to fix packaging. We’ll be better off either way.
@hynek @sethmlarson @freakboy3742 @jacob @sgillies Even in the best case, Rust is more expensive and difficult to maintain, not to mention "non-native" to the average customer here (who presumably knows enough Python to dip into helping out with maintenance if Ofek or Frost wanders off.
@hynek @sethmlarson @freakboy3742 @jacob @sgillies And the difficulty with VC money here is that it can burn out *all* the other projects in the ecosystem simultaneously, creating a risk of monoculture, where previously, I think we can say that "monoculture" was the *least* of Python's packaging concerns.
@hynek @sethmlarson @freakboy3742 @jacob @sgillies (Also, referring to it as "pearl-clutching" is both insulting and inaccurate. Pearl-clutching is an exaggerated show of high emotion, whereas what is being expressed here is a fairly nuanced ambivalence towards what we all acknowledge is otherwise a good thing)
@glyph @hynek @sethmlarson @freakboy3742 @jacob @sgillies Yeah, this is my perspective as well. I don't mind that uv exists, it's great that it does; what I do mind is the implication that all #Python developers should dump pip, pip-tools, pipenv, pyenv, virtualenv, hatch, poetry, etc. and use uv instead.
@glyph @hynek @sethmlarson @freakboy3742 @jacob @sgillies
Shouldn't we just acknowledge that Perl is dead? And so, then, must be perl-clutching.
@russnelson @glyph @hynek @sethmlarson @freakboy3742 @jacob @sgillies Perl isn't dead at all - for example, https://github.com/metabrainz/musicbrainz-server/ is a solid 45% Perl.
@glyph @hynek @sethmlarson @freakboy3742 @jacob @sgillies Yeah, the thing I worry about is the Uber/Lyft “we’re in this to undercut the competition until they go out of business” model where they just light money on fire until there are no competing projects left in any of the spaces they target. That alone is reason for me to support and maintain competitors.
@ubernostrum @glyph @sethmlarson @freakboy3742 @jacob @sgillies a) that’s what people WANT. It’s emphatically not what _I_ want but talk to Python normies, look at the blog posts: they all want one tool to rule them all and consider the current state of having to choose bad.
b) you can’t fork Uber/Lyft, so I don’t think it’s a fair comparison. If uv were commercially-licensed I would get the argument, but not as long as it’s MIT/Apache.
@hynek @ubernostrum @glyph @sethmlarson @freakboy3742 @jacob @sgillies
> but not as long as it’s MIT/Apache.
Haven't we seen this movie enough times (MongoDB, Elastic, Redis, Hashi) to recognize the VC playbook on license changes?
I know you said in another reply that you expect Astral will flame out and the community will need to fork uv, but I think it's more likely they'll do a license change first. This would also result in a fork, but Astral then keeps uv going as proprietary software.
@carlwgeorge I would not make an analogy with Redis (I don't think it makes sense to offer "managed uv" as a Saas), but perhaps with Docker/Conda, i.e. buy a license if you are a company with more than X employees/YM revenue.
Nevertheless, I think it's not the best choice. They'd better build another SaaS (à la Vercel) or add paid features (like Docker Scout). They would only lose a huge market share if they restricted access to uv, and it's their medium to make money.
@baggiponte I agree Redis isn't a full on analogy. My comment was intended to be limited in scope to this pattern:
- VC-funded company starts with open source to get momentum, perhaps even with good intentions
- VC applies pressure to get a return on their investment
- Company does a license change (usually enabled by a CLA) in pursuit of profits
I do think the risk of that pattern playing out applies, even if the details of consumption (SaaS or otherwise) aren't the same.
@ubernostrum @glyph @sethmlarson @freakboy3742 @jacob @sgillies (And to stress once more: this is different from Ruff which didn’t solve anything, but took what’s there’s and made it faster/more convenient. I’m not happy with that. But uv is solving a problem we as a community have proven for now decades aren’t capable to solve with the resources and focus we have.)
@hynek @glyph @sethmlarson @freakboy3742 @jacob @sgillies I would have preferred that the money be sunk into something like PDM or whatever that’s written in Python and that was eager to adopt PEPs rather than something that’s in not-Python and from the people who brought us Ruff (which I dislike and avoid for several reasons, this among them).
PDM even has a Python installer!
@ubernostrum I would describe myself as extremely eager to adopt PEPs… I also participate in PEP discussions all the time! I’m not sure where that opinion comes from or why it’s coupled to being written in Rust either, but if I can do more let me know…
@charliermarsh read it the other way round: people make a selling point of uv’s early adoption of things (like lockfiles) but other tools in the space are also early adopters. And are often written in Python, which is more accessible to Python programmers than not-Python.
@hynek @ubernostrum @glyph @sethmlarson @freakboy3742 @jacob @sgillies Ruff definitely solved something for me. I never had time to learn how to configure and run a half dozen (or more) linters and static analyzers on my Python code and now I don't have to because all their functionality is in one tool... and it's far faster than all of them combined. When Ruff can be used to replace mypy (and be faster than mypy) I'll be happy to drop one more tool from the workflow.
@kevin @hynek @ubernostrum @sethmlarson @freakboy3742 @jacob @sgillies while I don't love a monoculture, I cannot argue with the fact that *some* consolidation is necessary. the fact that part of my brain is occupied with knowledge of how to configure autoflake, black, and isort *in order* so that the output is stable is not a great comment on the state of the ecosystem, and ruff does address that inconsistency. even just having the *docs* in one place is helpful.
@kevin @ubernostrum @glyph @sethmlarson @freakboy3742 @jacob @sgillies I think you’ve just described “more convenient”. ;)
@glyph
Just dropping in here to say that corporate capture of the Python ecosystem is the #1 keeps-me-up-at-night subject in my community work, so I watch Astral with interest, even if I'm not yet too worried.
@hynek @sethmlarson @freakboy3742 @jacob @sgillies
@glyph @sethmlarson @freakboy3742 @jacob @sgillies Given how much of Python’s ecosystem nowadays depends on Rust, I don’t consider that a valid argument anymore. As Jacob wrote in the initial post, it’s a thing now wherever we like it or not. uv is neither the first nor the last and it shouldn’t be held against it. I’m pretty sure Hatch has a Rust component nowadays too.
@hynek @sethmlarson @freakboy3742 @jacob @sgillies does it? where? as far as I can tell there are no .rs files in https://github.com/pypa/hatch
@hynek @glyph I don't think anyone is objecting to Rust as a reasonable technical choice for this kind of tooling. But we do have to realistic about it shrinking the potential future maintainers pool by a lot which is a downside to weigh against the benefits. And with paid contributors right now is kind of masks the downside in a way that many of us who have been on the receiving end of this cycle before find concerning.
@coderanger @hynek 100%, and I am definitely not complaining when I use a project that's adopted uv and ruff and everything is almost implausibly fast. it's not really a *bottleneck* in my other projects, but I certainly don't mind the focus on performance that comes along with the choice of Rust.
I certainly don't object to Rust *qua* Rust, I depend on mountains of it in Cryptography and I wish I depended on more. but that's a different element of the stack with a very different context.
@coderanger @hynek but to acknowledge the validity of elements of your critique here as well — it's not like everyone with passing familiarity with Python is jumping at the chance to contribute meaningfully to the packaging ecosystem either. The language barrier is one barrier among dozens and it may not even be the most significant one, but it is the newest one.
@glyph @coderanger I don’t think y’all quite grok what uv makes so special due to your seniority. The speed is really cool, but the reason Rust is elemental is that it’s one compiled blob that can be used to bootstrap and maintain a Python development environment. A blob that will never break because someone upgraded Homebrew, ran pip install or any other creative way people found to fuck up their installations. Python has shown to be a terrible tech to maintain Python.
@hynek @coderanger I feel like somewhere a Homebrew maintainer is muttering "challenge accepted"
@hynek @glyph @coderanger I could not have said it better. 100% agree! Let's be happy that the Python community gets this tool and let's not worry too much about what could go wrong for now. I really find it a bit strange how Astral gets a lot of hate as if they've personally insulted established tools. And yes, I've always wanted to learn Rust, so this gives me even more incentive to finally start learning the basics.
@hynek @glyph @coderanger I signed up for Mastodon just to post this
I spent a significant amount of time making it so that Hatch also provides a similar experience such that it's the only tool you need to download manually. Installation takes 1-3 seconds and I don't think I can make it any faster, technically.
Example run locally and on GitHub Actions from here https://github.com/tox-dev/platformdirs/actions/runs/10758318125/job/29833485691:
@ofek @glyph @coderanger yeah I mention PyApp in some side-thread WRT Hatch has (indirectly) Rust inside too, to unjank the Python-ness :D
@hynek @glyph @coderanger I will probably be unable to make the time to read the licensing position but as long as it’s forkable, it should be fine, no?
There is quite some overlap in the Venn diagram of Python and Rust programmers and in the best case the tooling opens more channels between the two communities.
@hynek @glyph @coderanger as a user of micromamba, and now pixi, which did that for the conda world, I agree 100% with this. It is so much easier to setup an env from the ground up. Teaching is much easier, maintaining scientific environments consistent across multiple machines became much easier, everything is easier in that form. Single binary, no dependencies, quick to bootstrap anything python related with few commands and consistent instructions across multiple OSes.
@hynek @glyph @coderanger hm, never thought of this argument but it very much checks out
@tintvrtkovic @hynek @glyph @coderanger Agreed, this is the killer advantage of *any* compiled language over one with a runtime. And to make it worse, Python is far from being the best runtime based language for app deployment :-(
@pfmoore @hynek @glyph @coderanger speaking for me personally, if we agree Rust is the right tool for this job (I'd much rather deal with Rust than with C, C++ or Go), the possibility of forking uv becomes a much easier pill to swallow some day in the future.
@pfmoore @tintvrtkovic @hynek @coderanger interesting that "compiled" and "with a runtime" are the opposite ends of the spectrum here :). (I get what you're saying, but it is _possible_ to do this with Python, and a real shame that "rewrite in a different language" is actually an easier path than just using existing tooling)
@pfmoore @tintvrtkovic @glyph @coderanger The fact that now I can give anyone a Python project and uv and tell them to “just run `uv run X` in the project folder” and it will take about everything including installing Python is nothing short of magic. There’s a short line to running Zip files.
@hynek @glyph @coderanger This is such an underemphasized point. My team is responsible for the dev tooling at my employer, and I’m *so* delighted about uv, even as I’m also very skeptical about their business model.