Fyn: An uv fork with new features, bug fixes, stripped telemetry (github.com)

by BiteCode_dev 78 comments 90 points
Read article View on HN

78 comments

[−] jcattle 54d ago
Nah sorry, so far 4 of the 9 commit messages in that fork are "cleanup".

And the first two commits are "new fork" and "fork", where "new fork" is a nice (+28204 -39206) commit and "fork" is a cheeky (+23971 -23921) commit.

I think I'm good. And I would question the judgement of anyone jumping on this fork.

[−] albinn 54d ago
I agree, I like some of the directions the fork would go and dislike some. The apparent, fork, publish on HN, then change (and the change showing not a lot of understanding) makes me throughly question the legitimacy and long term stability of it.
[−] dec0dedab0de 54d ago
absolutely, but i like the spirit behind it. Hopefully we get a few more and one of them pulls ahead.
[−] bjornarv 54d ago
creator is definitely just jumping on this for some clout
[−] ricardobeat 53d ago
based on that, the project description is entirely a lie - there are no bugfixes, new features, or even the removed telemetry here ?
[−] emil-lp 54d ago
Commit messages say a lot about people.
[−] jcattle 54d ago
They really do. Let me cite another one from the repo:

"fix: updated readme. sorry was so tired i accidentally mass replaced uv with fyn for all"

[−] nikolay 54d ago
Branch names do, too!
[−] lr1970 54d ago
From fyn's roadmap:

> 2. Centralized venv storage — keep .venvs out of your project dirs

I do not like this. virtual environments have been always associated with projects and colocated with them. Moving .venv to centralized storage recreates conda philosophy which is very different from pip/uv approach.

In any case, I am using pixi now and like it a lot.

[−] skeledrew 54d ago
I like it. Enjoyed having it with Conda, was sorry when it was lost with uv. Been a pain to search my projects and have irrelevant results that I then have to filter. Or to remember to filter in the first place. The venvs may be associated with the projects, but they're just extraneous clutter unless there's actually something to be done directly on them, which is very rare.
[−] simonw 54d ago
Here's where that feature was (and is still being) discussed in the uv repo: https://github.com/astral-sh/uv/issues/1495

It's been open for two years but it looks like there's a PR in active development for it right now: https://github.com/astral-sh/uv/pull/18214

[−] 0cf8612b2e1e 54d ago
One problem I have on my work machine is that it will do a blind backup of project directories. Useless .venv structure with thousands of files completely trashes the backup process. Having at least the flexibility to push the .venv to a cache location is useful. There was (is?) a uv issue about this similar use case (eg having a Dropbox/Onedrive monitored folder).
[−] dec0dedab0de 54d ago
thats my biggest problem with uv, i liked the way pipenv did it much better. I want to be able to use find and recursive grep without worrying that libraries are in my project directory.

uv is just so fast that i deal with it.

[−] valicord 54d ago
rg/fd respect gitignore automatically which solves this problem
[−] dec0dedab0de 54d ago
Ill check them out, thanks!

…but I don’t have everything in a git repo. Some of my “projects” are just local scraps for trying things out.

And it doesn’t account for any other tooling that may not respect gitignore by default.

it’s my biggest problem with npm too. Ive worked around it long enough, it’s just annoying.

[−] nvme0n1p1 54d ago
rg also ignores "hidden" files by default (files/dirs starting with a period), so it will ignore .venv regardless if it's in a repo.
[−] WhyNotHugo 54d ago
Pip doesn’t have any philosophy here. It doesn’t manage your virtualenv at all, and definitely doesn’t suggest installing dependencies into a working directory.

Putting the venv in the project repository is a mess; it mixes a bunch of third party code and artifacts into the current workspace. It also makes cleaning disk space a pain, since virtualenvs end up littered all over the place. And every time you “git clean” you have to bootstrap all over again.

Perhaps a flag to control this might be a good fit, but honestly, I always found uv’s workflow here super annoying.

[−] mixmastamyk 54d ago
Disagree—better to have space allocated in each project where they can be easily deleted at once. Rather than half hidden in your home folder somewhere with random names and forgotten about.

If for some rare reason you wanted to delete all venvs, a find command is easy enough to write.

[−] santiagobasulto 54d ago
Sometimes I want the venvs to be in a centralized location, and just do:

UV_PROJECT_ENVIRONMENT=$HOME/.virtualenvs/{env-name} uv {command}

[−] short_sells_poo 54d ago
I like it a lot :D.

Virtual environments have been always associated with projects in your use case I guess.

In my use case, they almost never are. Most people in my industry have 1-2 venvs that they use across all their projects, and uv forcing it into a single project directory made it quite inconvenient and unnecessary duplication of the same sets of libraries.

I dislike conda not because of the centralized venvs, but because it's bloated, poorly engineered, slow and inconvenient to use.

At the end of the day, this gives us choice. People can use uv or they can use fyn and have both use cases covered.

[−] lr1970 54d ago

> and uv forcing it into a single project directory made it quite inconvenient and unnecessary duplication of the same sets of libraries.

Actually, uv intelligently uses hardlinks or reflinks to avoid file duplication. On the surface, venvs in different projects are duplicate, but in reality they reference the same files in the uv's cache.

BTW, pixi does the same. And pixi global allows you to create global environments in central location if you prefer this workflow.

EDIT: I forgot to mention an elephant in the room. With agentic AI coding you do want all your dependencies to be under your project root. AI agents run in sandboxes and I do not want to give them extra permissions pocking around in my entire storage. I start an agent in the project root and all my code and .venv are there. This provides sense of locality to the agent. They only need to pock around under the project root and nowhere else.

[−] mr_mitm 54d ago
This is actually the feature that initially drew me towards uv. I never have to worry about where venvs live while suffering literally zero downsides. It's blazing fast, uses minimal storage, and version conflicts are virtually impossible.
[−] clickety_clack 54d ago
Do you only work on projects individually? Without project-specific environments I don’t know how you could share code with someone else without frequent breakages.
[−] imcritic 54d ago
How is pixi better than uv?
[−] lr1970 54d ago

> How is pixi better than uv?

pixi is a general multi-languge, multi-platform package manager. I am using it now on my new macbook neo as a homebrew _replacement_. Yes, it goes beyond python and allows you to install git, jj, fzf, cmake, compilers, pandoc, and many more.

For python, pixi uses conda-forge and PyPI as package repos and relies on uv's rattler dependency resolver. pixi is as fast as uv (it uses fast code path from uv) but goes further beyond python wheels. For detail see [0] or google it :-)

[0] https://pixi.prefix.dev/latest/

[−] thinkadd 54d ago
How is it different than mise?
[−] syhol 54d ago
There is a good chunk of overlap but mise predominately pulls from github releases artifacts/assets and pixi uses conda packages. While mise can use conda packages, the mise-conda backend is still experimental. I don't think github releases or conda packages are better than the other, they both have tradeoffs.

Pixi is very python focused, it's both a tool manager and a library dependency manager (see uv/pip). Mise considered library dependency an anti-goal for a long time, while I don't see that on the website anymore I haven't seen any movement to go into that space.

[−] nilslindemann 54d ago
They are all anachronisms, as they have no GUIs, just commands to be typed into a REPL.
[−] Levitating 54d ago
It has been working fine for build systems like cargo.
[−] smohare 54d ago
[dead]
[−] Bender 54d ago
Given the telemetry, how did uv ever get approved/adopted by the open source community to begin with, or did it creep in? Why isn't it currently burning in a fire?
[−] simonw 54d ago
The telemetry they removed here isn't unique to uv, and it's not being sent back to Astral. Here's the equivalent code in pip itself: https://github.com/pypa/pip/blob/59555f49a0916c6459755d7686a...

It's providing platform information to PyPI to help track which operating systems and platforms are being used by different packages.

The result is useful graphs like these: https://pypistats.org/packages/sqlite-utils and https://pepy.tech/projects/sqlite-utils?timeRange=threeMonth...

The field that guesses if something is running in a CI environment is particularly useful, because it helps package authors tell if their package is genuinely popular or if it's just being installed in CI thousands of times a day by one heavy user who doesn't cache their requirements.

Honestly, stripping this data and then implying that it was collected by Astral/OpenAI in a creepy way is a bad look for this new fork. They should at least clarify in their documentation what the "telemetry" does so as not to make people think Astral were acting in a negative way.

Personally I think stripping the telemetry damages the Python community's ability to understand the demographics of package consumption while not having any meaningful impact on end-user privacy at all.

Here's the original issue against uv, where the feature was requested by a PyPI volunteer: https://github.com/astral-sh/uv/issues/1958

Update: I filed an issue against fyn suggesting they improve their documentation of this: https://github.com/duriantaco/fyn/issues/1

[−] tfrancisl 54d ago
Super tenuous to claim that the info being sent to package indices constitutes "telemetry". Very clear this is a clout chaser.
[−] dirkc 54d ago
I suspect that my normal workflows might just have evolved to route around the pain that package management can be in python (or any other ecosystem really).

In what situations are uv most useful? Is it once you install machine learning packages and it pulls in more native stuff - ie is it more popular in some circles? Is there a killer feature that I'm missing?

[−] simonw 54d ago
If you have hundreds of different Python projects on your machine (as I do) the speed and developer experience improvements of uv make a big difference.

I love being able to cd into any folder and run "uv run pytest" without even having to think about virtual environments or package versions.

[−] politelemon 54d ago
Imo, uv scripts with the dependencies in the header.

https://docs.astral.sh/uv/guides/scripts/#declaring-script-d...

[−] worksonmine 54d ago
Why prefix the settings UV_CACHE_MAX_SIZE and UV_LOCKFILE with UV_ if they're new features? Makes no sense.
[−] albinn 54d ago
The shell and upgrade commands are helpful, especially when onboarding someone who has not used uv before.

Crazy that there is not way in uv to limit the cache size. I have loved using uv though, it is a breath of fresh air.

[−] bovermyer 54d ago
I like the direction this fork is going in. I will wait to use it until it achieves a little more critical mass in adoption, though.
[−] e10v_me 54d ago
I'm surprised by how many people has fallen for that. I also wonder how many of them are the author's friends or bots.
[−] tcbrah 54d ago
love that "we removed the telemetry" is now a headline feature worth forking an entire project over. says a lot about where dev tooling is headed tbh
[−] trollbridge 54d ago
Looks great, and in particular, uv’s cache growing forever and lack of the uv shell command were both maddening.

I assume mainstream uv development will go into maintenance mode now, so it’s great to see a quality lineage like this.

[−] aguyonhn 53d ago
non-solution to a non-problem
[−] skeledrew 54d ago
Will be switching to this, or another fork, soon as I see decent stability.
[−] derodero24 54d ago
[flagged]
[−] stackedinserter 54d ago
[flagged]
[−] fmajid 54d ago
I'm worried about OpenAI enshittifying uv and ruff now they've acquired Astral, so it's good to have options.