frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

Meta: Shut Down Your Invasive AI Discover Feed. Now

https://www.mozillafoundation.org/en/campaigns/meta-shut-down-your-invasive-ai-discover-feed-now/
64•speckx•38m ago•21 comments

Decreasing Gitlab repo backup times from 48 hours to 41 minutes

https://about.gitlab.com/blog/2025/06/05/how-we-decreased-gitlab-repo-backup-times-from-48-hours-to-41-minutes/
28•immortaljoe•28m ago•1 comments

An Interactive Guide to Rate Limiting

https://blog.sagyamthapa.com.np/interactive-guide-to-rate-limiting
39•sagyam•1h ago•12 comments

Odyc.js – A tiny JavaScript library for narrative games

https://odyc.dev
83•achtaitaipai•2h ago•13 comments

A masochist's guide to web development

https://sebastiano.tronto.net/blog/2025-06-06-webdev/
61•sebtron•2h ago•5 comments

Why Bell Labs Worked

https://links.fabiomanganiello.com/share/683ee70d0409e6.66273547
10•speckx•44m ago•2 comments

Sandia turns on brain-like storage-free supercomputer – Blocks and Files

https://blocksandfiles.com/2025/06/06/sandia-turns-on-brain-like-storage-free-supercomputer/
8•rbanffy•46m ago•0 comments

Free Gaussian Primitives at Anytime Anywhere for Dynamic Scene Reconstruction

https://zju3dv.github.io/freetimegs/
7•trueduke•54m ago•0 comments

Curate Your Shell History

https://esham.io/2025/05/shell-history
21•todsacerdoti•2h ago•14 comments

Too Many Open Files

https://mattrighetti.com/2025/06/04/too-many-files-open
7•furkansahin•52m ago•3 comments

Weaponizing Dependabot: Pwn Request at its finest

https://boostsecurity.io/blog/weaponizing-dependabot-pwn-request-at-its-finest
48•chha•5h ago•28 comments

VPN providers in France ordered to block pirate sports IPTV

https://torrentfreak.com/major-vpn-providers-ordered-to-block-pirate-sports-streaming-sites-250516/
23•gasull•40m ago•4 comments

Small Programs and Languages

https://ratfactor.com/cards/pl-small
55•todsacerdoti•2h ago•16 comments

Deepnote (YC S19) is hiring engineers to build an AI-powered data notebook

https://deepnote.com/join-us
1•Equiet•4h ago

Self-hosting your own media considered harmful according to YouTube

https://www.jeffgeerling.com/blog/2025/self-hosting-your-own-media-considered-harmful
1275•DavideNL•11h ago•532 comments

How to (actually) send DTMF on Android without being the default call app

https://edm115.dev/blog/2025/01/22/how-to-send-dtmf-on-android
17•EDM115•4h ago•2 comments

Ask HN: Any good tools for viewing congressional bills?

6•tlhunter•16m ago•0 comments

Swift and Cute 2D Game Framework: Setting Up a Project with CMake

https://layer22.com/swift-and-cute-framework-setting-up-a-project-with-cmake
58•pusewicz•4h ago•43 comments

Top researchers leave Intel to build startup with 'the biggest, baddest CPU'

https://www.oregonlive.com/silicon-forest/2025/06/top-researchers-leave-intel-to-build-startup-with-the-biggest-baddest-cpu.html
39•dangle1•2h ago•20 comments

ThornWalli/web-workbench: Old operating system as homepage

https://github.com/ThornWalli/web-workbench
16•rbanffy•3h ago•3 comments

Jepsen: TigerBeetle 0.16.11

https://jepsen.io/analyses/tigerbeetle-0.16.11
161•aphyr•5h ago•42 comments

The impossible predicament of the death newts

https://crookedtimber.org/2025/06/05/occasional-paper-the-impossible-predicament-of-the-death-newts/
534•bdr•1d ago•178 comments

OpenAI is retaining all ChatGPT logs "indefinitely." Here's who's affected

https://arstechnica.com/tech-policy/2025/06/openai-confronts-user-panic-over-court-ordered-retention-of-chatgpt-logs/
7•Bender•49m ago•1 comments

Show HN: Air Lab – A portable and open air quality measuring device

https://networkedartifacts.com/airlab/simulator
435•256dpi•1d ago•177 comments

Race, ethnicity don't match genetic ancestry, according to a large U.S. study

https://www.science.org/content/article/race-ethnicity-don-t-match-genetic-ancestry-according-large-u-s-study
36•pseudolus•55m ago•63 comments

The Coleco Adam Computer

https://dfarq.homeip.net/coleco-adam-computer/
16•rbanffy•5h ago•3 comments

Tokasaurus: An LLM inference engine for high-throughput workloads

https://scalingintelligence.stanford.edu/blogs/tokasaurus/
196•rsehrlich•18h ago•23 comments

How we’re responding to The NYT’s data demands in order to protect user privacy

https://openai.com/index/response-to-nyt-data-demands/
244•BUFU•15h ago•234 comments

Apple warns Australia against joining EU in mandating iPhone app sideloading

https://www.neowin.net/news/apple-warns-australia-against-joining-eu-in-mandating-iphone-app-sideloading/
21•bundie•47m ago•1 comments

Test Postgres in Python Like SQLite

https://github.com/wey-gu/py-pglite
133•wey-gu•15h ago•44 comments
Open in hackernews

Understanding the PURL Specification (Package URL)

https://fossa.com/blog/understanding-purl-specification-package-url/
72•todsacerdoti•1d ago

Comments

emddudley•23h ago
Not related to PURLs (Persistent URLs) administered by the Internet Archive.

https://purl.archive.org/

CaliforniaKarl•23h ago
Or PURLs in general, the concept for which was developed in 1995, per https://en.m.wikipedia.org/wiki/Persistent_uniform_resource_...
layer8•22h ago
Nor to the Purl programming language: https://esolangs.org/wiki/Purl

I wonder if Yarn will support PURLs. ;)

01HNNWZ0MV43FF•22h ago
Where can I read more about this?
pombreda•22h ago
We maintain the spec at https://github.com/package-url/purl-spec

And the new thing, working towards making it a real standard with Ecma https://tc54.org/purl/ ... :)

ttepasse•22h ago
I remember when purl.org namespace URIs where the thing for RSS 1.0 modules. 25 years ago,
pombreda•21h ago
Not at all related. Just nicknamed the same.
90s_dev•23h ago
xkcd 927 is shown in the first link. It seems xkcd is now as official a part of the everlasting software community as markdown is.
pombreda•22h ago
Actually, I also used it when I first presented PURL at FOSDEM in 2018 https://archive.fosdem.org/2018/schedule/event/purl/ .... scroll the video at 9 minutes :] We need moooaaar standards, do we?
specialist•3h ago
Ya, technical allegory. Nicely spotted.

"Shaka, when the walls fell."

https://en.wikipedia.org/wiki/Darmok

pombreda•3h ago
:D
rahkiin•23h ago
How does the purl work for docker images that are not hosted on docker? Or custom npm registries?
nonethewiser•23h ago
Maybe fall into here?

>There's even a generic type as a catch-all for things that don't fit an existing ecosystem (for example, a proprietary or legacy component) or for ecosystems that build custom distributions, such as yocto or buildroot. We should note, however, that SBOM and software composition analysis tools vary widely in their ability to understand generic PURLs, so we do recommend you talk to your current (or prospective) vendor if this is an important feature for you.

pombreda•22h ago
You want to avoid the "generic" type... and for docker containers and OCi images that's not needed.
LawnGnome•23h ago
The standard supports a repository_url "qualifier" (query parameter)[0], which can be used to override whatever the default registry is (which, for Docker, is hub.docker.com[1]).

[0]: https://github.com/package-url/purl-spec/blob/main/PURL-SPEC...

[1]: https://github.com/package-url/purl-spec/blob/main/PURL-TYPE...

m4r71n•22h ago
You can use the `oci` package type for non-Docker images (or any OCI artifacts for that matter).
heavenlyhash•22h ago
soo..... what's the guidance for when package names include a slash?

such as approximately everything in golang, which very often matches e.g. "github.com/*" as a package name?

Do would PURL suggest that "github.com/foobar/go-whatnot" should be parsed as namespace="github.com" (odd) and package name "foobar/go-whatnot" (since there aren't any more slashes in the blessed separators)?

conradludgate•22h ago
I don't know, but I imagine those are actually the namespace. Eg I would imagine pkg:go/github.com/foo/bar@1.0.0 To be package bar in the github.com/foo namespace.

The distinction doesn't really seem to matter much between namespace and name in all honestly.

pombreda•22h ago
Agreed. In hindsight, I always wonder if this was a good idea to have this split. At least the namespace is optional and required only certain package types
layer8•22h ago
The canonical answer would be percent-encoding, so pkg:golang/github.com%2Ffoobar/go-whatnot.

https://en.wikipedia.org/wiki/Percent-encoding#:~:text=accor...

Joker_vD•22h ago
What's the guidance when URI paths include a slash?

    pkg:github.com%2Ffoobar/go-whatnot
pombreda•22h ago
This is not a valid PURL as it is missing a type, assuming you wanted golang here.

It could be instead:

    pkg:golang/github.com%2Ffoobar%2Fgo-whatnot
pombreda•22h ago
Encode the slash as explained in the clarified spec https://github.com/package-url/purl-spec/pull/453 :)

We are working on further clarifying Golang which a bit problematic: there is really no name or namespace in Go, just a path, and it is not possible at scale to tell when a Go module stops and when a Go package starts just by looking at the path... this is going to be clarified after the merge of the PR 453.

pombreda•22h ago
Disclosure: I created that spec and we are working hard to clarify it and remove grey areas!
dedicate•22h ago
Okay, so PURL is basically the thing that actually makes SBOMs usable for open source, not just a list of 'best guesses' with CPEs?
pombreda•22h ago
That's actually the best explanation I have seen in a long time!

- in most cases, no guesses needed - you can use it in Cyclone, SPDX, and CSAF and still talk about the same package even if the format varies - CVE.org is considering it as an addition on the same footing as CPE - there a good bunch of databases that "speak" PURL, like Google OSV, Sonatype OSS Index, Deps.dev, and AboutCode's PurlDB and VulnerableCode (disclosure: I am a lead maintainer for AboutCode FOSS projects) - most scanners speak PURL too.

Note that same scanners and tools speak not exactly PURL but some "PURLish" dialect and we have a project to help streamline that and lift up the whole ecosystem of PURL users with https://nlnet.nl/project/purlvalidator/

donenext•21h ago
Yes, 1000x yes
alcroito•21h ago
I wish PURL proposed something sensible or at least usable for tracking C / C++ native libraries, that are NOT hosted on a registry like conan.io, or one of the linux distro registries, but is still (self-)hosted somewhere online.

For libraries that are hosted on `github`, there's at least the github type.

But there is no official `gitlab` or `git` type, and i've read comments that even the `github` type is considered a mistake.

One example of such a library could be a Qt or KDE / Plasma library.

They are hosted on their own forges, https://code.qt.io/ and https://invent.kde.org respectively.

So to the more knowledgeable people out there, what is the PURL way of identifying a C++ library like that?

Is `generic` type + vcs_url qualifier really the only way?

Right now it seems impossible to track vulnerabilities for such libraries with OSS / open tools, because none of the open tools or databases support a custom type or registry or ecosystem.

For example none of services here support some custom C++ ecosystem (putting aside conan):

https://docs.dependencytrack.org/analysis-types/known-vulner...

Same for https://docs.dependencytrack.org/datasources/osv/

donenext•21h ago
completely agree here `git` type using the namespace of your choice would be plenty to enable tools to find these packages. Even though its not "officially" supported in the spec this is what we do internally
pombreda•18h ago
IMHO, a bare git stuff would be a git URL as specified in pip and SPDX and not a PURL... I would be interested to know more about your use case. Feel free to drop a note at pombredanne@aboutcode.org
pombreda•19h ago
Note that there should be a gitlab type as it is planned for: https://github.com/package-url/purl-spec/blob/a90ee02679afc3...

gitlab and github do provide package-like discoverability. Do you have a pointer that says a github package is a mistake?

alcroito•7h ago
I believe i was thinking of the comments at https://github.com/package-url/purl-spec/issues/59 but I see you've already replied there.
pombreda•18h ago
You wrote:

> So to the more knowledgeable people out there, what is the PURL way of identifying a C++ library like that?

That's a blind spot. This is a real problem for every as you rightfully explained.

So I have been thinking a lot about how to track C/C++ native libraries, and I have been working on a plan to deal with this.

You can read a summary there (that I just posted to supply this discussion!) - https://github.com/aboutcode-org/www.aboutcode.org/issues/30

And this comment links to more detailed work-in-progress planning doc: - https://github.com/aboutcode-org/www.aboutcode.org/issues/30...

If you want to chip in and help, this would be awesome.

And IMHO, aligned with your thinking this should not be tied to a build system or a for-profit operation like conan.io, or a linux distro, or for that matter a specific build tool or approach as they are so many, and be self-hosted, easy to sync, and simple to store in a git repo.

alcroito•17h ago
Thanks for the links! I hope the proposal works out. I skimmed through the doc, and one thing i’d suggest is to consider using the CPS format rather than the ABOUT one for the metadata. The format is driven by Kitware, the developers of cmake, and thus if it’s contributed to them, a big chunk of the cpp ecosystem would get buy-in just because of the intertia of using cmake, and getting it for free with the tool.

https://cps-org.github.io/cps/overview.html

I’m not sure how I can help, but I’m open for discussion, because the company i work for is also interested in how to handle this well for our products.

pombreda•3h ago
let's chat. There is a really a lot of folks interesting because of the suffering! ABOUT is just a suggestion, and an TIL about cps and it looks awesome! pombredanne@aboutcode.org Or a comment on the issue or doc linked.
giantrobot•17h ago
Something else PURLs don't capture well for native libraries is any sort of build configuration. I don't know of any clear way in a PURL to describe a say Debian package built from a src package with a custom set of compiler options.

For Java and interpreted language packages the "build" configuration is less important or non-existent. For compiled packages the build environment is important.

It seems the only way is to use a custom namespace and abuse the qualifiers but then you've got a non-canonical PURL and its utility in things like SBOMs is limited.

pombreda•3h ago
Good point, but that's may not be in scope either... since this is not even something you can get from Debian easily: not just looking at a Debian pool or diving into a package control files AFAIK?

Say I rebuild a Debian package with some new build options.

Is this a the same or a new package? I'd say a new one.

Is this the same name? I'd say a new one.

Is this distributed by Debian? Nope, so this comes from another repo and pool, right?

The idea with PURL is to have simple and short PURLs for the common case, and make it possible to handle less common cases. Rebuilding a package and sharing it on another repo would be a less common case to me? WDYT?

RS-232•21h ago
I love PURLs, but the namespace attribute smells. It’s way too arbitrary.

What’s the point of com.something.other? Why are we using dot notation when everything else is kebab case?

pombreda•18h ago
Not sure I parse... do you mind to elaborate?
pombreda•18h ago
Is this about Maven "groupid" mapped to a namespace? "com.foo.bar" is Maven's own invention and notation.... in most cases we are just trying to adopt the ecosystem convention to minimize fictions.
quibono•21h ago
For all its expressiveness of the CPE format I find PURLs much easier to work with. Especially when it comes to software that doesn't fall neatly into the classic vendor/product split like what CPE envisions.
pombreda•18h ago
Yeah, the CPE idea of a vendor for an open source package does not compute too well!

FWIW, PURL came about as I could NOT put my mind around CPEs when I was scanning for package and deps with scancode and could not find any easy way to go from that to looking up a vulnerability/CVE in the NVD, as it was all guesswork and manual.

So we started instead to put the vuln data in our own db, keyed by something that would be easy to relate from the scans. This eventually became PURL

This is all tracked in these places: - The original issue: https://github.com/aboutcode-org/scancode-toolkit/issues/805 - The initial pull request with many comments: https://github.com/package-url/purl-spec/pull/1

kdeldycke•20h ago
I have a project called Meta Package Manager that supports pURLs, so you can:

$ mpm install pkg:npm/left-pad@1.2.3

Other commands allows you to export the SBOM of all packages installed on your machine. More info at: https://github.com/kdeldycke/meta-package-manager

pombreda•18h ago
This is awesomely nice!
donenext•19h ago
Hot take, `generic` as a type is a crutch most tooling uses out of laziness and has significantly reduced the usefulness of PURL spec. How do we improve this?
donenext•19h ago
Can we completely eliminate generic as a type to remove this crutch?
pombreda•18h ago
All abstractions leak eventually, so we need that escape hatch IMHO. Otherwise you end up with the other issue which is that there are stuff you cannot track with PURL?
jessoteric•19h ago
isn't the issue that sometimes a given scanner can't know from where the package is sourced?

like if I'm scanning an arbitrary linux system, and I see `libssl.so.1` but I don't see it in the local package manager, I don't really have an option other than to call it generic.

I do agree that "generic" seems to be WAY overused though. Maybe tools that report on SBOMs, like FOSSA or whatever, should emit warnings to users about "generic" PURLs.

donenext•19h ago
Thats fair. It just seems silly that a spec intended to "uniquely ID a package" supports a type that is the complete opposite of "unique". I guess another way to frame my take is should `generic` be consider a valid PURL? Keep it as a fall back sure, but distinguish between "fully qualified" PURLs and "partial" PURLs.

This then gives tooling a path to prompt users to provide missing context needed to fully qualify the PURL

pombreda•18h ago
> distinguish between "fully qualified" PURLs and "partial" PURLs.

Can you tell a bit more? Not sure I get what you meant

jessoteric•18h ago
That seems like a good idea... hmm.
pombreda•18h ago
> isn't the issue that sometimes a given scanner can't know from where the package is sourced?

That's the problem: there is no metadata with or in libssl.so.1 that I can reliably use to tell what this is

Eventually I can see a solution made of

1. create the metadata, say a simple YAMl or deb822 key-valud pair file that can then be included upstream or as an overlay 2. define a simple spec for binary formats to include a PURL (say in an ELF section or a WinPE string or sorts, where many of these are already stored) 3. create content-based tools like we have in PurlDB to match code, but may be more like a bunch of generated yara rules that would match symbols and strings from source to binaries and can recognize that libssl.so.1 is from OpenSSL 1.1.1g.

pombreda•18h ago
Yeah, I added generic as an escape hatch, but this should be only used by exception, e.g., a crutch. An abused crutch.

Eventually, let's fix this first for C/C++:

https://github.com/aboutcode-org/www.aboutcode.org/issues/30

And based on that approach we can either: 1. create new, sensible types as needed 2. and/or maintain a last resort open registry of generic types at least so we get some sanity in the process.

zzo38computer•18h ago
In my opinion, there are some problems with this, such as:

- The cryptographic hash is not included. (They do mention security, a hash and/or public keys would be helpful for security. It would also be helpful for identification if names are reused for unrelated reasons.)

- There is not a distinction between interfaces and implementations (which in some cases you might care about, although not always).

- They do not mention examples of what qualifiers are possible for some package types.

pombreda•18h ago
Can you tell a bit more? What is this? The OP article?
cryptonector•10h ago
u/zzo38computer wants:

- an optional(?) hash parameter

- a way to say you depend on a thing for which there are multiple implementations and not specify which implementation

pombreda•3h ago
We have a standard checksum "qualifier" at https://github.com/package-url/purl-spec/blob/main/PURL-SPEC... ... that would be the "hash" ... would this work?
pombreda•3h ago
For "generic" interface-based dependencies, that's tougher.

This is a problem with a few ecosystems. OTH rpms, debs and Java OSGI... and may be a few more. We need to survey these to find if we can solve that and if this is a PURL problem at all.

Can I rope you in and interest you in filing an issue in the spec so we can move the discussion there? :P This would be great.

https://github.com/package-url/purl-spec/issues/

CodingKing•15h ago
PURL is messed up. URLs have location. Urns have identity. This should have just been a registered URN.
pombreda•3h ago
Yeah, this is messed up! But tell me when you cannot locate a correct PURL?
account42•6h ago
Shouldn't it be called PURI because it only indentifies a package but doesn't locate it?
pombreda•3h ago
Actually, this is a locator alright. You can resolve a PURL to an actual package in an actual location.