You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
== Create primary forthic-py variant
* Copied v3 into forthic-py
* Copy v3 docs to forthic-py
* Build a forthic package with flit
* Got unit tests running
* Reorganize files to support building forthic package
* Move tox.ini to forthic-py and tighten up
* Add forthic-py Makefile
* Update Forthix examples server to use code in forthic-py
== General cleanup
* Remove deprecated namespace_packages
* Clean up makefile targets
* Clean up qa warnings
* Move tests to their respective source directories
* Fix: Escape '.' correctly in regex
* Address dependabot vulnerability alerts
* Revise Makefiles to support testing all interpreter variants
* Commented out date tests (for now) in forthic-js and forthic-react because the
months don't match what you get in the browser
* Update README files
== Move LinkedIn code to forthic-in directory
* Move old Forthic docs to forthic-in/docs dir
== Add experimental interpreters
* Move experimental languages to experimental dir
Forthic is a stack-based language for writing tweakable applications by coordinating code written in a host language.
3
+
Forthic is a stack-based language for making apps tweakable.
4
+
5
+
By embedding a Forthic interpreter in your application, you can make apps tweakable at runtime, even by end users.
6
+
LinkedIn has used this approach to build hundreds of internal Jira-based program management tools.
7
+
8
+
This repository contains two primary Forthic interpreters: a Python-based based one that can run within a Flask app in order to create
9
+
APIs that can be revised at runtime and a React-based one that can create user interfaces on-the-fly.
4
10
5
11
## Documentation
6
-
For a brief overview of Forthic, see [OVERVIEW.md](docs/OVERVIEW.md). The [ARCHITECTURE.md](docs/ARCHITECTURE.md) provides more technical detail about Forthic, including a brief overview of some of the standard global Forthic words. The [IDIOMS.md](docs/IDIOMS.md) file gives pointers on how to use Forthic the way it was designed to be used. Also see the [THREAT_MODEL.md](docs/THREAT_MODEL.md) file for guidance on running Forthic securely.
12
+
13
+
For a brief overview of Forthic, see [OVERVIEW.md](docs/OVERVIEW.md).
14
+
The [SYNTAX.md](docs/SYNTAX.md) file shows what the language looks like, including a brief overview of some of the standard global Forthic words.
15
+
The [IDIOMS.md](docs/IDIOMS.md) file gives pointers on how to use Forthic the way it was designed to be used.
16
+
The [ARCHITECTURE.md](docs/ARCHITECTURE.md) file shows how Forthic interpreters can work within apps.
17
+
18
+
Forthic modules are documented in the [modules](./forthic-py/docs/)
19
+
20
+
### YouTube
21
+
22
+
There are several YouTube videos for learning Forthic
23
+
24
+
-[Coding Forthic with Rino](https://www.youtube.com/@codingforthic) goes over some of the example applications
25
+
-[Learning Forthic](https://www.youtube.com/playlist?list=PLSnCkfp4FIBQJEM9SNeGLjt_VrPrHMzQF) teaches Forthic using [Forthix Jira Plugins](https://marketplace.atlassian.com/vendors/1225195/forthix-llc) and Jupyter notebooks.
26
+
27
+
### Articles
28
+
29
+
-[Forthic How To](https://forthix.com/category/how-to/)
30
+
-[LinkedIn Article on how to use the Jira module](https://www.linkedin.com/pulse/hello-forthic-abdul-sheik)
To get started, you can run an example Flask server with an embedded Forthic interpreter that
36
+
also serves React apps with embedded Forthic interpreters.
37
+
38
+
### Starting the example server
39
+
9
40
```
10
41
# On Mac and Linux
11
42
make
@@ -15,30 +46,15 @@ make
15
46
.\make-server.ps1
16
47
```
17
48
18
-
This will create a Python virtual environment, install Forthic into it, and run a
19
-
web server on port 8000 that can run some sample applications.
20
-
21
-
## Examples
22
-
The Forthic examples run as web apps. To see a list of the examples run the server using `make` and then go here: [http://localhost:8000](http://localhost:8000)
49
+
This creates a Python virtual environment, installs Forthic into it, and runs a
50
+
web server on [http://localhost:8000](http://localhost:8000)
23
51
24
-
See [EXAMPLES.md](docs/EXAMPLES.md) for more info.
52
+
See [EXAMPLES.md](docs/EXAMPLES.md) for more information.
25
53
54
+
### Deleting secrets
26
55
27
-
## Tests
28
-
```
29
-
# Tests the Python Forthic interpreter
30
-
make test
31
-
32
-
# Tests the JavaScript Forthic interpreter
33
-
make test-js
34
-
35
-
# Tests both
36
-
make test-all
37
-
```
38
-
39
-
## Deleting secrets
40
-
All credentials are stored encrypted in a JSON object in the `server/.secrets` file. To delete a particular secret, just remove it from the JSON record
41
-
and save the file. To delete all secrets along with the encryption key, delete `server/.secrets` and `server/.key` or
56
+
Some examples require credentials in order to work (e.g., Jira username and password/api-token).
57
+
The example server stores these on your computer as an encrypted in a JSON object in the `server/.secrets` file. To delete a particular secret, just remove it from this file and save. To delete all secrets along with the encryption key, delete `server/.secrets` and `server/.key` or
42
58
43
59
```
44
60
# On Mac and Linux
@@ -48,10 +64,37 @@ make delete-secrets
48
64
make-delete-secrets.ps1
49
65
```
50
66
51
-
## YouTube
52
-
-[Coding Forthic with Rino](https://www.youtube.com/@codingforthic)
67
+
## Tests
68
+
69
+
Each Forthic interpreter variant has its own test suite. To run the primary tests for `forthic-py` and `forthic-react` just run
0 commit comments