Skip to content

Commit 42cfefd

Browse files
authored
Merge pull request #451 from jvalue/release-0.1.0
Prepared release 0.1.0
2 parents ea180f6 + dda482b commit 42cfefd

File tree

120 files changed

+4260
-7
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

120 files changed

+4260
-7
lines changed

apps/docs/docs/dev/02-dev-processes/04-release-jayvee-version.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ To indicate that, we only release alpha versions where the `version` is incremen
1515
For releasing a new version of Jayvee, you need to complete the following steps:
1616

1717
1. Increment the version in the `package.json` file.
18-
2. Run `npx nx run docs:version-snapshot`.
19-
3. If you are on a feature or dev branch, merge into main.
20-
4. Create a GitHub release on the main branch. Attach a changelog.
21-
5. The CI/CD will deal with the rest.
18+
2. Run `npm i` to update the `package-lock.json`.
19+
3. Run `npx nx run docs:version-snapshot` to generate a snapshot of the docs for the previous version.
20+
4. If you are on a feature or dev branch, merge into main.
21+
5. Create a GitHub release on the main branch. Attach a changelog.
22+
6. The CI/CD will deal with the rest.
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
---
2+
sidebar_position: 1
3+
---
4+
5+
# Introduction for Jayvee Developers
6+
7+
## How to contribute
8+
9+
In order to contribute to the Jayvee project, please have a look at our [contribution guide](https://github.com/jvalue/jayvee/blob/main/CONTRIBUTING.md). Before planning a contribution, please read the [design principles](./05-design-principles.md) and consider if your changes fit the vision expressed there.
10+
11+
The overall project is licensed under the `AGPL-3.0-only` license and is compliant to the [REUSE Specification](https://reuse.software/spec/) by the [Free Software Foundation Europe](https://fsfe.org/).
12+
Because of this, contributions are required to adhere to the license and follow that specification.
13+
More details on this topic can be found [here](./02-dev-processes/03-licensing-and-copyright.md).
14+
15+
And last but not least, please read and follow our [code of conduct](https://github.com/jvalue/jayvee/blob/main/CODE_OF_CONDUCT.md).
16+
17+
## Project overview
18+
19+
The Jayvee repository is located [here](https://github.com/jvalue/jayvee) on GitHub.
20+
It uses an [Nx mono-repository](https://nx.dev/) setup and contains all related projects, most notably the Jayvee language server and interpreter.
21+
Please have a look at the [architecture overview](./03-architecture-overview.md) for more details.
22+
23+
## Prerequisites
24+
25+
Node.js and npm are required for development.
26+
It is recommended to use their LTS version to avoid any potential compatibility issues.
27+
Also, refer to this [quick start guide](https://github.com/jvalue/jayvee#development-quickstart) for developers.
28+
29+
In order to run the Jayvee VS Code extension during development, VS Code is required as IDE.
30+
Using VS Code also allows installing the [Langium VS Code extension](https://marketplace.visualstudio.com/items?itemName=langium.langium-vscode) for better IDE support when working with Langium grammar files.
31+
32+
## Resources for getting started
33+
34+
### Langium
35+
36+
- [**Langium documentation**](https://langium.org/docs/)
37+
- Practical examples using Langium:
38+
- [Langium examples](https://github.com/langium/langium/tree/main/examples): Official example languages by Langium
39+
- [Langium's grammar language](https://github.com/langium/langium/tree/main/packages/langium): The implementation of Langium's own grammar language
40+
- [Language server for SQL](https://github.com/langium/langium-sql): An implementation of a language server for SQL
41+
- [MiniLogo DSL](https://github.com/langium/langium-minilogo): A domain-specific language for drawing pictures
42+
- [Lox language](https://github.com/langium/langium-lox): An implementation of the Lox scripting language (also see the "Crafting Interpreters" book below)
43+
- [SimpleUI DSL](https://github.com/TypeFox/langium-ui-framework): A domain-specific language for generating user interfaces
44+
- [STPA-DSL](https://github.com/kieler/stpa): A domain-specific language for System-Theoretic Process Analysis
45+
- [Langium playground](https://langium.org/playground/): A tool for testing Langium grammars and visualizing resulting ASTs
46+
- [Typefox blog](https://www.typefox.io/blog/): A blog by the company behind Langium, mostly posting Langium-related content.
47+
48+
### Building compilers / interpreters / DSLs
49+
50+
- [Crafting Interpreters](https://craftinginterpreters.com/contents.html): A book by Robert Nystrom on implementing an interpreter for the Lox scripting language
51+
- [DSL Engineering](https://voelter.de/dslbook/markusvoelter-dslengineering-1.0.pdf): A book by Markus Voelter on designing, implementing and using domain-specific languages
52+
- [Awesome Compilers](https://github.com/aalhour/awesome-compilers#readme): A list featuring many resources on compilers and interpreters
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
SPDX-FileCopyrightText: 2023 Friedrich-Alexander-Universitat Erlangen-Nurnberg
2+
3+
SPDX-License-Identifier: AGPL-3.0-only
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
---
2+
title: Language Design Process (RFCs)
3+
sidebar_position: 1
4+
---
5+
6+
We use RFCs to discuss changes to the language before implementing them. You can have a look at all closed (accepted / rejected) RFCs [here](https://github.com/jvalue/jayvee/pulls?q=is%3Apr+is%3Aclosed+RFC+), and all RFCs under discussion [here](https://github.com/jvalue/jayvee/pulls?q=is%3Apr+is%3Aopen+RFC).
7+
8+
If you want to contribute an RFC please follow these steps:
9+
1. Make a copy of the **template** at `rfc/0000-rfc-template.md` and place it into the `rfc` folder.
10+
2. Create a draft for the RFC on a new branch. Follow the `TODOs` in template to do so.
11+
3. Open a pull request with prefix `RFC <number>` in the title.
12+
4. Address the reviews. Consider opening a new PR if major things need to be addressed and the discussion log becomes too confusing.
13+
5. Once accepted, create an issue with the necessary steps to implement the RFC.
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
SPDX-FileCopyrightText: 2023 Friedrich-Alexander-Universitat Erlangen-Nurnberg
2+
3+
SPDX-License-Identifier: AGPL-3.0-only
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
---
2+
title: Debugging via the VS Code extension
3+
sidebar_position: 2
4+
---
5+
6+
The VS Code extension of Jayvee can be used to interactively debug the language server.
7+
During development, when using VS Code as IDE, another instance of VS Code can be opened which has the most recent, locally built VS Code extension loaded.
8+
This can be achieved using the launch configuration `Run extension` the `Run and Debug` side-menu of VS Code or by pressing the `F5` key if that launch configuration is already selected there.
9+
10+
Note that there is no file watching mechanism involved.
11+
So in order to reflect changes to the source code, the additional VS Code instance has to be **closed and reopened** as described above.
12+
13+
## How to attach a debugger
14+
15+
1. Use the launch configuration `Run extension` to open the additional VS Code instance with the extension loaded
16+
2. Use the launch configuration `Attach to Language Server` to attach the debugger
17+
18+
Any set breakpoints should now be marked as active and pause the execution once they are reached.
19+
20+
## How to view logs of the language server
21+
22+
In the additional VS Code instance, it is possible to view the logs of the language server.
23+
They might also be helpful for debugging since any uncaught errors are logged with their stack trace by the Langium framework.
24+
25+
To view the logs, open the bottom panel called `Output` and select `Jayvee` in the dropdown menu.
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
SPDX-FileCopyrightText: 2023 Friedrich-Alexander-Universitat Erlangen-Nurnberg
2+
3+
SPDX-License-Identifier: AGPL-3.0-only
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
---
2+
title: Licensing and copyright
3+
sidebar_position: 3
4+
---
5+
6+
The [Jayvee repository](https://github.com/jvalue/jayvee) is REUSE compliant, meaning that it fulfills the
7+
[REUSE Specification](https://reuse.software/spec/) by the [Free Software Foundation Europe](https://fsfe.org/) (FSFE).
8+
This makes clear under which license each project file is licensed under and who owns the copyright, not only for
9+
humans but also for machines.
10+
11+
This is done by explicitly adding copyright and licensing information to each file of the project. This is achieved
12+
by either using a comment header or a separate `*.license` file in case comments are not possible.
13+
14+
See <https://reuse.software/> more information.
15+
16+
## What license is used in this project and who is the copyright holder?
17+
18+
The entire project is licensed under [AGPL-3.0-only](https://spdx.org/licenses/AGPL-3.0-only.html), the
19+
license file can be found [here](https://github.com/jvalue/jayvee/blob/main/LICENSES/AGPL-3.0-only.txt).
20+
The copyright holder is the [Friedrich-Alexander-Universität Erlangen-Nürnberg](https://www.fau.eu/).
21+
22+
## How to submit a REUSE compliant contribution?
23+
24+
In case you want to contribute to the project, you will need to ensure that all of your contributed files are REUSE
25+
compliant. In order to achieve this, you need to add a key-value pair for both copyright and licensing information
26+
following this schema:
27+
28+
```
29+
SPDX-FileCopyrightText: 2023 Friedrich-Alexander-Universitat Erlangen-Nurnberg
30+
31+
SPDX-License-Identifier: AGPL-3.0-only
32+
```
33+
34+
In case a file allows comments, use single-line comments to add the copyright and licensing information at the top
35+
of the file. Otherwise, create a corresponding `*.license` file with the text above as its content. You can have a
36+
look at some existing project files to get an impression on it is done in practice.
37+
38+
For files with common file extensions, you can use the [reuse CLI tool](https://github.com/fsfe/reuse-tool) to add
39+
licensing and copyright information automatically.
40+
41+
For more details, you can have a look at the [Getting Started tutorial](https://reuse.software/tutorial/) on the REUSE
42+
website.
43+
44+
## How to validate REUSE compliance?
45+
46+
When you make a contribution and open a new pull request, the CI checks whether your contribution is REUSE compliant
47+
using the [reuse CLI tool](https://github.com/fsfe/reuse-tool).
48+
49+
In order to validate REUSE compliance in your local development environment, you have to install the
50+
[reuse CLI tool](https://github.com/fsfe/reuse-tool) and run the following command in the projects' root folder:
51+
52+
```bash
53+
reuse lint
54+
```
55+
56+
You can also set up a pre-commit hook, so the above command is run before each commit.
57+
See [here](https://reuse.readthedocs.io/en/latest/readme.html#run-as-pre-commit-hook) for details on how to set it up.
58+
59+
## How to hide `*.license` files in IDEs
60+
61+
During development, the file explorer of your IDE may be cluttered due to the numerous `*.license` files in the
62+
project. Luckily, most IDEs allow hiding certain files, e.g. by specifying a pattern to exclude them from the
63+
explorer.
64+
65+
Below, you can find instructions on how to hide `*.license` files in commonly used IDEs:
66+
- **Visual Studio Code**: Add `**/*.license` to the
67+
[`files.exclude` setting](https://code.visualstudio.com/docs/getstarted/userinterface#_explorer)
68+
- **WebStorm**: Add `*.license` to the
69+
[excluded files setting](https://www.jetbrains.com/help/webstorm/configuring-project-structure.html#exclude-by-pattern)
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
SPDX-FileCopyrightText: 2023 Friedrich-Alexander-Universitat Erlangen-Nurnberg
2+
3+
SPDX-License-Identifier: AGPL-3.0-only
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
---
2+
title: Releasing a new Jayvee version
3+
sidebar_position: 4
4+
---
5+
6+
## Version Numbers
7+
8+
In this early stage of the project we do not yet follow [semantic versioning](https://semver.org/) since we expect the introduction of breaking changes frequently.
9+
To indicate that, we only release alpha versions where the `version` is incremented with every release.
10+
- For the npm packages, we use the version `0.0.<version>`.
11+
- For the GitHub releases, we use the git tag `v0.0.<version>-alpha`.
12+
13+
## Jayvee Release Procedure
14+
15+
For releasing a new version of Jayvee, you need to complete the following steps:
16+
17+
1. Increment the version in the `package.json` file.
18+
2. Run `npx nx run docs:version-snapshot`.
19+
3. If you are on a feature or dev branch, merge into main.
20+
4. Create a GitHub release on the main branch. Attach a changelog.
21+
5. The CI/CD will deal with the rest.

0 commit comments

Comments
 (0)