hackworthltd / primer-app

Primer's React frontend application.
GNU Affero General Public License v3.0
3 stars 0 forks source link
education functional-programming primer programming programming-language react typescript web

Primer App

Primer is a pedagogical functional programming language. This repository contains a collection of React components to support Primer programming-related activities, including reading, writing, running, and debugging Primer programs. The project also provides a web application which integrates these components into a novel visual programming environment, featuring a tree-based structure editor.

For the moment, we're focusing on the development of the integrated web app, but our long-term goal is to make it possible to use the project's React components to integrate Primer programming activities into interactive applications and games.

The web app in this project currently requires that a Primer language server instance is available. We provide a Haskell implementation of a Primer language server in this project's companion repository, primer. Both projects are licensed under the terms of version 3 (or later) of the GNU Affero General Public License, and can be freely copied, modified, and distributed, so long as the license is preserved.

Important caveats

The Primer programming language, our Primer language server implementation, and this web app are all still under heavy development. Expect lots of breaking changes until we reach stable releases of all of these components. Please note that we don't currently have any accurate time estimates for when we expect to reach these milestones.

This web app, in particular, should be considered to be of alpha-release quality. There are many incomplete and altogether missing features, known bugs, and visual & usability defects. While it's already possible to write at least some Primer programs using this web app, please keep in mind the following important caveats about the current state of the project:

Contributing

We welcome contributions from the community! Please read our contributing guide if you think you'd like to help.

We also provide a comprehensive development guide for anyone who'd like to build and run the project locally.

Third-party licenses

Some third-party assets that we distribute together with this project's source code (e.g., open source fonts) are licensed separately from the source code. For each such asset, there's a corresponding license file in the licenses subdirectory of the project.

We have also "vendored" some source code from third-party libraries; i.e., we have included a few third-party source code files directly in this project, rather than linking to them as a pre-built dependency. When this is the case, the source files will include their license and copyright notice directly in the source file.