diff --git a/README.md b/README.md index 8c56ebba..b555f227 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ learning analytics dashboard to help instructors be able to manage student learning processes, and in particular, student writing processes. - + ## Learning Observer diff --git a/VERSION b/VERSION index 82977005..2e1b98f6 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.1.0+2026.02.03T15.21.57.253Z.1310c89e.berickson.20260130.execution.dag.single.value +0.1.0+2026.02.17T15.09.06.345Z.5f75e49b.berickson.20260217.updated.dead.links diff --git a/devops/tasks/remote_scripts/gitpaths.py b/devops/tasks/remote_scripts/gitpaths.py index 80801ca8..db0db4d5 100644 --- a/devops/tasks/remote_scripts/gitpaths.py +++ b/devops/tasks/remote_scripts/gitpaths.py @@ -10,7 +10,7 @@ def gitpath_to_name(packagepath): ''' Convert a git path to the name of the repo. For example: - `https://github.com/ETS-Next-Gen/writing_observer.git` ==> `writing_observer` + `https://github.com/ArgLab/writing_observer.git` ==> `writing_observer` ''' package = os.path.split(packagepath)[1] if package.endswith(".git"): diff --git a/devops/tasks/scripts/baseline_packages.fab b/devops/tasks/scripts/baseline_packages.fab index fbd88ece..a4b19fe9 100644 --- a/devops/tasks/scripts/baseline_packages.fab +++ b/devops/tasks/scripts/baseline_packages.fab @@ -1,4 +1,4 @@ cd sudo apt-get -y install git ansible awscli -git clone https://github.com/ETS-Next-Gen/writing_observer.git +git clone https://github.com/ArgLab/writing_observer.git cd writing_observer/devops/ansible ; sudo ansible-playbook local.yaml diff --git a/docs/tutorials/install.md b/docs/tutorials/install.md index 412765c0..9a5c177c 100644 --- a/docs/tutorials/install.md +++ b/docs/tutorials/install.md @@ -22,13 +22,13 @@ Have two terminal windows or tabs open. We will run the server in one and use th 1. Open a terminal and clone the repository: ```bash - git clone https://github.com/ETS-Next-Gen/writing_observer.git lo_tutorial + git clone https://github.com/ArgLab/writing_observer.git lo_tutorial ``` If you have an SSH key configured with GitHub, you can use: ```bash - git clone git@github.com:ETS-Next-Gen/writing_observer.git lo_tutorial + git clone git@github.com:ArgLab/writing_observer.git lo_tutorial ``` 2. Change into the new directory: diff --git a/docs/tutorials/workshop.md b/docs/tutorials/workshop.md index b10d595f..6fa12fee 100644 --- a/docs/tutorials/workshop.md +++ b/docs/tutorials/workshop.md @@ -48,13 +48,13 @@ If you don't have a way of managing Python virtual environments, or would prefer First make sure you clone the repository: ```bash -git clone https://github.com/ETS-Next-Gen/writing_observer.git lo_workshop +git clone https://github.com/ArgLab/writing_observer.git lo_workshop ``` **or**, if you have a github account properly configured with ssh: ```bash -git clone git@github.com:ETS-Next-Gen/writing_observer.git lo_workshop +git clone git@github.com:ArgLab/writing_observer.git lo_workshop ``` ```bash @@ -173,7 +173,7 @@ This will generate events for 10 students typing a set of loremipsum texts and s You can look at the format of these specific events in the `/learning_observer/learning_observer/logs/` directory. In the test system, we simply put events into log files, but we are gradually moving towards a more sophisticated, open-science, family-rights oriented data store (shown at the bottom of [this document](system_design.md). This is theoretically interesting, since it gives a cryptographically-verifiable way to audit what data was created and what analyses ran. -There are several good standards for [event formats](events.md), and to integrate learning data, we will need to support them all. Most of these have converged on a line of JSON per event, but the specifics are format-specific. We are including [some code](https://github.com/ETS-Next-Gen/writing_observer/blob/master/modules/lo_event/lo_event/xapi.cjs) to help support the major ones. However, the events here are somewhat bound to how Google Docs thinks about documents. +There are several good standards for [event formats](events.md), and to integrate learning data, we will need to support them all. Most of these have converged on a line of JSON per event, but the specifics are format-specific. We are including [some code](https://github.com/ArgLab/writing_observer/blob/master/modules/lo_event/lo_event/xapi.cjs) to help support the major ones. However, the events here are somewhat bound to how Google Docs thinks about documents. ## module.py @@ -251,7 +251,7 @@ In `module.py`, you see this line: EXECUTION_DAG = learning_observer.communication_protocol.util.generate_base_dag_for_student_reducer('student_event_counter', 'my_event_module') ``` -This is shorthand for a common query which JOINs the class roster with the output of the reducers. The Python code for the query itself is [here](https://github.com/ETS-Next-Gen/writing_observer/blob/berickson/workshop/learning_observer/learning_observer/communication_protocol/util.py#L58), but the jist of the code is: +This is shorthand for a common query which JOINs the class roster with the output of the reducers. The Python code for the query itself is [here](https://github.com/ArgLab/writing_observer/blob/berickson/workshop/learning_observer/learning_observer/communication_protocol/util.py#L58), but the jist of the code is: ```python 'roster': course_roster(runtime=q.parameter('runtime'), course_id=q.parameter("course_id", required=True)), @@ -326,11 +326,11 @@ Once set up, the development workflow here is rather fast, since the UX updates ### `lo_event` -Our data streaming library is [lo_event](https://github.com/ETS-Next-Gen/writing_observer/tree/master/modules/lo_event). This library is designed to stream events (typically) from a JavaScript client, and handles all of the complexity of things like persistance, queuing, and retries for you. Cookiecutter cde, but it should save you a bunch of time. +Our data streaming library is [lo_event](https://github.com/ArgLab/writing_observer/tree/master/modules/lo_event). This library is designed to stream events (typically) from a JavaScript client, and handles all of the complexity of things like persistance, queuing, and retries for you. Cookiecutter cde, but it should save you a bunch of time. ### `lo_assess` -Much more interesting, in development (and probably in need of renaming) is [`lo_assess`](https://github.com/ETS-Next-Gen/writing_observer/tree/pmitros/loevent-v2/modules/lo_event/lo_event/lo_assess). +Much more interesting, in development (and probably in need of renaming) is [`lo_assess`](https://github.com/ArgLab/writing_observer/tree/pmitros/loevent-v2/modules/lo_event/lo_event/lo_assess). There is an XML format (based on edX OLX, which is in turn based on LON-CAPA XML) for creating interactives. diff --git a/extension/writing-process/package.json b/extension/writing-process/package.json index b789a11c..d1bb950f 100644 --- a/extension/writing-process/package.json +++ b/extension/writing-process/package.json @@ -6,7 +6,7 @@ "author": "Piotr Mitros, Bradley Erickson", "repository": { "type": "git", - "url": "https://github.com/ETS-Next-Gen/writing_observer/tree/master/extension/writing-process" + "url": "https://github.com/ArgLab/writing_observer/tree/master/extension/writing-process" }, "scripts": { "ext:start": "xt-build -e dev -w", diff --git a/extension/writing-process/src/manifest.json b/extension/writing-process/src/manifest.json index ad7c064a..945ec770 100644 --- a/extension/writing-process/src/manifest.json +++ b/extension/writing-process/src/manifest.json @@ -2,7 +2,7 @@ "name": "__MSG_appName__", "short_name": "__MSG_appShortName__", "description": "__MSG_appDescription__", - "homepage_url": "https://github.com/ETS-Next-Gen/writing_observer/tree/master/extension/writing-process", + "homepage_url": "https://github.com/ArgLab/writing_observer/tree/master/extension/writing-process", "incognito": "not_allowed", "version": "1.0.0.2", "version_name": "1.0.0.2", diff --git a/learning_observer/VERSION b/learning_observer/VERSION index 82977005..2e1b98f6 100644 --- a/learning_observer/VERSION +++ b/learning_observer/VERSION @@ -1 +1 @@ -0.1.0+2026.02.03T15.21.57.253Z.1310c89e.berickson.20260130.execution.dag.single.value +0.1.0+2026.02.17T15.09.06.345Z.5f75e49b.berickson.20260217.updated.dead.links diff --git a/learning_observer/learning_observer/communication_protocol/README.md b/learning_observer/learning_observer/communication_protocol/README.md index 86b3f798..c86b24ce 100644 --- a/learning_observer/learning_observer/communication_protocol/README.md +++ b/learning_observer/learning_observer/communication_protocol/README.md @@ -25,7 +25,7 @@ In `module.py`, you see this line: EXECUTION_DAG = learning_observer.communication_protocol.util.generate_base_dag_for_student_reducer('student_event_counter', 'my_event_module') ``` -This is shorthand for a common query which JOINs the class roster with the output of the reducers. The Python code for the query itself is [here](https://github.com/ETS-Next-Gen/writing_observer/blob/berickson/workshop/learning_observer/learning_observer/communication_protocol/util.py#L58), but the jist of the code is: +This is shorthand for a common query which JOINs the class roster with the output of the reducers. The Python code for the query itself is [here](https://github.com/ArgLab/writing_observer/blob/berickson/workshop/learning_observer/learning_observer/communication_protocol/util.py#L58), but the jist of the code is: ```python 'roster': course_roster(runtime=q.parameter('runtime'), course_id=q.parameter("course_id", required=True)), diff --git a/learning_observer/learning_observer/downloads.py b/learning_observer/learning_observer/downloads.py index abea0476..f0c2c3a1 100644 --- a/learning_observer/learning_observer/downloads.py +++ b/learning_observer/learning_observer/downloads.py @@ -52,12 +52,12 @@ "62618d4bff6e51fafa25d41cb59bd97f3ebd72fd94ebd09a52c17c4c23fdca3962b" } SHOWDOWN_JS = { - "url": "https://rawgit.com/showdownjs/showdown/1.9.1/dist/showdown.js", + "url": "https://cdn.jsdelivr.net/gh/showdownjs/showdown@1.9.1/dist/showdown.js", "hash": "4fe14f17c2a1d0275d44e06d7e68d2b177779196c6d0c562d082eb5435eec" "4e710a625be524767aef3d9a1f6a5b88f912ddd71821f4a9df12ff7dd66d6fbb3c9" } SHOWDOWN_JS_MAP = { - "url": "https://rawgit.com/showdownjs/showdown/1.9.1/dist/showdown.js.map", + "url": "https://cdn.jsdelivr.net/gh/showdownjs/showdown@1.9.1/dist/showdown.js.map", "hash": "74690aa3cea07fd075942ba9e98cf7297752994b93930acb3a1baa2d3042a" "62b5523d3da83177f63e6c02fe2a09c8414af9e1774dad892a303e15a86dbeb29ba" } diff --git a/learning_observer/learning_observer/module.py b/learning_observer/learning_observer/module.py index e40fe77e..ddfa5a93 100644 --- a/learning_observer/learning_observer/module.py +++ b/learning_observer/learning_observer/module.py @@ -79,12 +79,12 @@ "62618d4bff6e51fafa25d41cb59bd97f3ebd72fd94ebd09a52c17c4c23fdca3962b" }, "showdown.js": { # Default markup library - "url": "https://rawgit.com/showdownjs/showdown/1.9.1/dist/showdown.js", + "url": "https://cdn.jsdelivr.net/gh/showdownjs/showdown@1.9.1/dist/showdown.js", "hash": "4fe14f17c2a1d0275d44e06d7e68d2b177779196c6d0c562d082eb5435eec" "4e710a625be524767aef3d9a1f6a5b88f912ddd71821f4a9df12ff7dd66d6fbb3c9" }, "showdown.js.map": { # Part of above - "url": "https://rawgit.com/showdownjs/showdown/1.9.1/dist/showdown.js.map", + "url": "https://cdn.jsdelivr.net/gh/showdownjs/showdown@1.9.1/dist/showdown.js.map", "hash": "74690aa3cea07fd075942ba9e98cf7297752994b93930acb3a1baa2d3042a" "62b5523d3da83177f63e6c02fe2a09c8414af9e1774dad892a303e15a86dbeb29ba" }, @@ -115,7 +115,7 @@ STATIC_FILE_GIT_REPOS = { # 'writing_observer': { # # Where we can grab a copy of the repo, if not already on the system - # 'url': 'https://github.com/ETS-Next-Gen/writing_observer.git', + # 'url': 'https://github.com/ArgLab/writing_observer.git', # # Where the static files in the repo lie # 'prefix': 'learning_observer/learning_observer/static', # # Branches we serve. This can either be a whitelist (e.g. which ones diff --git a/learning_observer/learning_observer/routes.py b/learning_observer/learning_observer/routes.py index fbe4e1a7..5fc12b7b 100644 --- a/learning_observer/learning_observer/routes.py +++ b/learning_observer/learning_observer/routes.py @@ -379,7 +379,7 @@ def register_repo_routes(app, repos): An example repo is: { - 'url': 'https://github.com/ETS-Next-Gen/writing_observer.git', // URL to the repo; downloaded if not already here + 'url': 'https://github.com/ArgLab/writing_observer.git', // URL to the repo; downloaded if not already here 'prefix': 'modules/writing_observer/writing_observer/static', // Path in repo to serve static files from 'module': 'wobserver', // Module name to use in the static path diff --git a/learning_observer/learning_observer/static/debug.html b/learning_observer/learning_observer/static/debug.html index c4cc6cdb..e647a827 100644 --- a/learning_observer/learning_observer/static/debug.html +++ b/learning_observer/learning_observer/static/debug.html @@ -51,7 +51,7 @@ Service. The source code is available under the - AGPLv3 license on github. + AGPLv3 license on github.
diff --git a/learning_observer/learning_observer/static/modules/login.html b/learning_observer/learning_observer/static/modules/login.html index 271e391d..d816638d 100644 --- a/learning_observer/learning_observer/static/modules/login.html +++ b/learning_observer/learning_observer/static/modules/login.html @@ -56,7 +56,7 @@