Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update labs #326

Merged
merged 51 commits into from
May 15, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
26c8487
Fixing Makefile and adding devbox
ineiti Feb 14, 2024
9a22d78
Adding link checking
ineiti Feb 14, 2024
5c9e9a1
Fixing 'Columns' and 'Reset' buttons
ineiti Feb 14, 2024
d23131a
Adding update instructions and fixing wrong dates
ineiti Feb 14, 2024
d9922cd
Updating Aberer's lab LSIR
ineiti Feb 14, 2024
e7f97b3
Updating ESL
ineiti Feb 20, 2024
1e6037f
Fix testing labs with no projects
ineiti Feb 20, 2024
cafe903
Added NLP lab
ineiti Feb 20, 2024
ab6f7a4
ESL proposal
ineiti Feb 20, 2024
05cbb57
Added VCA lab, waiting for page to come up before contacting Thomas
ineiti Feb 20, 2024
1d94b8f
NAL - added proposed projects
ineiti Mar 8, 2024
8754685
DSLAB - updated some repos
ineiti Mar 8, 2024
4d7cbef
LIONS - nothing new, sent email
ineiti Mar 8, 2024
158ce05
THEORY - Updated
ineiti Mar 8, 2024
1856467
Adding compsec with arkworks
ineiti Mar 13, 2024
145ae56
Only show headers when there is no search and no dropdown chosen
ineiti Mar 13, 2024
6e4a1a8
StUpId CaSe-InSeNsItIvE MaC FiLeSyStEm
ineiti Mar 13, 2024
29a29f7
Adding a trailing _ to lab names to avoid matching short names
ineiti Mar 15, 2024
b4a568e
Updated LSI
ineiti Mar 15, 2024
aa9b2a1
Updating MMSPG
ineiti Mar 15, 2024
e8015e9
Updated parsa
ineiti Mar 15, 2024
9b01ed6
Correctly interpret old lab links
ineiti Mar 19, 2024
7d404a9
Updated LSIR
ineiti Mar 19, 2024
1a34082
Updated DSLAB
ineiti Mar 20, 2024
2de0fbd
Updated LSI
ineiti Mar 20, 2024
7e0d266
Updated DEDIS
ineiti Mar 21, 2024
ba541e8
Update LTS4
ineiti Mar 21, 2024
d9b9944
Updated INDY
ineiti Mar 21, 2024
7213d0e
Update DCL
ineiti Mar 22, 2024
eae03eb
Update LAP
ineiti Mar 22, 2024
74f2450
Updated MLO
ineiti Apr 12, 2024
d91852b
Include LTS4 proposals
ineiti Apr 12, 2024
28bfe05
Update RS3LAB
ineiti Apr 12, 2024
f9a2f8a
Update SACS
ineiti Apr 12, 2024
ec36e86
Update LARA
ineiti Apr 12, 2024
2f80015
Update LAMP
ineiti Apr 12, 2024
b095476
Update HexHive
ineiti Apr 12, 2024
bd35812
Added SYSTEMF
ineiti Apr 14, 2024
c4c9660
Updated SalatheLab and IVRL
ineiti Apr 14, 2024
fc680e3
Update SPRING
ineiti Apr 15, 2024
5b3b9af
update drand
ineiti Apr 15, 2024
20285c9
Fix odyssey link
ineiti Apr 15, 2024
73a3b36
Sent emails
ineiti Apr 16, 2024
3ebd058
Update LASEC
ineiti Apr 16, 2024
de6bb5b
Update DLAB
ineiti Apr 16, 2024
7b4173d
Fix date
ineiti Apr 24, 2024
1fde057
data: add maturity evaluation arkworks
PascalinDe May 2, 2024
53936a4
Adding prjects from Bob
ineiti May 3, 2024
54ef0ab
Merge pull request #327 from c4dt/maturity_evaluation_arkworks
PascalinDe May 3, 2024
3f5c361
Put the professor by default visible and sort by latest commit
ineiti May 14, 2024
4a74b35
@PascalinDe's comments
ineiti May 14, 2024
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
1 change: 1 addition & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
updates
8 changes: 4 additions & 4 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ all: showcase

.ONESHELL:

PYTEST_OPTIONS := -v
PYTEST_OPTIONS := -v -x
VENV_DIR := venv

$(VENV_DIR):
Expand All @@ -12,7 +12,7 @@ $(VENV_DIR)/%: | $(VENV_DIR)

.PHONY: env
env: requirements.txt $(VENV_DIR)
. $(VENV_DIR)/bin/activate
. $(VENV_DIR)/bin/activate && \
pip3 install -r $<

.PHONY: showcase
Expand All @@ -22,12 +22,12 @@ showcase: env showcase.py

.PHONY: env-test
env-test: requirements-test.txt $(VENV_DIR)
. $(VENV_DIR)/bin/activate
. $(VENV_DIR)/bin/activate && \
pip3 install -r $<

.PHONY: test
test: env-test
. $(VENV_DIR)/bin/activate
. $(VENV_DIR)/bin/activate && \
python3 -m pytest $(PYTEST_OPTIONS)

.PHONY: clean
Expand Down
72 changes: 65 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,12 +38,13 @@ in `(brackets)`.

```yaml
url_path:
name: (lowercase short name)
name: (short name)
description: >
(Short description, will be shown under the name)
type: ( "Application" | "Library" | "Framework" | "Toolset" | "Simulation" | "Experiments" )
categories: ( "Privacy" | "Blockchain" | "Verification" | "Security" |
"Learning" | "Other" )
applications": ( "Finance" | "Health" | "Gov" | "Infra" | "Info" | "Other" )
applications: ( "Finance" | "Health" | "Gov" | "Infra" | "Info" | "Other" )
tags:
- (Add tags, if possible out of the existing ones)
date_added: (YYYY-MM-DD)
Expand All @@ -56,7 +57,6 @@ url_path:
(A 2-3 sentence description for somebody with general knowledge)
tech_desc: >
(A more detailed description in 2-3 sentences for somebody knowledgeable in the subject)
type: ( "Application" | "Library" | "Framework" | "Toolset" | "Simulation" | "Experiments" )
notes: (Additional description)
url: (URL for a home page)
contacts:
Expand Down Expand Up @@ -92,21 +92,39 @@ url_path:

## Run the application locally

Ensure you have the required tools to create Python virtual environments. You might need to install a specific package depending on your distribution, e.g. on Debian `python3-venv`:
Ensure you have the required tools to create Python virtual environments.
You can either install the dependencies in a virtual environment, or use [devbox](https://www.jetpack.io/devbox).

### Install dependencies in a virtual environment

You might need to install a specific package depending on your distribution,
e.g. on Debian `python3-venv`:

```
$ sudo apt install python3-venv
```

### Use devbox

Install devbox from https://www.jetpack.io/devbox, then run:

```bash
devbox shell --pure
```

### Create the virtual environment

Simply run `make`:

```
$ make
```

This will create a Python virtual environment, activate it, install the dependencies and run the showcase application.
This will create a Python virtual environment, activate it,
install the dependencies and run the showcase application.

The application listens by default on port 8080; point your browser to http://localhost:8080/showcase.
The application listens by default on port 8080 in the path `showcase`;
point your browser to http://localhost:8080/showcase.

## Run the tests

Expand All @@ -116,7 +134,8 @@ $ make test

## Run the application on a server

Assuming \$APP_PATH is the directory containing the application, the following must be setup on the server (see also the [mod_wsgi docs](https://modwsgi.readthedocs.io/en/develop/user-guides/virtual-environments.html#daemon-mode-single-application):
Assuming `$APP_PATH` is the directory containing the application,
the following must be setup on the server (see also the [mod_wsgi docs](https://modwsgi.readthedocs.io/en/develop/user-guides/virtual-environments.html#daemon-mode-single-application):

Clone the repository:

Expand Down Expand Up @@ -150,6 +169,45 @@ Restart Apache:
$ sudo /etc/init.d/apache2 restart
```

# Tools

## Linkchecker

When checking the links, you can use [LinkChecker](https://github.com/linkchecker/linkchecker) to
scan all links from the showcase.
The configuration file [./linkcheckerrc](./linkcheckerrc) helps to clean up
the result page of a linkchecker run.
You can get the links to the project of a lab with the `data.py` file:

```bash
make env
. ./venv/bin/activate
./data.py
```

This will print out a list of all available labs.
Launch the showcase:

```bash
make showcase &
```

Now you can launch linkchecker on all pages from a given lab:

For a list of available labs:

```bash
./check_lab_links.sh
```

Checking a given lab:

```bash
./check_lab_links.sh LAB_NAME
```

This will also check the links of the external websites.

# Contributing

To contribute to this repository, please install the pre-commit hooks:
Expand Down
46 changes: 46 additions & 0 deletions UPDATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Updating the Showcase

This is a little todo-list of how to update the showcase

- create a new entry in the [updates/](./updates) directory

- `big-update` if you go through all labs
- `incremental-update` for small changes over multiple labs (commit updates)

- go through the list of labs and compare it with https://c4dt.epfl.ch/laboratory/

- mark retired professors
- add new labs

- for every lab, do

- update the information in [data/labs.yaml]: url, description, contacts
- if the contact person left the lab, delete it -> the `contact` entry will point to
the professor
- search for new projects
- on the lab page
- on github / source management
- update the existing projects and test the links
- update the last commit and the last update entry
- click on all links (or use https://github.com/linkchecker/linkchecker)
- make sure the papers point to https://infoscience.epfl.ch, with an additional link to
arxiv if the infoscience page doesn't allow downloading the paper as a visitor

- create a PR and ask for comments

- once all labs are updated, for every lab, do

- write an email to the professor
- remind them the goals of the Factory and the Showcase
- add a link to the projects of their lab
- ask them if it's OK like that or if they want to add/remove/modify any entry
- remind them that we do
- maturity evaluation
- promote projects
- work on specific projects
- CC one or two postdocs
- remind them after a week or so

- think about adding some scripts, e.g.,
- updating the github last commit and the `last_update`
- going through all links and checking there is no 404
19 changes: 19 additions & 0 deletions check_lab_links.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#!/usr/bin/env bash

make env
. ./venv/bin/activate

if [[ -z "$1" ]]; then
echo "Syntax: $0 labname"
./data.py
exit 1
fi

LINKS=""
for project in $( ./data.py $1 ); do
echo
echo "*** Checking project $1/$project"
LINKS="$LINKS http://localhost:8080/showcase/$project/technical"
done

linkchecker -f linkcheckerrc $LINKS
42 changes: 36 additions & 6 deletions data.py
100644 → 100755
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
#!/usr/bin/env python3

import codecs
import os

Expand All @@ -20,14 +22,27 @@
}),
"description": sy.Str(),
"url": sy.Url(),
"contacts": sy.EmptyList() | sy.Seq(
sy.Optional("contacts"): sy.Seq(
sy.Map({
"name": sy.Str(),
sy.Optional("email"): sy.Email(),
}),
),
sy.Optional("notes"): sy.Str(),
})
sy.Optional("information"): sy.Seq(
sy.Map({
"title": sy.Str(),
"url": sy.Url(),
sy.Optional("notes"): sy.Seq(
sy.Map({
sy.Optional("label"): sy.Str(),
"text": sy.Str(),
sy.Optional("url"): sy.Url(),
}),
),
}),
),
}),
)
})

Expand Down Expand Up @@ -61,7 +76,7 @@
"Other"
])),
"tags": sy.Seq(sy.Enum([
"Access Control", "Anonymity", "Attack",
"Access Control", "Adversarial", "Anonymity", "Attack",
"Benchmark", "Binary", "Bluetooth", "Byzantine Resilience",
"Cloud", "Code Analysis", "Computer Vision", "Concurrency", "Consensus", "CrowdSource",
"Data Structures", "Database", "Debug", "Decentralized", "Deep Neural Networks",
Expand All @@ -71,7 +86,7 @@
"Homomorphic Encryption",
"Image Classification", "Images", "Inductive Bias", "Internet of Things",
"Locking", "Low-Level",
"Mobile App",
"Machine Learning", "Mobile App",
"Natural Language", "Network",
"Optimization",
"Predictor", "Protection", "Protocol", "PyTorch",
Expand Down Expand Up @@ -110,8 +125,9 @@
sy.Optional("license"): sy.CommaSeparated(sy.Enum([
"AGPL-3.0",
"GPL-2.0", "GPL-3.0",
"GPL-2.0+", "GPL-3.0+",
"LGPL-3.0",
"MPL-2.0",
"MPL-2.0", "MPL-2.0+",
"MIT",
"Apache-2.0",
"BSD-2-Clause",
Expand All @@ -120,9 +136,11 @@
"CeCILL-B",
"CloudSuite",
"CC BY 4.0",
"SOLDERPAD HARDWARE LICENSE",
"commercial",
"non-commercial",
"other",
"various"
])),
sy.Optional("information"): sy.Seq(
sy.Map({
Expand Down Expand Up @@ -171,10 +189,22 @@ def load():
labs = labs_yaml['labs'].data

for lab_id, lab in labs.items():
with codecs.open(os.path.join(DATA_PATH, lab_id, PROJECTS_FILENAME),
project_file = os.path.join(DATA_PATH, lab_id, PROJECTS_FILENAME)
if not os.path.exists(project_file):
continue
with codecs.open(project_file,
encoding='utf-8') as f:
projects_yaml = sy.load(f.read(), PROJECTS_SCHEMA, label=f.name)
lab['projects'] = projects_yaml['projects'].data

return labs

if __name__ == '__main__':
import sys, os
data = load()
if len(sys.argv) != 2:
print("\n".join(data.keys()))
sys.exit(0)

if sys.argv[1] in data:
print("\n".join(data[sys.argv[1]]['projects'].keys()))
43 changes: 43 additions & 0 deletions data/COMPSEC/projects.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
projects:
# Most common fields:
arkworks:
name: arkworks
description: >
Rust ecosystem for zkSNARK programming
type: "Library"
categories:
- "Privacy"
- "Blockchain"
- "Security"
applications:
- "Finance"
- "Health"
- "Info"
tags:
- "Zero-Knowledge Proofs"
layman_desc: >
Arkworks is a collection of Rust libraries for building
privacy-preserving applications using zero-knowledge proofs called
zkSNARKs. It has efficient implementations of the underlying
cryptographic primitives like finite fields and elliptic curves. It
also provides tools to encode computations as circuits that can be
proven using zkSNARKs while keeping inputs private.
tech_desc: >
Arkworks provides efficient implementations of components required for
zkSNARK applications. It includes libraries for finite fields,
elliptic curves, R1CS constraints, and SNARK proving systems like
Groth16 and Marlin. It defines interfaces for relations like R1CS,
and for building SNARK circuits using gadgets and subcircuits.
url: https://arkworks.rs/
code:
type: Project Github
url: https://github.com/arkworks-rs
date_last_commit: 2024-03-08
language: Rust
license: Apache-2.0
information:
- type: Video
title: Rust Ecosystem for zkSNARKs
url: https://www.youtube.com/watch?v=Bz2KN_h3VKM&t=90s
date_added: 2024-03-13
maturity: 3
Loading
Loading