Readit News logoReadit News
pdimitar · 2 years ago
30 years later I still love programming but people given authority opting for cutesy names for critically important terms in the ecosystem should be severely limited in their options.

Flakes, pills, wheels, eggs... Come on, people. I am willing to bet good money that it won't hurt you physically if you just call them "packages".

rkangel · 2 years ago
I get the issues, but using a fresh name that doesn't have pre-conceptions is often the better idea. If I call something a "package" people will have an immediate understanding of what "package" means, but it will be several slightly different understandings and that can cause quite subtle issues with learning and understanding.

To talk about a different context the BEAM VM (Erlang/Elixir) has "processes". These aren't OS processes but pre-emptively scheduled threads of execution, scheduled by a userspace scheduler onto the available processor cores. They're similar to green threads or fibres in other contexts. They're called "processes" in Erlang because Erlang is old enough that the word process hadn't been implicitly co-opted to mean "OS Process", and it means that whenever I talk about Elixir scheduling I have to insert some version of the above explanation otherwise everyone gets the wrong idea. If they'd called them "florbs" instead, there would be no ambiguity. I still probably have to define the term, but I'm defining it against a universal blank canvas.

Or to put it yet another way "All the good metaphors are already taken"

pdimitar · 2 years ago
As a guy who made a career out of Elixir (7 years now, though I have mixed and matched that with quite a bit of Rust and some Golang) I could not agree more on the confusing "process" moniker.

My point was that calling packages "cheeses" and "wheels" was a conscious decision on the part of the Python community and apparently nobody stopped to think if it does not introduce friction or make them look unprofessional.

As you pointed out, Erlang's "process" moniker came from a long long time ago and they have a good reason for it. Python though? 10 years ago many of these problems were well-understood already.

Again, my argument is against cutesy quirky names. I get you that the generic "package" name carries some assumptions with it but IMO that's the more worthy battle to fight: to make sure everyone understands the same thing when "package" is mentioned.

(EDIT: All that being said, Erlang could have indeed used a quirky name because what they have doesn't seem to have its own term yet. And it doesn't exist anywhere else I think.)

misnome · 2 years ago
> I am willing to bet good money that it won't hurt you physically if you just call them "packages".

So, "Packages are the new standard of distributing packages, and replace packages" is clearer to you?

pdimitar · 2 years ago
EDIT: Reduced my original comment to this:

This only outlines that the article is very niche and not very interesting to be posted for non-Python audience.

--- ORIGINAL COMMENT:

Need I explain that if you arrive at such a title you would have to reevaluate if it's worth posting at all? Apparently I need to explain it. ;)

This article is more or less pointless anyhow. Using better terminology would have made that clearer much earlier in the process IMO.

rvnx · 2 years ago
You wouldn't have to say it even
jasonlotito · 2 years ago
"99% of top Fooz packages are using new package system"

vs

"99% of top Fooz packages are lame"

joe-user · 2 years ago
To consider that the only option is rather reductionist. For example, simply add a version, and to use the original title instead of inventing one:

> 99% of top Python packages are now on version 2

boristhespider · 2 years ago
Yes, but if we just called them packages the headline would be "99% of top Python packages are now packages"
pdimitar · 2 years ago
Which would make the article completely redundant, and that works for me. :D

But let's be serious, they could have just said "99% of the top Python packages upgraded to our new packaging system" which would be much more informative and interesting title and would make me read it in full, as opposed to now when I just facepalmed.

easywood · 2 years ago
You're completely right. The site doesn't even bother to explain what "eggs" are. And while it lists the benefits of wheels, there is no word about the apparent downsides of eggs, or maybe a little comparison table.
frou_dh · 2 years ago
The official documentation actually has a Glossary so they evidently do know that it's an issue.

https://packaging.python.org/en/latest/glossary/

Demotooodo · 2 years ago
We are not even able to align all of this shit in one great platform.

There is 0 reason why all of this is so unaligned.

Alone how many people maintain packages for different Linux distirs etc.

Maintain it once together and only promote it for your distri when you like it.

Soooo much energy wasted

Demotooodo · 2 years ago
Imagine PackageHub:

Allows for standard features like network of trust, signing, search, smart scanning, transformation into distri specific build flows from a meta format, statistics tracking, CDN, unified package API with dependency resolution and/or SDKs for this.

It would also be much much easier to get sponsoring.

wiredfool · 2 years ago
Rpms, apks, debs, msi, exe, tarballs, zips, jars, wars...
pdimitar · 2 years ago
Well these are at least more or less known and widely used (though I agree if you never worked with Java that .JAR and .WAR will be confusing).

But when a language ecosystem opts for cutesy niche names then they just end up confusing everybody, including some of their own users.

LoganDark · 2 years ago
They're not even packages. The package is the source code. A "Wheel" is a compiled distribution.
mschuster91 · 2 years ago
This is, other than the fact it violates UNIX principles, my biggest issue with Homebrew.
jen20 · 2 years ago
Which UNIX principles do you believe it violates?
omgmajk · 2 years ago
For people who are confused by this:

"Wheel has an official standard specification. Egg did not. Wheel is a distribution format, i.e a packaging format. 1 Egg was both a distribution format and a runtime installation format (if left zipped), and was designed to be importable.

Wheel archives do not include .pyc files." [1]

[1] https://packaging.python.org/discussions/wheel-vs-egg/

thiht · 2 years ago
Wtf is an egg?
omgmajk · 2 years ago
The other type of package format from Wheel. I agree it's not very clear.
Filligree · 2 years ago
How someone not intimately involved with the ecosystem would figure out all this is beyond me.

There’s probably a blog post somewhere, but Python.org isn’t super helpful when you’re trying to find the equivalent of `cargo run`.

vladvasiliu · 2 years ago
Wheels are more akin to crates, so you'd be looking for cargo add -> pip install.

It's been a while since I've first learned python, but pip install came up fairly quickly. At the time, there were no such things as wheels, but when those came, basically nothing changed for me.

kalekold · 2 years ago
Packages are wheels? lolwut?

> Wheels are the new standard of Python distribution and are intended to replace eggs.

Ahhh... ???

incrudible · 2 years ago
Packages are a language-level concept in Python. A package may be a collection of source files on the filesystem, it's still a package, except that doesn't lend itself well to distribution. Moreover, from the language standpoint, the usage of a package (like "import numpy") is the same on all architectures, but the files needed for distribution (native extension module binaries) may differ.

Python is rife with Monty Python references, such as "spam and eggs" in place of "foo and bar", so "egg" was a natural choice.

loxdalen · 2 years ago
And here is the reasoning for naming it wheel: https://github.com/pypa/wheel/blob/3c7b6a0d13ee036ea8f6488ab....

Probably a reference to Monty Python as well (https://en.wikipedia.org/wiki/Cheese_Shop_sketch)

loxdalen · 2 years ago
The linked page has hyperlinks that you can click to get to the specification for at least Wheels.
LegitShady · 2 years ago
Pokemon are involved it gets a little confusing.
TekMol · 2 years ago
Is it possible to publish Python code for others to use simply by putting a repo on a webserver?

In other words, can someone put a line like this into their requirements.txt file?

https://somewhere.com/some/git/repo.git

Znafon · 2 years ago
TekMol · 2 years ago
That is pretty awesome!

Why is all the "wheels", "eggs", "PyPi" ... stuff needed then?

Hasnep · 2 years ago
Yes, you just need to add `git+` before the URL, see the pip documentation: https://pip.pypa.io/en/stable/topics/vcs-support/
mathisfun123 · 2 years ago
Yes

https://github.com/iree-org/iree-samples/blob/main/requireme...

You can do even better using GitHub releases: the GET for a releases page with assets (ie use inspector) functions as an index url. So you can have a repo that publishes wheels to a release called eg `latest` that can function as the index for that package/wheel. You can even have multiple repos that publish to a single such wheel repo release repo (using the ncipollo/release-action GHA).

TekMol · 2 years ago
I don't know what "GitHub releases" are. And I don't want to know :)

I prefer to use as few technologies as possible. And completely stay away from propriatary technologies.

Deleted Comment

whalesalad · 2 years ago
you can install a package straight from Github:

    pip install https://github.com/whalesalad/verisign-namestudio/archive/refs/heads/master.zip
or from the git repo:

    pip install git+https://github.com/whalesalad/verisign-namestudio.git

nerdchum · 2 years ago
What does this mean?

Deleted Comment

Deleted Comment

wiredfool · 2 years ago
The three that are not wheels are distributed as source tarballs only -- one is AWS Sagemaker that looks like it uses a bunch of native code, one is Apache Spark, and one is futures.

I think the news here is that there are no packages in the top N that are using an alternate packaging system without using wheel as well. (alternates being msi, exe, or egg)