thi-ng / umbrella

â›± Broadly scoped ecosystem & mono-repository of 199 TypeScript projects (and ~180 examples) for general purpose, functional, data driven development
https://thi.ng
Apache License 2.0
3.41k stars 151 forks source link

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

Open postspectacular opened 4 months ago

postspectacular commented 4 months ago

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 commented 4 months ago

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....