Best ways to contribute:
- Build a website with it
- Writing a component library based on it
- Writing a blog post about using it
- Create a Component Part for it
- Write middleware to integrate it with other frameworks or build systems
If you do any of these, please reach out and we can possibly list it in the Examples page, along with other "sightings" of Modulo "in the wild"!
If you are curious about working on the Modulo source code itself, read on.
- Run local dev env:
- npm run start
- Run unit tests locally in the browser:
- In the terminal (uses puppeteer):
npm run test
Contributing code to the core of Modulo follows stricter than typical JS coding standards:
- 80 char line limit (no exceptions!)
- 4 char space indentation
-
Do not write any clever, cool, smart, or fun code. Only boring code allowed.
-
Modulo may be short & sweet, but that doesn't mean "code golf" style minification. Instead, keep it simple, clear, and self-documenting.
-
Avoid continuing long statements onto new lines. Instead, create descriptively named temporary variables.
-
For complicated operations, use JS constructs such as
for..of
loops to keep the code's logical flow clear and imperative, instead of chaining methods such as.forEach
or.map
-
Most operations should be synchronous, so they can finish before reflow (e.g. do not add unnecessary layers of callback indirection)
-
Note: During the alpha phase, this will not be rigidly followed, until full linting rules are written, which will then be required for code to be accepted
- prealpha - unreleased, keep an eye on it!
- alpha - use it if you don't mind large bugs or incomplete docs if you stray too far beyond the examples
- beta - use it if you don't mind small bugs
- 1.x release - use it, ready for all general use, some small bugs may crop up, and some extra features may be added
- mature - use it, featureset is stable and will have no changes (including additions)
- Prealpha
- Alpha: 0.0.x
- Alpha versions will be released quickly as patches on 0.0 release
- The documented Component definition API will stay mostly the same
- Extension APIs (e.g. custom Component Parts, Reconcilers, etc) may change in backward incompatible ways in these releases, without deprecation notices
- Beta: 0.x.y
- Beta will be
0.*
releases - Beta versions will be released according to a typical minor/patch
versioning system, as described below
- Minor releases: Documentation or feature changes
- Patch releases: No documentation changes (beyond bug fixes)
- Any backward incompatible changes to any documented API will follow a deprecation notice system
- Beta will be
- Released: x.y.z
- At 1.0 release, Modulo will be generally feature complete and stable.
- Modulo's goal is to provide a stable framework to target, similar to LTS
releases with Linux distributions
- This is why although tooling around it might continue to be developed, there are no immediate plans beyond a 1.0 release
- In general, Modulo will follow Semantic Versioning:
- Major releases: Backwards incompatibility introduced
- Minor releases: Documentation or feature changes (but no backward incompatible changes)
- Patch releases: No documentation changes (beyond bug fixes)