Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
596 commits
Select commit Hold shift + click to select a range
f16545f
... unicode issue with last commit
pmitros May 21, 2022
70f9ac2
Upgraded auth infrastructure: User icons. Password files can have nam…
pmitros May 21, 2022
d3a1b17
Improved auth infrastructure
pmitros May 28, 2022
951492b
Updating auth docs
pmitros May 28, 2022
57b34a0
Changing dashes to underscores. Breaking change.
pmitros May 29, 2022
7170743
Symlink for auth docs
pmitros May 29, 2022
db9244c
Prestartup check now imports all files
pmitros May 29, 2022
6596846
Event version adapter
pmitros Jun 1, 2022
ed70167
DRAFT watchdog timer
pmitros Jun 1, 2022
e562897
Prototype Merkle DAG log storage
pmitros Jun 7, 2022
72c2c5c
Kafka tree explanation
pmitros Jun 8, 2022
5c9aa08
Prototype proxy handler
pmitros Jun 12, 2022
0413716
Consolidating prototypes
pmitros Jun 13, 2022
e28d43b
watchdog missing from requirements
pmitros Jun 13, 2022
1ad28e6
Proxy is now a closure
pmitros Jun 13, 2022
0207012
Bug fix: Unauthenticated page
pmitros Jun 14, 2022
766a790
Bug fix in new auth framework
pmitros Jun 15, 2022
4b189d8
Missing f before string
pmitros Jun 19, 2022
6685581
Debug flag to see auth (and other) headers
pmitros Jun 20, 2022
1f1071e
Typo: commas
pmitros Jun 20, 2022
fe0d432
Trying to fix / broaden scopes to manage drive files and coursework
pmitros Jun 20, 2022
e27945e
Bug fixes for last commits
pmitros Jun 20, 2022
4b72004
Announcements scope added
pmitros Jun 22, 2022
f1cbb0d
Improved startup
pmitros Aug 16, 2022
2418d74
Missing await
pmitros Aug 16, 2022
de4692f
Better name for merkle
pmitros Sep 20, 2022
ff96165
dash to underscore
pmitros Sep 20, 2022
d533c8f
Changing to bigger instances; small ones crash a lot
pmitros Sep 20, 2022
ad1e5eb
Sleeps prevent race conditions in dev ops
pmitros Sep 20, 2022
7d69398
Feature flag: Starting integration of Merkle tree
pmitros Sep 21, 2022
acebf19
KVS has comments, and can dump / load to disk. Helpful for debugging …
pmitros Sep 21, 2022
c73d9f6
Missing line
pmitros Sep 21, 2022
0a8f46f
Syncing prototype Jupyter code... being further developed.... still n…
pmitros Sep 21, 2022
1d8e360
Dash WO teacher dashboard prototype (#23)
bradley-erickson Sep 22, 2022
10ec7e3
Dash prototypes have setup scripts and LO module file
pmitros Sep 23, 2022
7be532c
First stab dash integration for modules.
pmitros Sep 23, 2022
18ea8ca
No longer using little-endian UTF-16 with CRLF terminators
pmitros Sep 23, 2022
bae056e
Dash integration (#24)
pmitros Sep 28, 2022
5e4ee76
Basic web socket test
pmitros Sep 28, 2022
747670b
Dash assets
pmitros Oct 12, 2022
8715e0a
Added missing requirements
pmitros Oct 21, 2022
9a60dba
Minor bug fix in gitserve repo path handling
pmitros Oct 21, 2022
d1d32a4
LOConnection test case works
pmitros Oct 21, 2022
2a9b377
All students roster no longer calls redis directly
pmitros Oct 24, 2022
2e1e9fc
Renamed redis to avoid namespace conflict
pmitros Oct 24, 2022
e7c54b2
Added dash module scripts and dashboard now communicates with server
bradley-erickson Oct 24, 2022
156a51b
Merge branch 'master' of https://github.com/ETS-Next-Gen/writing_obse…
bradley-erickson Oct 24, 2022
ca26937
Update .gitignore
bradley-erickson Oct 24, 2022
d9b31e2
Move from deprecated / limited maintenance asyncio_redis library to r…
pmitros Oct 25, 2022
25678a2
Better comment
pmitros Oct 26, 2022
0656e35
Fixes bugs in argument handling on stream_writing. Not super-well-tes…
pmitros Oct 26, 2022
889e264
Various updates to teach dashboard
bradley-erickson Oct 28, 2022
eda57db
Default log level to not cause performance issues
pmitros Oct 29, 2022
030256b
Dash-style dashboard doesn't want pagination
pmitros Oct 29, 2022
770075b
Removal of pagination complete
pmitros Oct 29, 2022
d6ab76b
Removed pubsub from reducer pipeline
pmitros Oct 29, 2022
d50ca2d
Removing the rest of pubsub support, as well as AJAX handlers
pmitros Oct 30, 2022
03c6ada
Clean up incoming student event, and remove last bits of pubsub
pmitros Nov 8, 2022
768ccad
We can add per-module settings!
pmitros Nov 8, 2022
5362775
Better handling of complex keys, code cleanups
pmitros Nov 8, 2022
2a9f112
Exception for scope fields
pmitros Nov 8, 2022
daeddcf
Keeping last document in writing_observer, lots of cleanups and ways …
pmitros Nov 8, 2022
9c6690f
We also keep last_document, and move to new style
pmitros Nov 8, 2022
579c384
Simple test case for dashboard testing
pmitros Nov 8, 2022
4293924
Abstracted out text excerpt function
pmitros Nov 8, 2022
e4a6a63
KVS interface supports multiget
pmitros Nov 10, 2022
14783ab
Comment cleanups around watchdog, ports
pmitros Nov 10, 2022
2f8a018
HACK to compile together latest documents
pmitros Nov 10, 2022
8328d72
Dashboard supports asynchronous aggregators
pmitros Nov 10, 2022
4132b21
Function to extract features with AWE Workbench
pmitros Nov 10, 2022
f6cfd29
Hack to show latest text from all students
pmitros Nov 10, 2022
4d646f0
AWE NLP integration, step 1
pmitros Nov 11, 2022
475b652
Sample essays for Writing Observer
pmitros Nov 11, 2022
b29f139
We can now stream GPT-3 essays in for testing
pmitros Nov 13, 2022
67e27f4
Adding NLP pipeline
pmitros Nov 13, 2022
7963f4a
Updating documentation with additional local note files which will be…
DrLynch Nov 16, 2022
5a51a3f
Pushing general modifications made to the extension to support local …
DrLynch Nov 16, 2022
7b15db1
Added in missing documentation files from prior fork and added in scr…
DrLynch Nov 16, 2022
b4d7f24
http auth basic for events
pmitros Nov 17, 2022
d8982d4
Per-session log files, rather than global log
pmitros Nov 17, 2022
6d4eb6d
Updated dashboard - make sure to reinstall the learning-observer-comp…
bradley-erickson Nov 18, 2022
3b719fb
Merge branch 'master' of https://github.com/ETS-Next-Gen/writing_obse…
bradley-erickson Nov 18, 2022
27d48c3
Added websocket status and auth to dashbaord
bradley-erickson Dec 1, 2022
a964aa7
Updating documentation on installation scripts.
DrLynch Dec 3, 2022
b79d022
Merge remote-tracking branch 'upstream/master'
DrLynch Dec 4, 2022
af2c21a
Adding bcrypt to requirements.
Dec 6, 2022
0d2a0b7
Adding error trapping code for undefined ready state case along with …
Dec 8, 2022
1bd7b55
Adding in error catch for cases where student has no last document wh…
Dec 8, 2022
24187a7
Adding initialization scripts.
DrLynch Dec 8, 2022
4110ec3
Merge remote-tracking branch 'refs/remotes/origin/master'
DrLynch Dec 8, 2022
31fb8a5
Adding basic cleanup to roster.py to fix the camel-case/vs underscore…
Dec 16, 2022
10dfc63
Removed obsolete comment
pmitros Dec 13, 2022
5f6859d
Renaming mirror, since it's not quite compatible with current archite…
pmitros Dec 13, 2022
b3e3115
We will be writing sites-enabled directly, until we debug symlink issues
pmitros Dec 13, 2022
3d0ddf8
Adding interactive run mode
pmitros Dec 13, 2022
5f9decb
Using safe user ID instead of user ID
pmitros Dec 13, 2022
848419b
Add menu dropdown and status button
JohnDamilola Dec 17, 2022
0577b50
Adding updates to deal with data alignment problem.
Dec 19, 2022
16f90dc
Merge remote-tracking branch 'refs/remotes/origin/master'
DrLynch Dec 19, 2022
2160f3c
Updated with upstream content and removed local debugging printing.
DrLynch Dec 19, 2022
ce2e6d6
Easier to add / change reducers for development
pmitros Dec 20, 2022
98bfcfc
We can override names of reducer functions for development
pmitros Dec 20, 2022
d1a7f4a
Full test case of operation outside of the web app
pmitros Dec 20, 2022
e40794c
Merge remote-tracking branch 'upstream/master'
DrLynch Dec 20, 2022
8c6e615
Moved some logging code into init code, for better offline use
pmitros Dec 21, 2022
826bcbc
Pycodestyle fixes
pmitros Dec 21, 2022
e873708
Updating doc branch.
DrLynch Dec 22, 2022
3fbb7d5
Code quality doc
pmitros Dec 22, 2022
092fb0e
Add settings to dropdown menu
JohnDamilola Dec 23, 2022
6f29408
Update top-right button styles
JohnDamilola Dec 23, 2022
2818dae
Making fixes across the system to switch camel to underscore case.
DrLynch Dec 25, 2022
9f96e25
Putting in place a fix for the document alignment problem that we had…
DrLynch Dec 25, 2022
810a249
Revert "Putting in place a fix for the document alignment problem tha…
DrLynch Dec 25, 2022
4749a25
Adding fix for last-doc align via the event-wrapper.
DrLynch Dec 25, 2022
ef87b30
Adding minor fix to wrapper which should address some basic errors.
DrLynch Dec 25, 2022
4cffc4c
Merge pull request #41 from ArgLab/dami-top-right-btn
DrLynch Dec 26, 2022
239e059
Removing some unnecessary info.
DrLynch Dec 26, 2022
6945d28
Making a doc cleanup.
DrLynch Dec 26, 2022
955a976
Merge pull request #42 from ArgLab/lastdocfix
DrLynch Dec 26, 2022
406ea86
Adding note on bcrypt to readme.
DrLynch Dec 30, 2022
9f44e93
Updating writing analysis to better deal with event types.
Jan 8, 2023
edfaab8
Merge branch 'lastdocfix' of https://github.com/ArgLab/ArgLab_writing…
Jan 8, 2023
5951e93
Updating to deal with unrecognized last docs and moving event wrapper…
Jan 8, 2023
12c3010
Updating to deal with unrecognized last docs and moving event wrapper…
Jan 8, 2023
afac01c
Merge pull request #44 from ArgLab/lastdocfix
DrLynch Jan 8, 2023
2a9e860
Updating running for observer server.
Jan 8, 2023
1aa9b77
Fixing minor error in writing analysis.
Jan 8, 2023
d5065b3
Debug code for looking at Google APIs, and in particular, Google Docs…
pmitros Jan 12, 2023
088376c
Moved args into function Google API prototype, so we can use it as a …
pmitros Jan 13, 2023
b013e0a
Starting to create a comprehensive Google API subsystem
pmitros Jan 14, 2023
130fa06
Moving to data structure for Google routes
pmitros Jan 16, 2023
0ce104b
Added initialization alert
bradley-erickson Jan 18, 2023
6ceab44
Fixed sorting
bradley-erickson Jan 18, 2023
ab02941
Merge branch 'master' of https://github.com/ETS-Next-Gen/writing_obse…
pmitros Jan 22, 2023
da2c18c
Google APIs now handled through a registration mechanism, and we're s…
pmitros Jan 22, 2023
531f601
Adding filesystem-based KVS, prototype zero
pmitros Jan 23, 2023
bef4d7b
We can save AJAX requests. We might be able to replay them (not tested)
pmitros Jan 23, 2023
7330ead
Updates
bradley-erickson Jan 24, 2023
96c1436
Hide NLTK UserWarnings from console
bradley-erickson Jan 25, 2023
ae086c6
Worked on communication stream
bradley-erickson Jan 26, 2023
b89aee9
Resolving formatting comments
bradley-erickson Jan 26, 2023
f1489f9
Final formatting changes
bradley-erickson Jan 26, 2023
3ccd3c6
Bugfix
bradley-erickson Jan 26, 2023
aaa4ba1
Merge branch 'master' into underscorefix
bradley-erickson Jan 26, 2023
a585a95
Update main code to reflect underscores
bradley-erickson Jan 26, 2023
bd09037
Merge pull request #28 from ETS-Next-Gen/underscorefix
bradley-erickson Jan 26, 2023
2697eb7
Merge branch 'master' into communication-stream
bradley-erickson Jan 26, 2023
fc399b1
Add menu dropdown and status button
JohnDamilola Dec 17, 2022
95a1cb6
Add settings to dropdown menu
JohnDamilola Dec 23, 2022
e3c8e78
Update top-right button styles
JohnDamilola Dec 23, 2022
738c2c5
Merge branch 'master' into dami-top-right-btn
bradley-erickson Jan 27, 2023
013568a
Merge pull request #32 from ArgLab/dami-top-right-btn
bradley-erickson Jan 27, 2023
f61e094
Merge branch 'master' into communication-stream
bradley-erickson Jan 27, 2023
728a8a4
Added primary loading bar in navbar
bradley-erickson Jan 27, 2023
b5cb6de
Fixed a few issues from PR
bradley-erickson Jan 27, 2023
69bd9f9
Merge branch 'master' into communication-stream
bradley-erickson Jan 27, 2023
56a2e6a
Migrate extension from v2 to v3
JohnDamilola Jan 27, 2023
86f3b0a
Cleaned up alerts
bradley-erickson Jan 27, 2023
a575cdc
Updates
bradley-erickson Jan 27, 2023
1e730c3
Update dashboard.py
bradley-erickson Jan 27, 2023
995a459
Moved function and commented on commented out code
bradley-erickson Jan 27, 2023
93986bf
Update nlp_indicators.py
bradley-erickson Jan 27, 2023
ff7ae4f
Merge pull request #33 from ETS-Next-Gen/communication-stream
bradley-erickson Jan 27, 2023
093418f
Fixing up CamelCase to snake_case, as well as pep8
pmitros Jan 31, 2023
6372f82
Fixing bug in recent options commit, so it works from command line
pmitros Feb 1, 2023
625b6e5
Handle students who never handled a document without raising an Excep…
pmitros Feb 1, 2023
5d0e511
Stub NLP tools
pmitros Feb 1, 2023
35cecdb
Minor cleanup to stub / dev code in WO
pmitros Feb 1, 2023
8fd463f
Sample essays now has wikipedia code from prototype
pmitros Feb 2, 2023
89d2fa0
Worked on expanding list of indicators
bradley-erickson Feb 2, 2023
2dd89be
Completing rebase.
DrLynch Feb 3, 2023
c9a0394
NLP Pipeline work
bradley-erickson Feb 3, 2023
1ff8c04
Script to populate Writing Observer redis with test data
pmitros Feb 4, 2023
f65ed57
Stub app and request for offline development, propagating user_id bug…
pmitros Feb 4, 2023
ff6df81
PR feedback
bradley-erickson Feb 6, 2023
bcb38a9
Merge branch 'master' into full-nlp-options
bradley-erickson Feb 6, 2023
090a007
Merge pull request #36 from ETS-Next-Gen/full-nlp-options
bradley-erickson Feb 7, 2023
d4dfdd7
Fix bug "Extension context invalidated"
JohnDamilola Feb 9, 2023
22f8295
Updating with comments.
DrLynch Feb 9, 2023
78d6aec
Added nlp cache
bradley-erickson Feb 10, 2023
5c0dcf8
Removed old commented out code
bradley-erickson Feb 10, 2023
aa3ae82
Add more code comments/documentation
JohnDamilola Feb 10, 2023
f3aba53
Code clean up
bradley-erickson Feb 11, 2023
5f8a930
Initial PR feedback
bradley-erickson Feb 11, 2023
3af9512
PR Feedback
bradley-erickson Feb 13, 2023
8e4f27d
Merge pull request #37 from ETS-Next-Gen/nlp-cache
bradley-erickson Feb 13, 2023
50b7d9d
Merge pull request #52 from ArgLab/dami-manifest-v3
DrLynch Feb 13, 2023
40ddd3e
Stub code work
bradley-erickson Feb 14, 2023
6d2ea75
PR feedback
bradley-erickson Feb 14, 2023
907af92
Merge pull request #38 from ETS-Next-Gen/stub-nlp
bradley-erickson Feb 15, 2023
7b85ade
Create pycodestyle.yml
bradley-erickson Feb 15, 2023
fe4b112
Addressing pycodestyle issues in modules directory
bradley-erickson Feb 15, 2023
d4bafc2
Update pycodestyle.yml
bradley-erickson Feb 15, 2023
46583b2
Addressing pycodestyle issues
bradley-erickson Feb 15, 2023
7067887
Merge branch 'master' of https://github.com/ETS-Next-Gen/writing_obse…
bradley-erickson Feb 15, 2023
edfe72e
Update README.md
bradley-erickson Feb 16, 2023
1d4d1a2
Updating documentation with additional local note files which will be…
DrLynch Nov 16, 2022
2efa4be
Pushing general modifications made to the extension to support local …
DrLynch Nov 16, 2022
eacad03
Added in missing documentation files from prior fork and added in scr…
DrLynch Nov 16, 2022
e7debd1
Updating documentation on installation scripts.
DrLynch Dec 3, 2022
72694f1
Adding initialization scripts.
DrLynch Dec 8, 2022
a428de2
Adding bcrypt to requirements.
Dec 6, 2022
14400a9
Adding error trapping code for undefined ready state case along with …
Dec 8, 2022
28c3c7c
Adding in error catch for cases where student has no last document wh…
Dec 8, 2022
c1ba621
Changed lambda to def
bradley-erickson Feb 16, 2023
62540e3
Merge branch 'master' of https://github.com/ETS-Next-Gen/writing_obse…
bradley-erickson Feb 16, 2023
9ba2e48
Adding basic cleanup to roster.py to fix the camel-case/vs underscore…
Dec 16, 2022
cb4493f
Adding updates to deal with data alignment problem.
Dec 19, 2022
5fcbe4c
Updated with upstream content and removed local debugging printing.
DrLynch Dec 19, 2022
762ad5a
Add settings to dropdown menu
JohnDamilola Dec 23, 2022
3541119
Updating doc branch.
DrLynch Dec 22, 2022
87bf8f0
Adding fix for last-doc align via the event-wrapper.
DrLynch Dec 25, 2022
cf217f7
Adding minor fix to wrapper which should address some basic errors.
DrLynch Dec 25, 2022
b27189d
Removing some unnecessary info.
DrLynch Dec 26, 2022
6294fa7
Making a doc cleanup.
DrLynch Dec 26, 2022
179c56b
Updating writing analysis to better deal with event types.
Jan 8, 2023
df7efe0
Adding note on bcrypt to readme.
DrLynch Dec 30, 2022
be1e1ed
Updating to deal with unrecognized last docs and moving event wrapper…
Jan 8, 2023
65ba133
Updating to deal with unrecognized last docs and moving event wrapper…
Jan 8, 2023
e006e92
Updating running for observer server.
Jan 8, 2023
c1e90f3
Fixing minor error in writing analysis.
Jan 8, 2023
2105bc1
Updating with comments.
DrLynch Feb 9, 2023
f961bec
Migrate extension from v2 to v3
JohnDamilola Jan 27, 2023
4b945fa
Fix bug "Extension context invalidated"
JohnDamilola Feb 9, 2023
d9e4af0
Add more code comments/documentation
JohnDamilola Feb 10, 2023
5d498e4
Fixing merge conflict in creds to add chrome settings back.
DrLynch Feb 16, 2023
2b0fe27
Merge pull request #69 from ETS-Next-Gen/master
DrLynch Feb 16, 2023
aea327d
Moved dash dashboard out of prototypes
bradley-erickson Feb 17, 2023
a9e1b20
Merging in creds.yaml tweak.
DrLynch Feb 18, 2023
cf0f8c2
Merge pull request #40 from ETS-Next-Gen/unprototype-wo-dashbaord
bradley-erickson Feb 20, 2023
19b2301
Category and sorting work on the highlighting
bradley-erickson Feb 22, 2023
6784a58
Update creds.yaml.example
bradley-erickson Feb 23, 2023
a90ab87
Merge pull request #41 from ArgLab/creds-tweak
bradley-erickson Feb 28, 2023
534a5ad
Cleaning cruft from analysis code.
DrLynch Feb 28, 2023
687a488
Minor cleaning.
DrLynch Mar 3, 2023
a6d9a11
Fix content script unload/reload
JohnDamilola Mar 3, 2023
37727b4
Syncing upstream creds.
DrLynch Mar 3, 2023
82c6da5
Fixing minor spacing differences and removing bcrypt from requirement…
DrLynch Mar 3, 2023
484d6bc
Adding exec.
Mar 3, 2023
8f48d4a
Merge remote-tracking branch 'refs/remotes/origin/master'
DrLynch Mar 3, 2023
7d5aaa8
Fixing load error on google.py startup to ablate unneeded code.
Mar 7, 2023
45235cd
Fixing basic error in aggregator.
Mar 7, 2023
0562b31
Fixing new dashboard structure.
Mar 7, 2023
ee3fad6
Updating aggregator error.
Mar 10, 2023
39859b8
Minor spacing cleanup.
DrLynch Mar 16, 2023
f8cb2a5
Merge pull request #73 from ArgLab/dami-script-reload
DrLynch Mar 16, 2023
8674ffc
Minor tweak to service startup.
DrLynch Mar 16, 2023
2fd9a7f
Making minor fix in module loading for new libraries.
DrLynch Mar 16, 2023
8d9c6dc
Adding explicit cuda call.
DrLynch Mar 17, 2023
a7858ea
Updating the plugin to deal with event elements.
DrLynch Mar 31, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions .github/workflows/pycodestyle.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
name: Pycodestyle

on: [push]

jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.9", "3.10"]
steps:
- uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v3
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install pycodestyle
- name: Analysing the code with pycodestyle
run: |
pycodestyle --ignore=E501,W503 $(git ls-files 'learning_observer/*.py' 'modules/*.py')
29 changes: 29 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,30 @@
*~
\#*
.\#*
*__pycache__*
webapp/logs
webapp/static_data/teachers.yaml
creds.yaml
CREDS.YAML
uncommitted
extension.crx
extension.pem
extension.zip
*egg-info*
public_key
*/dist
learning_observer/learning_observer/static_data/teachers.yaml
learning_observer/learning_observer/logs/
learning_observer/learning_observer/static/3rd_party/
learning_observer/learning_observer/static_data/course_lists/
learning_observer/learning_observer/static_data/course_rosters/
learning_observer/learning_observer/static_data/repos/
learning_observer/learning_observer/static_data/dash_assets/
learning_observer/learning_observer/static_data/courses.json
learning_observer/learning_observer/static_data/students.json
learning_observer/passwd.lo
--*
.venv/
.vscode/
build/
dist/
3 changes: 3 additions & 0 deletions CONTRIBUTORS.TXT
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
Piotr Mitros
Oren Livne
Paul Deane
661 changes: 661 additions & 0 deletions LICENSE.TXT

Large diffs are not rendered by default.

65 changes: 65 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
PYTHONFILES = $(wildcard \
learning_observer/learning_observer/*py \
learning_observer/util/*py \
gitserve/gitserve/*py \
gitserve/*py \
learning_observer/learning_observer/pubsub/*py \
learning_observer/learning_observer/stream_analytics/*py \
)

run:
# If you haven't done so yet, run: make install
# Also, run: workon learning_observer
cd learning_observer && python learning_observer

# Build browser extension
extension-package:
# I won't build this for you, but I will give you instructions, since
# the set of options will vary.
#
# On my last system, I needed:
# google-chrome --pack-extension=extension --pack-extension-key=extension.pem --disable-setuid-sandbox --no-gpu --no-sandbox --headless
# On my current system
# google-chrome --pack-extension=extension --pack-extension-key=extension.pem
# The pem file is your private key. You'll need to make one.
# The output will be called extension.crx

codestyle:
# Check code style quality
#
# In pycodestyle, we ignore E501 (line too long) and W503 (which
# requires a choice.
# https://stackoverflow.com/questions/57074300/what-is-the-recommended-way-to-break-long-if-statement-w504-line-break-after-b
#
# In pylint, we ignore:
# 1. W0613: unused arguments (common for e.g. `request` parameter)
# 2. E501/C0301: line too long (obsolete with modern computers
# ref: https://lkml.org/lkml/2020/5/29/1038)
# We still aim for shorter lines, but it's not a showstopper if
# we break the limit occasionally. We may re-examine this decision
# if we have sufficient developers working on VT100 terminals.
# 3. W0511: TODO: We're gonna have a lot of these, and we want to
# encourage leaving these around. As a coding style, we want to
# get interface and overall structures right, and then clean
# up e.g. performance/scaling, exception handling, test coverage,
# etc. once we know what we're doing.
# 4. R0913: Too many arguments. That's a relic of web apps. Sorry.
#
# Generally, pycodestyle issues are showstopppers for pushing to
# upstream. Pylint issues are worth an occasional cleanup pass, but we
# can tolerate.

pycodestyle --ignore=E501,W503 $(PYTHONFILES)
pylint -d W0613,W0511,C0301,R0913,too-few-public-methods $(PYTHONFILES)

install:
# Run:
# mkvirtualenv learning_observer
# pip install -r requirements.txt
# cd learning_observer
# python setup.py develop
# python learning_observer
# And then clean up this Makefile to do it for you automatically :)

sphinx:
cd learning_observer/docs; make html
145 changes: 141 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,143 @@
# Writing analysis
This repository is for a writing analysis project. There isn't much to see here yet.
# Writing Observer and Learning Observer

Contact/maintainer: Piotr Mitros (pmitros@ets.org)
![Writing Observer Logo](learning_observer/learning_observer/static/media/logo-clean.jpg)

Licensing: Open source / free software. License TBD.
This repository is part of a project to provide an open source
learning analytics dashboard to help instructors be able to manage
student learning processes, and in particular, student writing
processes.

![linting](https://github.com/ETS-Next-Gen/writing_observer/actions/workflows/pycodestyle.yml/badge.svg)

## Learning Observer

_Learning Observer_ is designed as an open source, open science learning
process data dashboarding framework. You write reducers to handle
per-student writing data, and aggegators to make dashboards. We've
tested this in math and writing, but our focus is on writing process
data.

It's not finished, but it's moving along quickly.

## Writing Observer

_Writing Observer_ is a plug-in for Google Docs which visualizes writing
data to teachers. Our immediate goal was to provide a dashboard which
gives rapid, actionable insights to educators supporting remote
learning during this pandemic. We're working to expand this to support
a broad range of write-to-learn and collaborative learning techniques.

## Status

There isn't much to see here for external collaborators yet. This
repository has a series of prototypes to confirm we can:

* collect the data we want;
* extract what we need from it; and
* route it to where we want it to go (there's *a lot* of data, with
complex dependencies, so this is actually a nontrivial problem)

Which mitigates most of the technical risk. We also now integrate with
Google Classroom. We also have prototype APIs for making dashboards, and
a few prototype dashboards.

For this to be useful, we'll need to provide some basic documentation
for developers to be able to navigate this repo (in particular,
explaining *why* this approach works).

This system is designed to be *massively* scalable, but it is not
currently implemented to be so (mostly for trivial reasons;
e.g. scaffolding code which uses static files as a storage model). It
will take work to flush out all of these performance issues, but we'd
like to do that work once we better understand what we're doing and
that the core approach and APIs are correct.

Getting Started
===============

As an early prototype, getting started isn't seamless. Run:

~~~~~
make install
~~~~~

And follow the instructions. You'll probably run into bugs. Work around the bugs. Then fix up the makefile and make a PR to address those bugs :)

Once that's done, run:

~~~~
make
~~~~

Again, fix up the makefile, and make a PR.

You can also go into the devops directory, which has scripts in
progress for spinning up a cloud instance and managing flocks of
_Learning Observer_ instances.


~~~~
Writing Observer
~~~~


To setup writing_observer on top of the learning observer platform you must go into modules/writing_observer and run:

sudo python setup.py develop




System requirements
===================

It depends on what you're planning to use the system for.

The core _Learning Observer_ system works fine on an AWS nano
instance, and that's how we do most of our testing and small-scale
pilots. These instances have 512MB of RAM, and minimal CPU. It's
important that this configuration remains usable.

For deployment and more sophisticated uses (e.g. NLP) in larger
numbers of classrooms, we expect to need **heavy** metal. As we're
playing with algorithms, deep learning is turning out to work
surprisingly well, and at the same time, requires surprisingly large
amounts of computing power. A GPGPU with plenty of RAM is helpful if
you want to work with more sophisticated algorithms, and is likely to
be a requirement for many types of uses.

All _Learning Observer_ development has been on Linux-based platforms
(including Ubuntu and RHEL). There are folks outside of the core team
who have tried to run it on Mac or on WSL, with mixed success.

Running on RHEL requires the following services:
* REDIS
* nginx.


bcrypt
-----------------------------------------------
A note on bcrypt. The code uses bcrypt for some internal password management.
We are not including it directly in the install because it acts oddly across
platforms so you may need to install some version manually.


Additional Notes
===================
At present the system also uses static content that is served from a repo.
This allows us to actually select different sources for the static data.
This can also point to the current copy if necessary and can be configured
as part of the creds.yaml file to generate the repo or add it on startup.

This is not ideal but it is a mechanism for embedding the alternatives.


Contributing or learning more
=============================

We're still a small team, and the easiest way is to shoot us a quick
email. We'll gladly walk you through anything you're interested in.

Contact/core maintainer: Piotr Mitros

Licensing: Open source / free software. License: AGPL.
94 changes: 0 additions & 94 deletions configuration/files/default

This file was deleted.

13 changes: 13 additions & 0 deletions devops/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
Dev-ops scripts
===============

This contains machinery for spinning up, shutting down, and managing
Learning Observer servers. It's usable, but very much not done yet. We
can spin up, spin down, and list machines, but this ought to be more
fault-tolerant, better logged, less hard-coded, etc.

We would like to be cross-platform, and evenually support both
Debian-based distros and RPM-based distros. We're not there yet
either. We'd also like to support multiple cloud providers. We're not
there yet either. However, we probably won't accept PRs which move us
away from this goal.
Loading