/ # root folder
en/ # top level folder for each language
resources/ # Static or dynamic content that are not part of exchanged
# content (they hold information but are not meant to be
# structured like learning content)
topics/ # Contains Topics.
a-topic/
another-topic/ # Contains Units
a-unit/
another-unit/ # Contains Stacks
1-intro.md # Example Stack.
1-intro-hrd.md # Example Stack for the hrd profile.
...
Each folder in topics
is a Topic (a small content pack) holding the content necessary to learn a small unit of knowledge or knowhow.
Each Topic contains several Units. A Unit should typically be readable in around or less than 5 minutes.
Each Unit folder contains Stacks in Markdown w/ YAML Frontmatter format which contain information or interactive components.
Stacks are using the following file naming convention: number-type-category-othercategory.md
For instance the following files would correspond to:
1-intro.md
: Introduction for everyone.
1-intro-hrd.md
: Introduction for Human Rights Defenders.
The number defines the order in which the Stack is displayed within the unit.
The type defines the way the Stack will be displayed. (equivalent to setting type: stacktype
). Description of types:
card
,intro
,learn
,scenario
,next
: Regular content cards.howto
: Walkthrough or How to card.activity
,script
,test
: Quizz, or practical test card, dynamic content (for instance triggering other app's features)
Currently there are 3 sets of categories:
- profile
or using the file naming convention.
Profiles are used to tag content for different audiences (profession, communities,...)
- _ : (Default) No profile means for everyone.
- journo : For journalists
- hrd : For human rights defenders
In practice they are used to:
- Filter content on the mobile app based on preferences entered at setup.
- Generate different websites for different audiences
- Generate different printable PDFs for different audiences
- platform
or using the file naming convention.
Required for howto content types
Platforms are:
- _ : All
- android
- windows
- linux
- osx
- ios
Examples
In YAML Frontmatter:
- platform: android
In Filename:
5-howto-android.md
- protect
or using the file naming convention.
Content is also tagged according to the risk profiles it is targeting. Currently the following approach is proposed:
| Capability Class \ Assets Class | Content | Identity |
| ------------------------------- | ------- | -------- |
| Passive | content | identity |
| Targeted | integrity ||
Passive corresponds to dragnet electronic surveillance. Targeted corresponds to active electronic surveillance (using malware or other techniques) or physical surveillance.
Content are assets related to the content of communications or documents. Identity are assets related to the authors of documents or communications, of users of platforms, other metadata establishing links between content and people, of people between each other, of people with locations...
The choice of protection profile should always be visible to the user whatever their self assessed risk profile is. Switching protection profile should be accompanied by information about what the profile approach's limitations are and what the target protection profile is meant to cover.
In addition to the table cells:
none
means a practice which doesn't protect anything against any of the classes of adversary capabilities.
Ommitting the protect
category means that the content is meant not specific to any risk profile.
Examples
In YAML Frontmatter:
- protect: content, identity
In Filename:
5-howto-content-identity.md