Create a Branch : Always work in a dedicated branch for your changes.
Follow Coding Standards : Maintain the project's coding style and conventions.
Write Tests : All new features must include tests.
Use Standardized Commit Messages : Follow the format below.
{LABEL}(KDP): {message}
# Examples:
feat(KDP): Add distribution-aware encoding
fix(KDP): Resolve memory leak in feature selection
Create Small MRs : Keep merge requests under 400 lines for easier review.
Request Code Review : All code must be reviewed before merging.
Address Feedback : Resolve all comments and ensure CI checks pass.
Tests Must Pass : NO TESTS = NO MERGE 🚨
💡 Feature Requests & Issues
Have ideas or found a bug?
We welcome your input! Please use our GitHub issues page to:
Report bugs or unexpected behavior
Suggest new features or improvements
Discuss implementation approaches
Open an Issue
📝 Commit Message Guidelines
Label
Usage
Version Impact
break
Changes that break backward compatibility
major
feat
New backward-compatible features
minor
fix
Bug fixes
patch
docs
Documentation changes
patch
style
Code style changes (formatting, etc.)
patch
refactor
Code changes that neither fix bugs nor add features
patch
perf
Performance improvements
patch
test
Adding or updating tests
minor
build
Build system or dependency changes
patch
ci
CI configuration changes
minor
Creating Effective Merge Requests
Merge requests are the heart of our collaborative development process:
Create your MR early - even as a work in progress
Use the same naming convention as commits: {LABEL}(KDP): {message}
Break large features into smaller, focused MRs
Include relevant tests for your changes
Ensure all CI checks pass before requesting review
Address all feedback before merging
💡
Merge requests generate our changelog automatically, so clear and descriptive messages help everyone understand your contributions!
<style>
/* Base styling */
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
line-height: 1.6;
color: #333;
}
/* Intro section */
.intro-container {
background: linear-gradient(135deg, #f0f7ff 0%, #e9ecef 100%);
border-radius: 10px;
padding: 25px;
margin: 30px 0;
box-shadow: 0 4px 8px rgba(0,0,0,0.1);
}
.intro-content h2 {
margin-top: 0;
color: #4a86e8;
}
/* Step cards */
.steps-container {
display: flex;
flex-direction: column;
gap: 25px;
margin: 30px 0;
}
.step-card {
background-color: #fff;
border-radius: 10px;
overflow: hidden;
box-shadow: 0 4px 8px rgba(0,0,0,0.1);
transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.step-card:hover {
transform: translateY(-5px);
box-shadow: 0 8px 16px rgba(0,0,0,0.1);
}
.step-header {
display: flex;
align-items: center;
padding: 15px 20px;
background: linear-gradient(135deg, #f0f7ff 0%, #e9ecef 100%);
border-bottom: 1px solid #e9ecef;
}
.step-number {
display: flex;
align-items: center;
justify-content: center;
width: 30px;
height: 30px;
background-color: #4a86e8;
color: white;
border-radius: 50%;
margin-right: 15px;
font-weight: bold;
}
.step-header h3 {
margin: 0;
color: #333;
}
.step-content {
padding: 20px;
}
/* Feature list */
.feature-list {
padding-left: 20px;
margin-bottom: 20px;
}
.feature-list li {
margin-bottom: 10px;
}
/* Code containers */
.code-container {
background-color: #f8f9fa;
border-radius: 8px;
overflow: hidden;
margin-top: 15px;
}
.code-container pre {
margin: 0;
padding: 15px;
}
/* Feature showcase */
.feature-showcase {
background-color: #fff;
border-radius: 10px;
overflow: hidden;
box-shadow: 0 4px 8px rgba(0,0,0,0.1);
margin: 30px 0;
transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.feature-showcase:hover {
transform: translateY(-5px);
box-shadow: 0 8px 16px rgba(0,0,0,0.1);
}
.feature-header {
padding: 15px 20px;
background: linear-gradient(135deg, #f0f7ff 0%, #e9ecef 100%);
border-bottom: 1px solid #e9ecef;
}
.feature-header h3 {
margin: 0;
color: #333;
}
.feature-content {
padding: 20px;
}
/* Examples section */
.examples-container {
display: grid;
grid-template-columns: 1fr;
gap: 20px;
margin: 30px 0;
}
.example-card {
background-color: #fff;
border-radius: 10px;
overflow: hidden;
box-shadow: 0 4px 8px rgba(0,0,0,0.1);
transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.example-card:hover {
transform: translateY(-5px);
box-shadow: 0 8px 16px rgba(0,0,0,0.1);
}
.example-header {
display: flex;
align-items: center;
padding: 15px 20px;
background: linear-gradient(135deg, #f0f7ff 0%, #e9ecef 100%);
border-bottom: 1px solid #e9ecef;
}
.example-icon {
font-size: 1.5em;
margin-right: 15px;
}
.example-header h3 {
margin: 0;
color: #333;
}
.example-content {
padding: 20px;
}
/* Table styling */
.table-container {
overflow-x: auto;
margin: 15px 0;
}
table {
width: 100%;
border-collapse: collapse;
margin: 15px 0;
}
th {
background-color: #f0f7ff;
text-align: left;
padding: 12px 15px;
border-bottom: 2px solid #4a86e8;
}
td {
padding: 10px 15px;
border-bottom: 1px solid #e9ecef;
}
tr:nth-child(even) {
background-color: #f8f9fa;
}
tr:hover {
background-color: #f0f7ff;
}
/* Buttons */
.action-button {
display: inline-block;
background-color: #4a86e8;
color: white;
padding: 10px 20px;
border-radius: 5px;
text-decoration: none;
font-weight: 500;
margin-top: 15px;
transition: background-color 0.3s ease;
}
.action-button:hover {
background-color: #3a76d8;
}
/* Tip box */
.tip-box {
background-color: #f0f7ff;
border-left: 4px solid #4a86e8;
padding: 15px;
margin-top: 20px;
border-radius: 0 5px 5px 0;
display: flex;
align-items: flex-start;
}
.tip-icon {
font-size: 1.5em;
margin-right: 15px;
}
.highlight {
background-color: #ffecb3;
padding: 2px 5px;
border-radius: 3px;
font-weight: bold;
}
/* Responsive adjustments */
@media (max-width: 768px) {
.examples-container {
grid-template-columns: 1fr;
}
}
</style>