storacha / w3ui

πŸ‘©β€πŸŽ€ Headless, type-safe, UI components for the next generation Web3.Storage APIs.
Other
63 stars 25 forks source link

discussion: which frameworks/libraries/app styles should we build components and examples for? #157

Open travis opened 1 year ago

travis commented 1 year ago

We currently provide specific libraries to support developers using three different JavaScript UI frameworks:

1) React - react-keyring, react-uploader react-uploads-list 2) Vue - vue-keyring, vue-uploader, vue-uploads-list 3) SolidJS - solid-keyring, solid-uploader, solid-uploads-list

We also provide examples of how to use our components in four different "frameworks":

1) React - examples/react 2) Vue - examples/vue 3) SolidJS - examples/solid 4) "Vanilla" JavaScript - examples/vanilla

Each of the libraries and examples opens up a new community to our product - by providing official support for a framework or library we make it easy for people to love web3.storage and easily build on it in an "official" way. Each of them also comes with non-trivial support cost - as we evolve w3up we should be expected to keep each of them up to date with the latest features, ensure the examples keep working, provide updated packages as security issues are found and fixed in underlying dependencies, etc. We should weigh these costs and benefits and memorialize our decisions in this thread, both to make it clear to the community why we provide official support for specific libraries/frameworks and to make it easy for people to advocate for changes to these decisions in the future.

Of the current frameworks we support, only React seems obvious to me - we build apps in React, most of our team has at least a basic understanding of one or more React frameworks and it's one of the most widely adopted frameworks in the technology industry. Of the others - Vue and SolidJS - Vue seems like a good idea to support (though it's not my cup-of-tea so I wouldn't be sad if we dropped it) and SolidJS seems like an outlier - eg, it's not clear to me why we support it over, say, Svelte. Of the "frameworks" we're missing, I think Web Components seems like an obvious choice - they're close to being "Vanilla" JavaScript at this point but are specific and nuanced enough that it seems worth at least providing an example of how you'd create Web Components that work with our APIs

To kick things off, I'd like to use this issue as an informal non-binding "voting" mechanism in perpetuity. If you have opinions about which frameworks we should officially support, please take a moment to register your support by reacting to the comment below corresponding to your preferred framework.

Note that "support" in this case is explicitly vague - this might mean supporting with a full-blown framework-specific w3ui library or might just mean providing some examples - feel free to use comments below to advocate for a specific type of support but final decisions about the precise nature of support for a particular framework will be made by the core team since we will be signing up for supporting these packages and examples on an ongoing basis for the indefinite future.

Finally, please feel free to use the rest of this thread to advocate for your favorite frameworks - we'd like to stay on top of the latest and greatest in web development and our community is our greatest resource in staying ahead of the game. Thanks!

travis commented 1 year ago

βš›οΈ React - https://reactjs.org/

travis commented 1 year ago

β™ˆ Vue - https://vuejs.org/

travis commented 1 year ago

πŸ’§ SolidJS - https://www.solidjs.com/

travis commented 1 year ago

🍨 "Vanilla" JavaScript + HTML - https://developer.mozilla.org/en-US/

travis commented 1 year ago

πŸ•ΈοΈ Web Components - https://developer.mozilla.org/en-US/docs/Web/Web_Components

travis commented 1 year ago

πŸ§ͺ Preact - https://preactjs.com/

travis commented 1 year ago

πŸ”΄ Svelte - https://svelte.dev/

travis commented 1 year ago

πŸ”Ί Angular - https://angular.io/

travis commented 1 year ago

:atom: React Native - https://reactnative.dev/

hugomrdias commented 1 year ago

My two cents, on this: First what we support going forward should come from users requests. Having the initial version support multiple frameworks has value but keeping support or adding more going forward should be measured by user engagement.

We should keep a headless, framework agnostic core for all the packages so its easy for us to outsource support for more frameworks.

Having said that for the initial release, we should look to the ecosystem and react is king followed by vue, solid js is nice because its getting a lot of press (because its way better than anything else before it, with the exception of qwik).

React for me means react, preact and react-native if we keep our core clean plus all the blockchain frontend frameworks are react based. Vue and solidjs should be treated as nice to have and community driven.

Gozala commented 1 year ago

I really would love web components support, it's almost framework agnostic. I think does pretty good job doing something along these lines and demoing integrations with frameworks as well https://shoelace.style/