Getting Started
Code of Conduct
Sakai participates in the Apereo Welcoming Policy.Contributor License Agreement
Submit CLA
Complete the CLA at: https://www.apereo.org/licensing/agreements
Check CLA Status
Verify your CLA status at: http://licensing.apereo.org/
JIRA Issue Tracking
All bugs and features are tracked in Sakai JIRA.Creating an Issue
Create new issue
Provide:
- Clear title and description
- Steps to reproduce (for bugs)
- Expected vs actual behavior
- Sakai version affected
- Screenshots if applicable
Include JIRA references in git branches and commit messages, but not in code comments. Use git history for this information instead.
Git Workflow
Initial Setup
Set up your Git environment:Fork the repository
Fork sakaiproject/sakai to your GitHub account.
Keep Fork Updated
Regularly sync your fork:Creating a Pull Request
Single Issue per Pull Request
Most pull requests address a single issue:Make changes
Write your code, following the Code Style Guidelines.
Create pull request
Go to GitHub and create a pull request from your branch to
sakaiproject/sakai:master.Multiple Issues per Pull Request
Sometimes related issues are best addressed together:Create PR mentioning all issues
Mention all issue keys (SAK-12345, SAK-23456) in the PR description.
Pull Request Reviews
Your PR will be reviewed for:Code Style
Code Style
- Matches existing code style in the file
- Follows Sakai coding standards
- Uses kebab-case for HTML class/id attributes
Indentation
Indentation
- Maintains consistent format (tabs/spaces)
- Aligns with surrounding code
Internationalization
Internationalization
- All user-facing strings are externalized
- Supports multiple languages
- Uses resource bundles correctly
Accessibility
Accessibility
- Follows WCAG 2.0 AA standards
- Semantic HTML used
- ARIA labels where appropriate
- Keyboard navigation works
Technical Approach
Technical Approach
- Sensible solution to the problem
- No obvious performance issues
- Uses appropriate Sakai APIs
- Follows architectural patterns
Minimal Changes
Minimal Changes
- Only modified lines needed for fix/feature
- No bulk reformatting
- No unrelated changes
Single Issue
Single Issue
- Addresses one issue (or closely related issues)
- Focused scope
Tests
Tests
- Tests passing
- New tests added where appropriate
- E2E tests for UI flow changes
Commit Messages
Commit Messages
- Linked to JIRA issue
- Explains why, not just what
- Clear and concise
Responding to Feedback
Update your PR based on review comments:Code Style Guidelines
Java Style
Commit Messages
Format:<issue key> <component> <brief description>
Examples:
JavaScript/Web Components
- Use ES2022+ features
- No jQuery in new code
- Prefer modern DOM APIs
- Use Lit components for UI
- Keep state local and explicit
- No global variables
HTML Attributes
Use kebab-case for class and id attributes:Accessibility
- Use semantic HTML elements
- Add ARIA labels for screen readers
- Ensure keyboard navigation
- Test with accessibility tools
- Include
alttext for images
Testing Requirements
- Include unit tests for new code
- Update existing tests for changes
- Add Playwright E2E tests for UI flow changes
- All tests must pass before merge
Security Issues
Security issues are handled differently:Request security access
Email the contact on the Security Policy page to get access to:
- Security mailing list
- Security JIRA work group
Submit fix
Either:
- Request access to private sakai-security repo and submit PR there
- Attach a diff to the JIRA ticket
Communication Channels
Mailing Lists
Join the Sakai developer mailing list:Slack
Join the Apereo Slack workspace:- Sign up at apereo.slack.com/signup
- If your institution isn’t listed, email
[email protected]or[email protected]
Wiki and Confluence
Development documentation:Release Process
Sakai follows a regular release schedule:Current Versions
- Sakai 25.2: Current development (Q2 2026)
- Sakai 23.5: Maintenance release (Q4 2025)
- Sakai 22.6: Maintenance release (Q4 2025)
Version Support
Community-supported versions receive:- Bug fixes
- Security updates
- Feature enhancements
- Security updates only
Best Practices
Small PRs
Keep pull requests focused and small for faster review.
Test Thoroughly
Test your changes in multiple browsers and scenarios.
Document Changes
Update documentation when adding features.
Ask Questions
Use mailing lists and Slack when you need help.
Next Steps
Setup Guide
Set up your development environment
Building Sakai
Learn build commands and deployment
Tool Development
Start developing Sakai tools
Testing Guide
Write comprehensive tests