The proper thing to do here would maybe be forking
OrbitControls and posting in those issues something like:
Hey, if you need the methods
bar public on this class check out this repo
There’s no way to track how many people are using an example, thus making all of these decisions rather arbitrary. Ie. whatever’s there, people will use.
Person A thinks this should be private, nothing you can do about it. However if say a year from now you start seeing a lot more examples that use
ImprovedOrbitControls it would be a tell of how people want to use this, and eventually Person A might cave in.
Unfortunately the problem with this is that three is so monolithic. Forking
three-orbit-controls would make much more sense and be easier to merge back at some point if it’s deemed necessary than forking
I like how other big JS projects are structured, there are even examples in the 3d world:
They call their “examples” “extensions” which i think makes more sense given how people use three’s examples (i’d really like to hear an argument that
OrbitControls is not an extension).
Even documents are in a seperate repo:
Imagine if you could just go to one repo and see issues only relating to that repo. Out of 540 currently open issues only 16 seem to mention
OrbitControls, roughly 3%. They can get lost in the rest and people might miss them.
I also believe it causes a phenomenon called tribal knowledge.
Imagine you have someone sitting there every day going through ALL of these issues, and PRs and compare what they might now to what’s written in the docs or in the code. It’s probably going to be orders of magnitude different since that person would have to approve every change in the
/examples and they’re not documented.
All that knowledge is “tribal” - there’s a tribe of three.js experts that know how three.js works without available documentation. But rather than it being told by the tribe elders (although this happens in various meetups and presentations), it’s technically written, but you could say in a secret sacred esoteric language - “the source”.
IMO this is not good as this role could just be replaced by proper documentation. But at least anyone can tackle the sacred texts (read the source).
Imagine if you had 100 different repos each with their own well defined scope and responsibility, how would that compare.
The conflation here comes, i believe, from the fact that three.js targets a really wide spectrum of users. There might be someone who just wants to use the library at a high level, while someone else might be building another library using this library.