Contributing

Consider contributing to Window.js!

See how to get in contact to get started.

There are many ways to help the project:

  • Improve performance of the main loop, drawing, GPU code, …
  • Add new APIs: webgl, sound, networking, …
  • Improve the developer tools: better console, better error diagnosis, …
  • Test on more platforms and file issues
  • Port web libraries to Window.js: Three.js, Pixi.js, Processing (p5.js), …
  • Make better example apps
  • Make interesting educational apps: a sample HTML renderer, a sample web browser, a widget engine, a game engine, …
  • Improve the build: automate more parts, integrate with Github Actions, support reproducible builds
  • Improve distribution: signed binaries for Mac and Windows, integrate with Linux package managers, …
  • Improve the documentation! Better examples, guides, improve the text grammar, …
  • Help diagnose issues in the issue tracker and in the discussion forums

See the list of planned features for ideas.

Long-term goals of the project:

  • As few steps as possible to run hello_world.js. Ideally, Window.js will be always distributed as a single binary.
  • Window.js should feel familiar for Web and Javascript developers. APIs should be similar to existing HTML5 APIs where it makes sense.
  • Window.js makes no security guarantees; it’s a tool for developing desktop applications and it’s up to the application to ensure any security requirements. Window.js is not suited to run unstrusted third-party code.
  • Window.js should start fast. Code that isn’t used to draw the first frame should not delay the critical startup path.
  • Window.js should be a lean binary. Any dependencies have to add significant benefits to justify their weight.
  • Window.js should give good tooling for developers. The Chrome devtools are a great example of excellent tooling.
  • User-visible APIs must be documented and accessible online.
  • No telemetry, no files left on the user’s device. Window.js doesn’t do anything other than what is documented.
  • Window.js should be stable and reliable at runtime: memory usage is stable, no crashes, all failures get exposed to Javascript, etc.

What Window.js is not:

  • A stable programming environment. The APIs exposed by Window.js may change at any time. This should change in the future, but at the current project stage there are no guarantees.
  • Window.js doesn’t support mobile platforms and doesn’t aim to.
  • Window.js is not a game engine. While game engines can be built on top, Window.js doesn’t bundle any particular engine.
  • Window.js is not a web browser. It won’t support CSS or HTML natively, though CSS and HTML parsers and a renderer could be built on top.
  • Window.js doesn’t integrate with NPM and other Javascript package managers.