Table of Contents
- Tech TODO
- OGB Modules
- Template Module
- Signup Module
- Invitation Module
- User Management Module
- Moderation Module (flag module)
- Sortition Module
- Voting
- Filter Module
- These need writing up:
- UI to choose templates for OGB
- NFR (Non Functional Requirments)
- Development Process
- Why XWiki
- Team Members
- Story Mapping Output (prioritised vertically - downwards)
- Wireframe Diagrams
- Build Templates
- XWiki Modules [Draft List]
- Identity “objects”
- Group “objects”
- Definitions
This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.
Tech TODO
OGB Modules
Template Module
For use when starting a new OGB (Open Governance Body).
Use the existing XWiki template system to build a set of pages which cannot be accessed by non-developers. No access from the OGB users, except to clone.
Set up a basic template to understand if there is additional developent required.
Including a grpup that checks if some is a stakeholder or affiliate.
Signup Module
Login if exsiting user on the instance
- Create new account as 'Member' (everyone):
- may decide to only observe or take part (untick the box "take role")
- create a personal wiki page with their activiy pub stream; to do with what they want
- Upgrade to 'Stakeholder Member':
- fill in questionnaire body (template)
- a tagged activity pub message will get posted to the approval group
- group members must each submit 'approve' or 'disapprove' (this is useing the vote modual, likly with a passive time in/out)
- Upgrade to 'Affiliate Member':
- Fill in questionnaire body (template)
- a tagged activity pub message will get posted to the approval group
- group members must each submit 'approve' or 'disapprove' (this is useing the vote modual, likly with a passive time in/out)
Invitation Module
Facilitating how members can invite new people. [Research how this currently works in Xwiki]
- Send email
- SMS [a pain?]
- QR codes
- Print Posters
- Signup URL
- AP event
This will aslow work for the groups, then it would be a AP event
User Management Module
- Facilitate creation of wiki pages
- member individuals
- member groups
- permissions or members/groups to edit and lock pages
- Create groups
- Join groups
- Leave groups
- Admin of groups
Moderation Module (flag module)
[Should this just be the "flagging" module - what features are required? Or does this better fit in as part of the "User Management Module" above?]
- any page/account can be flaged, the are thresholds and create AP alertes and API actions. we call this something nice like "step back"
Sortition Module
- Determines who gets placed in a given 'Body'
- Runs every 10 mins
- Looks for any space in body
- Uses the ratios of sortition into 'Body Member' (1/3 1/3 1/3)
- candidate for each pool are selected randomly from the candidates (who are taking part)
- Updates the new members rolls
- Posts to ActivityPub and alerts via email
- [Q. How many ActPub "users"/streams will there be? One for Organisation, one per Body, one per Member?]
- Second sortition runs to pick 'Voices' of the 'Body'
- 3 to 5 are picked as sortated as voices (see above)
- [add activity time outs and time limits]
- [add group and wifi logic]
Voting
- 3 options
- can vote on any "proposal"
- if it goes through, then one of the admins/mod takes the action
- it auto announces via ActPub
Filter Module
Facilitate how hashtags and/or categories from ActivityPub messages are processed by various parts of the OGB system.
Various separate designations within OGB should be able to filter specific messages/posts. This module provides the ability for other modules to achieve this.
[Is the above an accurate interpretation?]
- Members
- Stakeholders
- Affiliates
- Body
- Voice
- Groups
- Admin
- Group Members
- Roles
Yep, we have to deside if it is a singal actor with tags a few actors?
These need writing up:
See the Extentions
section here
UI to choose templates for OGB
- Java backend
- [Any specific reason why Java? XWiki specific?]
- Velocity front end
- Used by any member to set up a new OGB XWiki instance
- Choose from available templates
- [Research if this functionality is in XWiki or needs developing]
- [Hamish to define template and how differences]
NFR (Non Functional Requirments)
NFR (Non Functional Requirements)
###Development Framework
Use a modem cross platform framework
Deployment support for AWS Lambda, Azure Functions, and Google Cloud Functions, and others
Framework examples https://www.pulumi.com/ and https://www.serverless.com/
Simple deployments and update
Infrastructure as code pattern
###Development
GIT Version control
GIT Flow with feature branches
Code review at check in
All business logic and algorithms must be documented
High level of automated testing coverage
Developers are able to run their own deve
###Release notes
Change sign off for production
Zero downtime updates (using green blue pattern)
###Quality Control
Dedicated QA staff
Automated and manual testing
Pre release testing
Regression testing
Active monitoring and issue alerting
Dashboard to clearly see the current performance
Dashboard to clearly see the current performance
###Performance
High performance that scales up and down
Paged data access. The UI only loads data needed to show on the current page
Scaling based on partner and customer usage load
Processing times for imports and exports
###Reliability
2 physical live (active/active) locations for all production infrastructure and data storage
Security
Encryption of all data during transmission
Encryption of all data at rest (files and Databases)
Use a key management system so the keys are not exposed to ops and devs
Password requirements - length, special characters, expiry, recycling policies, 2FA
Login / Access levels
User session / Inactivity management - Durations, actions
Audit table of all user driver changes so it is clear who did what
Capacity
High transactions per second
Storage - how much data does the system need to store
Year-on-year growth requirements
Integrity
Bad data trapping - data imports, flag and continue, stop the import policies
Filtering test data from production
Localization
Support multiple currencies
Support multiple tax systems
Support multiple delivery systems
TLDs eg .de .fr
Directory based eg /pt /it
Disaster planning
Recovery plan for systems and staff
Backup of code and data - Frequency
Process of restoring data and backups
Requirements
[Can we list what the key behaviours of the system should be. In part I want to be certain that a wiki is the most suitable candidate - the initial list here was taken from the end of the previous version of this document]
Function:
- “objects” voting/consensus process/decisions
- We need activity streams of any “object” and “action”
- Flagging is built from the existing “objects”
- We need “security” workflow/check “objects”
- Lottery code (random numbers)
- Mersene twister is probably fine
- Groups
- membership
- [can one account belong to many groups?]
- when first set up, default templates are provided (e.g. a set of "skeleton" wiki pages)
- membership
UI/X:
- We need structure and workflow – the 3 way split with sliders [link please]
- We need drag and drop
- to build this structure and workflow out of democracy “objects”
Definitions
[Feel free to link to other pages if the content is already elsewhere]
Object
: ...Action
: ...Flagging
: ...- ...
Development Process
- Choose a well maintained, open source wiki to be the base of the functionality
- Find a team who are skilled in the language(s), data storage and frameworks used to build the chosen wiki
- recruit from the maintainers initially if possible
- Do story mapping exercise to define the features and scope and user life cycles
- Prioritise the stories to highlight MVP features
- Design initial wireframes
- Define/design the templates and wiki page structure needed to support the project
- Define the roles required to support the user features
- Link the roles to the page templates (who can edit what)
- Simplify the UI to lock down the templates from careless modifications
- Define the new voting module
- Define the automated actions on voting, flagging, and elapsed time
- Define the sortition feature
- Define the sortition actions and timings
- Define the activity pub output feed
- Define the user classification feature (e.g. use their email address or post code to classify them)
- Define non-functional requirements
- Define automated testing requirments
- Define git flow process
- Define peer code review process
- Finalise wireframes
- Design simple, accessible UI/UX and demonstarate key "hero" pages for developers
- [Q. Can someone define hero pages, please?]
- Build MVP using scrum process
- Deploy, use, and get feedback
- Define Version 1 to meet key feedback
- Build
- Deploy and iterate from 23.
Why XWiki
Ideal candidate as it has active maintainers, and because it already has ActivityPub integration
- ActivityPub Extension
- YOU CAN TALK TO THE DEV HERE
Team Members
Tom Campbell Hamish Michael
Story Mapping Output (prioritised vertically - downwards)
TBD
Wireframe Diagrams
One page overview diagram of all pages
Home page
[FIX THE FOLLOWING IF NECESSARY - I GUESSED THE STRUCTURE A BIT]
Signin/signup wireframe:
- The pages are in reverse order to the user groups
- Voices blog first then groups pages, then body, then users
- Side bars of voices blog items and recent activity pub feed
Functionality wireframes:
- Voting config
- Voting actions
- Voting results
Build Templates
For the wiki page types
- Voice blogs
- Groups
- Body
- Other users
XWiki Modules [Draft List]
Modules
are simply blocks on the wiki pages with options
- A front end that gives you a choice of templates (and in version 02 a way to modify them) DONE
- propsal is tyed into the voteing
- User roles - user, member (body), mod (group), admin(voice)
- Body balance - stake-holder, user, affiliate
- Voting - consensus -1 (1%) constitutional vote (⅔) and majority vote 50%
- ^[This needs to be more clear]
- Lottery - to fill roles
- Basic security checks
- Flagging
- we need activertytpub streams on/next to wiki pages and user created activerty streams, maybe we can use tags for this?
Scripts
- Gives rights
- Auto create wiki pages based on roles and memberships
[Please have a look through project descriptions and update this]
Identity “objects”
[The word "identity" above is a correction from "ideantery" - please make sure it is a corrrect correction :)]
With admin access privileges.
Use the roles
Group “objects”
The content of the groups is stored in a wiki (we use an off the shelf one).
Each group has:
- Wiki
- Member list
Definitions
Some or all of these may already exist on other pages - can link or move elsewhere if preferable
Human
Body
:Member
: are modsStakeholder
:Affiliate
:Voice
: are the adminsGroup
: can have roles and can be defined by the templateRole
: this is defend by the templateAdmin
: the is no admin, all the jobs are done by voices/mods)Sortition
:
Technical
Extension/Module
: Interchangeable terms referring to XWiki ExtensionsActivityPub
:Flag
: