Welcome to the Memact open-source community! 👋 We are part of SSoC 2026 (Summer of Selecting Open Contributions) and we are excited to have you here.
Important: This is a sub-repository. SSoC26 contributions are tracked through the main
Memact/Contextrepository. After your PR is merged here, you must open a Dummy PR inMemact/Contextreferencing your work to earn leaderboard points.
- Understanding the Protocol
- SSoC26 Contribution Workflow
- Getting an Issue Assigned
- Dummy PR Requirement (Sub-repo contributors)
- Assignment Rules & Limits
- Code Quality Standards
- Pull Request Checklist
- Labels & Difficulty
- Need Help?
Memact is a user-owned personal context protocol — a privacy-preserving middleware layer that gives users visibility and control over what apps know about them.
The core spine:
Access → Wiki → Context → Memory → SDK → Apps
- Access — Permission gating, isolation profiles, token revocation
- Context — Schema validation, conflict resolution, canonical data shapes
- Memory — Persistent storage, indexing, decay, offline sync
- SDK — Client adapters, CLI tooling, third-party integration helpers
- Contracts — Shared type definitions and schema validators
- Notebook — UI layouts and front-end data contracts
All issues use generic capability names (e.g. Ride Booking, Media Playback, Developer Activity) rather than brand names. Specific apps are reference implementations only.
1. Find an open issue labelled [SSoC26]
2. Comment "I want to get assigned" (or similar) on the issue
3. Bot auto-assigns you (chronological order, first come first served)
4. Fork the repo and create a branch: feat/<short-description>
5. Implement your changes following the Code Quality Standards below
6. Open a Pull Request referencing the issue (e.g. "Closes #42")
7. [Sub-repos only] Open a Dummy PR in Memact/Context referencing your PR
8. Wait for review and address feedback promptly
Comment any of the following on an issue to request assignment:
I want to get assignedCan I work on this?Assign meI'd like to work on this
Our bot processes assignment requests chronologically — the first person to request gets priority. Do not spam multiple issues at once beyond your limit (see below).
To unassign yourself, comment:
Please unassign meUnassign me
If you are contributing to any sub-repository (Access, Memory, SDK, Contracts, Notebook),
you must also open a Dummy PR in Memact/Context to be
counted on the SSoC26 leaderboard.
-
Go to Memact/Context
-
Create a new branch:
dummy/<your-username>-<repo>-<issue-number> -
Make a minimal change (e.g. add a line to
dummy_contributions.mdif it exists, or update a comment) -
Open a PR with a title like:
[Dummy PR] <Repo>/<Your PR title> — <your-username> -
In the PR description, reference your actual PR:
This is a tracking PR for my contribution in Memact/<Repo>. Actual PR: Memact/<Repo>#<PR number>
Our bot automatically detects dummy PRs and links them. You will receive a confirmation comment on your sub-repo PR once the linkage is verified.
| Rule | Detail |
|---|---|
| Max active assignments | 10 issues at a time |
| Priority | First commenter on an issue gets assigned |
| Stale warning | If no PR is opened within 3 days, you receive a friendly warning |
| Greylisting | Repeated low-quality PRs may restrict future assignments |
| Unassignment | Comment "please unassign me" at any time to release an issue |
All PRs are automatically reviewed by our bot for the following. Violations will trigger a
Quality: Needs Polish label and a comment requesting fixes before merge.
- Code follows the existing patterns and architecture of the repository
- All functions/modules have proper docstrings or comments
- Tests are written for all new functionality
- No breaking changes to existing interfaces without prior discussion
-
console.log,debugger,printstatements left in production code - Hardcoded secrets, API keys, passwords, or tokens
- Unresolved
TODO,FIXME, orXXXmarkers - Dead code or commented-out blocks of logic
- Files with no meaningful change (whitespace-only PRs)
Before opening your PR, verify:
[ ] My branch is up-to-date with main
[ ] I have referenced the issue in my PR description (e.g. "Closes #42")
[ ] My code passes all existing tests
[ ] I have added tests for my changes
[ ] I have NOT hardcoded any API keys or secrets
[ ] I have opened a Dummy PR in Memact/Context (if contributing to a sub-repo)
[ ] My PR title follows: feat(<scope>): <short description>
All SSoC26 issues are tagged with a difficulty label that determines point value:
| Label | Description | Points (approx.) |
|---|---|---|
Easy |
Straightforward implementation, well-defined scope | 20 pts |
Medium |
Requires some design thinking or integration work | 30 pts |
Hard |
Complex architecture, deep protocol knowledge needed | 40 pts |
All issues also carry the SSoC26 label for leaderboard tracking.
- 💬 Ask questions directly on the issue thread
- 📖 Read the project context:
.agents/rules/memact-project-context.md - 🌐 Visit the SSoC26 Leaderboard to track your points
We appreciate every contribution — no matter how small. Happy coding! 🚀