Leopard community website & project sharing
See original GitHub issueThis issue is for discussing whether building a community is a good idea, and how to go about it if so. This is NOT the time to bikeshed over minor technical details. We can do that later. 😉
In the mid- to long-term, it might be nice to have a community website where users can create, edit, and share their Leopard projects, as well as discuss and collaborate with each other.
This would replace the current system of sending people over to CodeSandbox.
Is building such a community a good idea?
Community and Moderation
The Scratch Team does an exceptionally good job of moderating and fostering a community environment. A few things they get right:
- Enforce strict comment moderation
- Disallow sharing too much personal information
- Encourage remixing
I imagine that for an older audience, slightly more relaxed rules could be appropriate. In particular:
- Sometimes sharing a small amount of personal information is appropriate when collaborating with others or growing out of a community
- Slightly looser language rules could be appropriate for an older audience. (But you still have to be kind!)
Perhaps Snap! could be an inspiration in this area.
Technical Considerations
Users must be able to edit and view projects which are made up of multiple files.
We could run some kind of bundler (like Parcel) on the user’s code, but then you have to install npm dependencies server-side so that they can be bundled, which is a pain. Perhaps better to have users import their dependencies from unpkg or skypack and just serve their code directly, since browsers can handle JavaScript modules with import
natively.
Without the overhead of any bundling, the project editor essentially just becomes a static file host. You write HTML, CSS, and JavaScript, along with other assets like images and sounds, and we serve your files directly. No meddling necessary.
That’s pretty easy!
As far as security goes, we can get 90% of the way there just by serving projects from a separate domain. If the community site lives at leopardjs.com
, then each project could have its own subdomain like my-project.other-leopard-domain.com
. If each project really is just a collection of static files, then other-leopard-domain.com
could literally just forward requests on to an S3 bucket (or equivalent).
Funding
I am happy to pay some hosting costs out of my own pocket, within reason.
To keep costs down, we could limit the size of assets that users are allowed to upload (per asset, per project, and/or per user), and that would probably help a lot. But if the community grows a lot or people want to host large projects, there would need to be a reasonable source of income.
One option is simply to charge users money if they want to store large assets. This is honestly pretty reasonable if the issue is certain users making huge projects. But if the problem is a large number of users who each create small projects, you really want the website to be free for them to use, and then you need a source of funding.
I am not sure where that money would come from.
Issue Analytics
- State:
- Created a year ago
- Comments:11
Top GitHub Comments
It’s live! 🎉
I am really looking forward to checking on this list from time to time. We’ll see how frequently people use the website.
Looks absolutely amazing! Love the skeleton loading UI as well!