Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[all] splitting up / restructuring of large(r) packages #486

Open
36 tasks done
postspectacular opened this issue Jul 20, 2024 · 1 comment
Open
36 tasks done

[all] splitting up / restructuring of large(r) packages #486

postspectacular opened this issue Jul 20, 2024 · 1 comment

Comments

@postspectacular
Copy link
Member

postspectacular commented Jul 20, 2024

Context

Over the years there has been (infrequent, but repeated) criticism about some of the package sizes and implicitly about the number of dependencies of such packages. Only a very small number of the packages in this repo (currently 2, I think) have 3rd party dependencies, all others are thi.ng internal. Thanks to treeshaking, in most cases these internal deps are not really an issue and simply encourage better re-use, code density and also provide a huge benefit in terms of maintenance of all these packages. However, with the prevailing mindset of JS devs and also increased concern about "supply chain" issues, a newcomer user, will judge the presence of any dependencies as a negative factor and as such the current structure/organization of these larger packages is actually partially hurting uptake/interest, regardless of value and/or features provided. C'est la vie... 🤷

Proposed solution

Being pragmatic about this situation, I'm currently experimenting with splitting up some of these larger packages, introducing a number of smaller ones and migrating functionality to those. The idea is to still group related features, but with a more "atomic" (aka a more fine grained focus) and with the aim of minimizing deps per package.

For existing users, this will mean some breaking changes, but only in terms of having to update imports. I'm not going to conflate any other refactoring and/or API changes with this restructuring work!

Progress

I will keep updating this issue with ongoing progress of the restructing. All of this work is happening on the feature/large-pkg-splitting branch.

thi.ng/associative

New additional packages:

Please do get in touch if you have opinions/views about other candidates which would benefit from a similar splitting!

postspectacular added a commit that referenced this issue Jul 20, 2024
- extract `MultiTrie` & `TrieMap` from thi.ng/associative
postspectacular added a commit that referenced this issue Jul 20, 2024
- extract `BidirIndex` from thi.ng/associative
postspectacular added a commit that referenced this issue Jul 20, 2024
- extract `BidirIndex` from thi.ng/associative
postspectacular added a commit that referenced this issue Jul 20, 2024
BREAKING CHANGE: restructure & split-up package, update readme

- remove obsolete source files
- update pkg exports
postspectacular added a commit that referenced this issue Jul 20, 2024
…486)

BREAKING CHANGE: migrate/remove SortedMap/Set, sortedObject()

- migrate `SortedMap`/`SortedSet` to thi.ng/sorted-map pkg
- migrate `sortedObject()` to thi.ng/object-utils
- remove obsolete source files
- remove obsolete deps
- update readme
postspectacular added a commit that referenced this issue Jul 20, 2024
- extract sparseset-related fns/classes from thi.ng/associative
postspectacular added a commit that referenced this issue Jul 20, 2024
BREAKING CHANGE: migrate sparse set features to thi.ng/sparse-set pkg

- remove obsolete files
- update pkg
postspectacular added a commit that referenced this issue Jul 20, 2024
- extract `DisjointSet` from thi.ng/adjacency
postspectacular added a commit that referenced this issue Jul 20, 2024
BREAKING CHANGE: migrate DisjointSet to thi.ng/disjoint-set pkg

- remove obsolete files
- update pkg
postspectacular added a commit that referenced this issue Jul 20, 2024
- migrate `dominantColors()` from thi.ng/pixel pkg
postspectacular added a commit that referenced this issue Jul 20, 2024
BREAKING CHANGE: migrate dominantColors() to thi.ng/pixel-dominant-colors pkg

- remove obsolete files
- update pkg
postspectacular added a commit that referenced this issue Jul 20, 2024
- migrate UUID functions from thi.ng/random pkg
postspectacular added a commit that referenced this issue Jul 20, 2024
BREAKING CHANGE: migrate UUID functions to thi.ng/uuid pkg

- remove obsolete files
- update deps/pkg
- update readme
postspectacular added a commit that referenced this issue Jul 22, 2024
- migrate convolve, normalMap and imagePyramid functions
  from thi.ng/pixel pkg
postspectacular added a commit that referenced this issue Jul 22, 2024
BREAKING CHANGE: migrate convolve, normalMap & imagePyramid functionality to thi.ng/pixel-convolve pkg

- remove obsolete files
- update deps/pkg
- update readme
postspectacular added a commit that referenced this issue Jul 22, 2024
* feature/large-pkg-splitting: (64 commits)
  docs(disjoint-set): update pkg meta & readme
  docs: regen readmes
  build(porter-duff): intern/update deps & readme
  docs: update node fs imports in snippets
  build(examples): update deps/imports (pixel-convolve)
  docs(pixel): update/regen readmes (code examples, tangle support)
  refactor(random): migrate/remove convolve functions (#486)
  feat(pixel-convolve): import as new pkg (#486)
  refactor(pixel): intern swapLane13 helper, remove dependency
  feat(tools): update check-imports & readme gen
  docs: regen/update readmes
  build(cache): remove transducers dependency
  build: update pkg exports
  build: update yarn.lock
  docs(strings): update doc link
  refactor(random): migrate/remove UUID functions (#486)
  feat(uuid): import as new pkg (#486)
  refactor(examples): update package-stats
  feat(tools): add/update stats scripts
  docs(pixel): minor update readme
  ...
@postspectacular
Copy link
Member Author

An update: The above listed packages have all been released now and the packages this functionality has been extracted from have received majaor version updates with notices both in readmes & changelogs...

Keeping this issue open for a while in case there might be future rounds of similar restructuring....

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant