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

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

Open
travis opened this issue Dec 12, 2022 · 11 comments

Comments

@travis
Copy link
Contributor

travis commented Dec 12, 2022

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
Copy link
Contributor Author

travis commented Dec 12, 2022

⚛️ React - https://reactjs.org/

@travis
Copy link
Contributor Author

travis commented Dec 12, 2022

♈ Vue - https://vuejs.org/

@travis
Copy link
Contributor Author

travis commented Dec 12, 2022

💧 SolidJS - https://www.solidjs.com/

@travis
Copy link
Contributor Author

travis commented Dec 12, 2022

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

@travis
Copy link
Contributor Author

travis commented Dec 12, 2022

🕸️ Web Components - https://developer.mozilla.org/en-US/docs/Web/Web_Components

@travis
Copy link
Contributor Author

travis commented Dec 12, 2022

🧪 Preact - https://preactjs.com/

@travis
Copy link
Contributor Author

travis commented Dec 12, 2022

🔴 Svelte - https://svelte.dev/

@travis
Copy link
Contributor Author

travis commented Dec 12, 2022

🔺 Angular - https://angular.io/

@travis
Copy link
Contributor Author

travis commented Dec 12, 2022

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

@hugomrdias
Copy link

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
Copy link
Contributor

Gozala commented Dec 13, 2022

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/

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

3 participants