Activity Streams - bounswe/bounswe2025group5 GitHub Wiki
4.5.1.1 ActivityStreams 2.0 — Compliance Summary
We have aimed to follow the core recommendations of the W3C ActivityStreams 2.0 standard for activity logging and notifications. We focused on practical, internal compatibility with ActivityStreams type consumers. Each logged activity consistently includes an @context, a top-level type, structured actor and object entities, and a published timestamp.
Although the current implementation is compliant for an internal system, some interoperability recommendations are not strictly enforced. These include using IRIs for identifiers, omitting null properties in serialized JSON, and validating activity types against the official ActivityStreams vocabulary. These deviations are intentional and acceptable within a closed-system, where activities are used by internal logging and notification rather than external services.
| Requirement | ActivityStreams / JSON-LD Reference |
|---|---|
| 1. Context and Core Properties | Activities include @context, type, actor, object, and published, matching the ActivityStreams core activity structure. |
| 2. Timestamp Format | The published field is generated in ISO-8601 format using the Java Instant API, satisfying temporal representation requirements. |
| 3. Omission of Null Properties | JSON-LD best practices recommend omitting absent properties rather than serializing null. The current implementation may emit null values (e.g., target) but this does not impact internal consumers. |
| 4. Identifier Representation | ActivityStreams favors IRIs or @id values for identifying actors and objects. The implementation uses application-level identifiers (e.g., usernames), which is sufficient for internal use |
| 5. Activity Type Vocabulary | Activity types are passed as free-form strings rather than validated against the ActivityStreams vocabulary. This provides flexibility but reduces strict semantic compliance. |
| 6. Serialization Configuration | A default Jackson ObjectMapper is used. |
| 7. Error Handling and Logging | Errors during activity logging are caught and logged, ensuring system robustness. |
| 8. Notification Integration | Activities are correctly translated into persistent user notifications, preserving a clear link between activity events and user-facing updates. |
# Evidence
- Implementing preview for activity logging
- Profile Picture field for activity logging
- Fixing the comment preview
Implementation: We introduced a preview field to capture a description of events. This fulfills the standard’s requirement for the summary property, which is intended to provide a human-readable description of an activity. This allows our system to present "human interpretation" data alongside machine-readable JSON-LD.
j
| Team Member | Contributions (Summary) | Major PRs/Issues |
|---|---|---|
| Ali Bartu Konca | Worked on code refactoring, testing, and code review across the project. Took responsibility for all aspects of activity logging and notification handling covering key events such as getting a follower, receiving likes on posts, new posts from followed users, report resolution notifications, and similar events of interest. Added notification previews to improve usability in compliance with Activity Streams 2.0. Optimized the notification and post data structure to reduce request overhead by embedding profile picture information directly into posts and notifications. This ensured that profile images remain consistent when updated, while preventing repeated and unnecessary frontend requests for profile data. Created the project plan, prepared demo scenarios, presented the application in all demos, and generated mock data for the presentations. Implemented and reviewed unit tests, assisted with release processes, configured the application domain, and handled server migration and HTTPS setup. Implemented badge triggers based on user activities and contributed to Swagger API documentation. | |
| #PR404, #IS425 #PR417, #IS456, #PR622 #PR655, #PR659, #PR712, #IS736, #PR799, #PR815, #PR823 |
10.5 Ali Bartu Konca (Backend)
Responsibilities
I was generally responsible for the backend related tasks, namely adding functionality and reviewing/testing code. I also helped with the presentation tasks and release.
Main Contributions
- Adding functionality to the backend
- Reviewing code related to backend development
- Demo presentation
- Milestone 3 Documentation
Code-related significant issues
| # | Issues |
|---|---|
| 1 | The issue for adding profile picture to posts and notifications |
| 2 | The issue for adding preview to notifications |
| 3 | The issue for unit tests |
Non Code Related significant issues
Pull Requests
| PR | Description |
|---|---|
| #779 | Reviewed Get comment endpoint PR |
| #781 | Reviewed feedback PR |
| #799 | Opened notification review PR and added notifications to reports and feedbacks |
| #810 | Reviewed challenge badge trigger PR |
| #815 | Opened profile picture field in notifications and posts PR |
| #834 | Reviewed unit tests PR |
| #842 | Opened comment preview fix PR |
Additional Information
I have also presented the app with Yusuf Onur Öksüz. And helped with the release of the final version.