Being new to python, the astral stuff is such a relief.<p>I don’t think experienced python folks realize how much the flexible tooling slows people down, and creates friction for adopters. Setting up my project I tried 3 environment managers, 2 type checkers, 3 formatters/linters, 3 packagers/dependancy/project managers.<p>I know this is kinda the n+1 issue where astral is just adding another. But it feels like a complete and well designed stack, not a box of parts encouraging me to build my own. Reminds me a bit of go tooling.<p>I am a convert. I’ll happily jump on their type checker and packager when ready.
I'm a little sad that Ruff took off as a re-implementation of a whole bunch of work that was already done, rather than as a project to improve the work that was already done.<p>It was nice to be able to write little extra linters or flake8 plugins in the language I was linting. Plus decades of effort had gone into making those plugins pretty great, finding the right separation of linting codes so that the right things could be linted/ignored per codebase.<p>I understand why they did it, and they have done it remarkably well, but "rewrite it from scratch" is almost never the best answer and part of me wonders if this result could have been even better achieved another way.
I'm very impressed by the recent developer experience improvements in the python ecosystem. Between ruff, uv, and <a href="https://github.com/gauge-sh/tach">https://github.com/gauge-sh/tach</a> we'll be able to keep our django monolith going for a long time.<p>Any opinions about the current state of the art type checker?
I first attempted to use ruff for a small project ~2 years ago, and at the time felt that it wasn't quite good enough to replace the: black+isort+whatever linter combo we were using at work.<p>I've used it a few times since then and now I'm a big proponent of using only ruff. I think most of its value comes from:<p>1. Being fast (or at least fast enough that it's not annoying).
2. Replaces the linting/formatting combo of multiple tools, reducing the cognitive load for the developer.<p>Anyway, big fan.
I've been using an amalgamation of pyenv, pip-tools, black, isort, etc. for projects and just gave uv and ruff a try. Wow, it really is fast! Skeptical of anything VC-backed but I'll be keeping my eye on it.
I don't care one bit about py-land, but it's always nice to see a rust project swoope in and save the day.<p>Language processing like compiling or linting is just one of the many aspect where rust can really play out it's awesome strength.
I’m used to running command line tools on fast machines, but the first time I ran ruff on my codebase I was blown away. My codebase isn’t massive but most (non-rust) tools just take a while to run. It might be less than a second of startup overhead, but it’s noticeable. Ruff is so fast you wonder if it even did anything. It reminded me how fast computers actually are.
Some previous discussions:<p><a href="https://news.ycombinator.com/item?id=34788020">https://news.ycombinator.com/item?id=34788020</a><p><a href="https://news.ycombinator.com/item?id=37908760">https://news.ycombinator.com/item?id=37908760</a>
So much marketing coolaid/bullshit.<p>I'm not that fan of Ruff because to me it doesn't make any sense to add a rust dependency to "python" and it blows my mind that people are so keen to accept the ugly formatting inherited from Black just because "it gives consistency to the team, so I don't have to think, and we don't have to discuss code style"...<p>But all of that personal opinion set aside, what triggers my initial statement is that so many persons are so excited to run to use Ruff because... "It is so fast"... when I'm quite sure most of them would never notice any real speed difference with their modest codebase.<p>In almost all the codebases I have seen, proprietary and OSS, pylint or any other linter was quasi-instant. There are probably a few huge codebases that would see a speed benefit of a few seconds to use Ruff, but their owner would probably better have a look at their code to understand how their reached such a monster!