Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
ARSnova Backend
Manage
Activity
Members
Code
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Operate
Environments
Analyze
Contributor analytics
CI/CD analytics
Repository analytics
Help
Help
Support
GitLab documentation
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Privacy
Imprint
Contact
Snippets
Groups
Projects
Show more breadcrumbs
John Samuel Ako Deutesfeld
ARSnova Backend
Commits
f814ca43
Commit
f814ca43
authored
6 years ago
by
Daniel Gerhardt
Browse files
Options
Downloads
Patches
Plain Diff
Add development roadmap
parent
c1833a2d
Branches
Branches containing commit
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
src/site/markdown/development.md
+1
-0
1 addition, 0 deletions
src/site/markdown/development.md
src/site/markdown/development/roadmap.md
+123
-0
123 additions, 0 deletions
src/site/markdown/development/roadmap.md
with
124 additions
and
0 deletions
src/site/markdown/development.md
+
1
−
0
View file @
f814ca43
...
...
@@ -64,5 +64,6 @@ The current build status for the master branch:
## Further Documentation
*
[
Roadmap
](
development/roadmap.md
)
*
[
Caching
](
development/caching.md
)
*
[
Event System
](
development/event-system.md
)
This diff is collapsed.
Click to expand it.
src/site/markdown/development/roadmap.md
0 → 100644
+
123
−
0
View file @
f814ca43
# Roadmap
## 4.0
*
Remove API v2 compatibility layer
## 3.1
TBD
## 3.0
Version 3.0 is a rewrite of large parts of the code base with the goal of improving its maintainability.
A new streamlined REST API is developed while the legacy API is still supported through a compatibility layer.
### Beta 2
## Deployment & Operations
*
Implement a monitoring endpoint for Prometheus
## Documentation
*
Create/update developer documentation
*
REST API
*
Architecture
*
Coding guidelines
*
Update installation and upgrade guide
## QA
*
Review critical issues detected by static code analysis
### Beta 1
## General architecture
*
Implement data validation for entities
*
Use better caching implementation (Ehcache, etc.)
*
Review and complete caching (annotations, keys, etc.)
*
Review and complete authorization handling
*
Review event system and unify emitting of events for CRUD operations
*
https://spring.io/blog/2015/02/11/better-application-events-in-spring-framework-4-2
*
Review and improve error handling
*
Exceptions
*
HTTP responses
*
Logging
*
Use modern logging framework (SLF4J with Logback instead of Log4j)
## REST API
*
Adjust handling of non-persistent entities for API v3
*
Reimplement export and import
## QA
*
Increase code coverage for testing
*
Implement performance tests (Gattling)
*
Ensure Java 11 (LTS) compatibility
*
Review blocker issues detected by static code analysis
### Alpha
## General architecture
*
Minimize code duplication
*
Use generic classes for entity related controllers, services and data repositories
*
Prefer constructor injection for required dependencies
*
Use setter injection for optional dependencies
*
Avoid field injection (it's fine in test classes)
*
Use Jackson's JsonViews to define property visibility for API and persistence
*
Refactor entities
*
Introduce abstract Entity class with common properties
*
Improve nomenclature for class and property naming
*
Avoid use-case specific names (such as "Peer Instruction" for multiple rounds)
*
Session -> Room
*
Lecture Question -> Content
*
Audience Question -> Comment
*
Learning Progress -> Score
*
Question Type -> Content Format
*
Do not reuse one entity type for multiple domain types
*
`Question`
-> split up into
`Content`
,
`Comment`
*
`Answer`
-> split up into
`Answer`
,
`AnswerStatistics`
*
Use subclasses to implement different formats for Content and Answer
## Persistence
*
Abstract and split up persistence layer with help of Spring Data interfaces
*
Get rid of JSON-lib (buggy and unmaintained) and use Jackson for all JSON (de-)serialization
*
Use Ektorp instead of CouchDB4J (buggy and unmaintained) for CouchDB handling
*
Implement view creation and data migration in Java (replace Setup Tool used for 2.x)
*
Merge redundant database views
*
Avoid emitting full docs and use
`include_docs`
instead
## REST API
*
Implement support for handling multiple API versions
*
Implement API v3
*
Stateless: No more
`/whoami`
or
`/myxyz`
routes
*
Use JWT instead of cookie-based sessions for authentication
*
Use generic routes for CRUD
*
Implement HTTP PATCH to update properties
*
No more
`/<entity>/disablexyz`
*
Implement a
`/<entity type>/find`
endpoint
*
Provide statistics with non-aggregated combinations of answer choices
*
Implement customizable content groups
*
They replace predefined content variants
*
Relations are stored as part of a room
*
They support auto sort (v2 behavior) and user defined ordering
*
Implement API live migration layer v2
<->
v3
*
v2 controllers convert between v2 and v3 entity types
*
Internally (service and persistence layer) only the v3 entity type is used
This diff is collapsed.
Click to expand it.
Preview
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment