73 points by tripdout 9 days ago | 32 comments on HN
| Moderate positive Landing Page · v3.7· 2026-02-26 04:31:46 0
Summary Information Access & Accessibility Acknowledges
This page is a proof-of-work verification gateway protecting a FreeCAD wiki resource from aggressive web scraping. The administrator's explanation advocates for universal information access and frames the anti-scraping measure as protective of shared resources, aligning with Article 19 (free expression) and Article 27 (scientific commons) values. However, the implementation creates significant accessibility barriers, particularly disadvantaging users with disabilities or privacy-conscious tool usage (JShelter incompatibility), undermining Article 2 (non-discrimination) and Article 25 (adequate standard of living) protections.
It's what caused me to move away from FreeCad to OnShape. Never had an issue in OnShape but got hit with it every time in FreeCad. The sad thing is that there was a fork for a long time which had addressed this problem, and added other nice enhancements as well, but they never merged that work. I guess every org has political problems and FreeCad is no exception.
Unless I missed it, the article doesn't answer the first question you'd ask: Why don't they just generate unique IDs for everything and use those internally, instead of names that get changed all the time?
Solvespace has a fairly robust solution to this problem - for the cases that it handles. It does not create accessible edges for things like the intersection of surfaces, which won't be a big deal until we have a chamfer/fillet tool where you might want to modify those edges. But change an underlying sketch all you want and all geometry built from it will remain intact except for stuff built on something you delete.
IIRC the FreeCAD solution tends to create names of ever-increasing length as you continue building.
How does OnShape handle that problem? The linked page seems to make the case that most CAD suffers from this, others just "hide" it better;
> This problem is not unique to FreeCAD. It is generally present in CAD software, but most other CAD software has heuristics to reduce the impact of the problem on users.
The wiki page explains that as from Freecad 1.0, the work done by Realthunder in the topological naming problem has been merged into Freecad. Not that everything is solved. Just to mention that the work of Real thunder was not lost.
This isn’t accurate. FreeCAD merged the main changes from that fork (RealThunder) to fix (well, mitigate) the problem. That’s the big thing with 1.0.
Although… as others have noted, this is a problem with basically all CAD packages, as on a fundamental level, it depends on user design intent. Just some have enough bandaids that it’s more rare.
I’ve experienced similar problems (not totally sure if they were exactly the “topological naming problem” but certainly similar from the description) in Solidworks many times. Not usually a major problem - just a reworking or removal / re-adding of some features needed.
I’ve not encountered the same issue in FreeCAD 1.1 (to which I’ve transitioned recently). There are of course other frustrating niggles in FreeCAD, but not this one (yet).
I had the same experience, but instead of moving away from FreeCAD to OnShape, I moved to the fork that you mentioned, by RealThunder. Works great! Eventually the main branch mostly caught up.
Whether it's unique IDs or names, the problem is the same: topology changes destroy the things you’re identifying. When you have a box and you assign ID face_007 (or a generated unique ID) to its top face, that works fine until you fillet an edge adjacent to that face. Now the kernel has to recompute the geometry and depending on the operation, face_007 might still exist in a different shape, might split into multiple faces, or be destroyed completely.
The geometric kernel is doing boundary representation operations so when you do a boolean or a fillet, it doesn’t “edit” existing faces, it computes an entirely new b-rep from scratch. The old faces, edges, and vertices are gone and new ones are created to replace then. There’s nothing to hang a persistent ID on because the entities themselves are ephemeral.
There are solutions to the problem but they all break down eventually. I think freeCAD uses topological tracing and naming schemes so it encodes a face’s identity by how it was created. e.g., “the face generated by the intersection of extrude_1 and the XY plane.” The problem then is that parameter changes or operation insertions in the history can destroy those too, creating a new feature that can’t be easily mapped to the old ones. That’s where all the heuristics come in.
Unique IDs are used internally, but they only last for the lifetime of one evaluation. The hard part is establishing the equivalence between entities across re-evaluations when the topology itself may have changed.
They have that but when you change something, often some elements get deleted and others are added. Now you need to figure out how they relate to the previous elements and that’s very hard it seems.
Administrator advocacy emphasizes protection of 'resources' and 'server accessibility' as shared public goods. Frames scraping as threat to commons. This aligns with protection of cultural and scientific advancement. FreeCAD is explicitly open-source technical knowledge commons.
FW Ratio: 60%
Observable Facts
FreeCAD wiki provides free access to software documentation and technical knowledge.
Administrator explains Anubis protects server resources enabling 'everyone' to access knowledge.
Page demonstrates commitment to balancing individual access with collective resource sustainability.
Inferences
The framing prioritizes community benefit and shared knowledge access, core to Article 27 protections.
Open-source model and commons-oriented language reflect advocacy for scientific/creative commons protection.
Administrator explanation advocates for freedom to receive information and criticizes aggressive web scraping as inimical to information access. Frames Anubis as compromise supporting 'universal' access. Explicitly states goal is preventing downtime that makes 'resources inaccessible for everyone.' This is advocacy for universal information access rights.
FW Ratio: 50%
Observable Facts
Administrator states Anubis protects 'against the scourge of AI companies aggressively scraping websites' that 'makes their resources inaccessible for everyone.'
Page is FreeCAD wiki, open-source software documentation platform.
Administrator frames Anubis as 'a compromise' supporting accessibility, not permanent restriction.
Inferences
The editorial framing explicitly advocates for universal information access and criticizes actors (AI scrapers) that undermine it, aligning with Article 19 values.
The acknowledgment of trade-offs and future improvements ('placeholder solution') demonstrates commitment to balancing security with access rights.
Open-source wiki context supports freedom to seek and share information, though temporarily gated.
No editorial content directly addresses Preamble principles of dignity, justice, or peaceful advancement.
FW Ratio: 50%
Observable Facts
Page displays Anubis proof-of-work challenge system requiring computational effort before access.
Administrator explanation states system protects against 'aggressively scraping websites' that cause 'downtime' and resource inaccessibility.
Inferences
The framing positions the challenge as protective of collective access rights, suggesting alignment with Preamble concerns for universal human dignity.
No editorial content addresses discrimination or protected characteristics.
FW Ratio: 50%
Observable Facts
Administrator states 'Anubis requires the use of modern JavaScript features that plugins like JShelter will disable.'
Page advises users to 'disable JShelter or other such plugins for this domain.'
Inferences
The barrier disproportionately impacts users with accessibility needs or privacy concerns, creating indirect discrimination based on disability status and technical capability.
Requiring plugin disablement effectively forces choice between access and privacy/accessibility protection, a form of conditional access based on user characteristics.
No editorial content addresses health, welfare, or adequate standard of living.
FW Ratio: 50%
Observable Facts
System requires 'modern JavaScript features' incompatible with accessibility plugins like JShelter.
Administrator explicitly states users must 'disable JShelter or other such plugins for this domain.'
Inferences
The accessibility barrier disproportionately impacts users with disabilities, creating structural exclusion from technical knowledge access.
Requiring plugin disablement forces disabled users to choose between accessibility accommodations and information access, undermining digital welfare rights.
Wiki structure supports free access to technical knowledge (FreeCAD open-source documentation). However, proof-of-work barrier creates friction to information access. DCP modifiers (+0.2 mission, +0.1 ownership, +0.05 access_model) recognize underlying commitment to open knowledge despite the verification gatekeeping.
Wiki is free access to open-source software documentation and knowledge. Proof-of-work system aims to preserve resource sustainability enabling continued availability. DCP modifiers (+0.2 mission, +0.1 ownership) reflect underlying commitment to open creative/scientific commons despite verification gatekeeping.
Anubis proof-of-work system implements anti-scraping defense framed as protection for server accessibility. This represents a structural choice balancing access with resource preservation, partially aligned with dignity and peace principles.
Proof-of-work requirement applies uniformly to all users regardless of status, but creates unequal friction for those with limited computational resources or accessibility needs.
Anubis system inadvertently creates discriminatory barriers: users with disabilities requiring accessibility accommodations (JShelter disabled), older devices, or limited bandwidth face greater friction. The explicit note 'disable JShelter or other such plugins' disadvantages privacy and accessibility-focused users.
Anubis collects User-Agent and IP metadata ('X-Real-Ip' and 'User-Agent' fields visible in challenge JSON). This collection is framed as anti-scraping protection rather than surveillance. The system respects baseline privacy by not requiring login or account tracking, and metadata collection is instrumental to bot-detection rather than profiling. DCP modifier (+0.15) recognizes this protective role.
Proof-of-work system creates a computational barrier to accessing content. While not a literal restriction on physical movement, the page is inaccessible without completing the challenge, effectively restricting information access. This is a gatekeeping measure that inhibits free movement through the information space.
Anubis system creates accessibility barrier that impacts users' ability to access information needed for learning and professional development. JShelter incompatibility disadvantages users with accessibility or privacy needs. DCP modifier (-0.2 accessibility) identifies this barrier. Proof-of-work computational load is negligible for most but exclusionary for those with limited device capability or bandwidth.
Administrator describes web scraping as 'the scourge of AI companies aggressively scraping websites' causing 'downtime,' framing it as urgent threat justifying the verification challenge.
loaded language
Use of 'scourge' to describe web scraping behavior creates emotionally charged framing of the threat.