Skip to content

Commit 5f6e049

Browse files
authored
project: add promotion rules (#212)
Signed-off-by: bitliu <[email protected]>
1 parent f3c66b0 commit 5f6e049

File tree

3 files changed

+692
-0
lines changed

3 files changed

+692
-0
lines changed

website/docusaurus.config.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,10 @@ const config = {
106106
label: 'Work Groups',
107107
to: '/community/work-groups',
108108
},
109+
{
110+
label: 'Promotion',
111+
to: '/community/promotion',
112+
},
109113
{
110114
label: 'Contributing Guide',
111115
to: '/community/contributing',
Lines changed: 211 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,211 @@
1+
import React from 'react'
2+
import Layout from '@theme/Layout'
3+
import styles from './promotion.module.css'
4+
5+
const promotionRules = [
6+
{
7+
role: 'Reviewer',
8+
icon: '👀',
9+
level: 1,
10+
requirements: 'Active contributions within one release cycle',
11+
details: [
12+
'Review open PRs',
13+
'Help open GitHub Issues',
14+
'Engage in community meetings and slack channel discussions',
15+
],
16+
permissions: 'Triage Permission',
17+
timeline: 'After each release (2-3 month intervals)',
18+
application: 'Nominated by a maintainer or self-nomination',
19+
color: '#4CAF50',
20+
},
21+
{
22+
role: 'Committer',
23+
icon: '💻',
24+
level: 2,
25+
requirements: 'Sustained contributions across two consecutive releases',
26+
details: [
27+
'Review open PRs',
28+
'Help open GitHub Issues',
29+
'Engage in community meetings and slack channel discussions',
30+
'Major feature development in workgroups',
31+
'Demonstrate technical leadership',
32+
'Mentor new contributors',
33+
],
34+
permissions: 'Write Permission',
35+
timeline: 'After each release (2-3 month intervals)',
36+
application: 'Must be nominated by a maintainer, requires majority vote from maintainers',
37+
color: '#2196F3',
38+
},
39+
{
40+
role: 'Maintainer',
41+
icon: '🛠️',
42+
level: 3,
43+
requirements: 'Sustained contributions across three consecutive releases',
44+
details: [
45+
'Review open PRs',
46+
'Help open GitHub Issues',
47+
'Host community meetings',
48+
'Demonstrate long-term project commitment',
49+
'Lead major feature development in workgroups',
50+
'Shape project direction and roadmap',
51+
],
52+
permissions: 'Maintain Permission',
53+
timeline: 'After each release (2-3 month intervals)',
54+
application: 'Must be nominated by a maintainer, requires unanimous approval from all maintainers',
55+
color: '#FF9800',
56+
},
57+
]
58+
59+
function PromotionCard({ rule }) {
60+
return (
61+
<div className={styles.promotionCard} style={{ borderColor: rule.color }}>
62+
<div className={styles.cardHeader}>
63+
<span className={styles.roleIcon}>{rule.icon}</span>
64+
<h3 className={styles.roleTitle} style={{ color: rule.color }}>{rule.role}</h3>
65+
<span className={styles.permissions} style={{ backgroundColor: rule.color }}>
66+
{rule.permissions}
67+
</span>
68+
</div>
69+
70+
<div className={styles.cardContent}>
71+
<div className={styles.requirements}>
72+
<h4>📋 Requirements</h4>
73+
<p className={styles.mainRequirement}>{rule.requirements}</p>
74+
<ul className={styles.detailsList}>
75+
{rule.details.map((detail, index) => (
76+
<li key={index}>{detail}</li>
77+
))}
78+
</ul>
79+
</div>
80+
81+
<div className={styles.timeline}>
82+
<h4>⏰ Timeline</h4>
83+
<p>{rule.timeline}</p>
84+
</div>
85+
86+
<div className={styles.application}>
87+
<h4>📝 How to Apply</h4>
88+
<p>{rule.application}</p>
89+
</div>
90+
</div>
91+
</div>
92+
)
93+
}
94+
95+
export default function Promotion() {
96+
return (
97+
<Layout
98+
title="Promotion"
99+
description="vLLM Semantic Router Community Promotion Rules"
100+
>
101+
<div className={styles.container}>
102+
<header className={styles.header}>
103+
<h1>Community Promotion 🚀</h1>
104+
<p className={styles.subtitle}>
105+
Contributor advancement rules - Recognizing your contributions and elevating your impact
106+
</p>
107+
</header>
108+
109+
<main className={styles.main}>
110+
<section className={styles.overview}>
111+
<h2>📖 Promotion Overview</h2>
112+
<div className={styles.overviewContent}>
113+
<div className={styles.overviewCard}>
114+
<h3>🎯 Promotion Timing</h3>
115+
<p>
116+
Promotions occur after each release, with
117+
<strong> 2-3 month</strong>
118+
{' '}
119+
intervals between releases
120+
</p>
121+
</div>
122+
<div className={styles.overviewCard}>
123+
<h3>🏆 Promotion Principles</h3>
124+
<p>Evaluated based on sustained contributions, technical capabilities, and community engagement</p>
125+
</div>
126+
<div className={styles.overviewCard}>
127+
<h3>📈 Growth Path</h3>
128+
<div className={styles.growthPathSimple}>
129+
<span className={styles.pathText}>
130+
<strong>Reviewer</strong>
131+
{' '}
132+
133+
<strong>Committer</strong>
134+
{' '}
135+
136+
<strong>Maintainer</strong>
137+
</span>
138+
<p className={styles.pathDescription}>
139+
Progressive advancement through sustained contributions and community engagement
140+
</p>
141+
</div>
142+
</div>
143+
</div>
144+
</section>
145+
146+
<section className={styles.promotionRules}>
147+
<h2>📊 Promotion Rules</h2>
148+
<p className={styles.rulesDescription}>
149+
Detailed requirements and permissions for each role. Each role builds upon the previous one with increasing responsibilities and impact.
150+
</p>
151+
<div className={styles.rulesGrid}>
152+
{promotionRules.map((rule, index) => (
153+
<PromotionCard key={index} rule={rule} />
154+
))}
155+
</div>
156+
</section>
157+
158+
<section className={styles.applicationProcess}>
159+
<h2>📋 Application Process</h2>
160+
<div className={styles.processSteps}>
161+
<div className={styles.step}>
162+
<div className={styles.stepNumber}>1</div>
163+
<div className={styles.stepContent}>
164+
<h3>Self-Assessment</h3>
165+
<p>Confirm you meet the contribution requirements for the desired role</p>
166+
</div>
167+
</div>
168+
<div className={styles.step}>
169+
<div className={styles.stepNumber}>2</div>
170+
<div className={styles.stepContent}>
171+
<h3>Submit Application</h3>
172+
<p>After a release, create a GitHub Issue to apply for the corresponding role</p>
173+
</div>
174+
</div>
175+
<div className={styles.step}>
176+
<div className={styles.stepNumber}>3</div>
177+
<div className={styles.stepContent}>
178+
<h3>Community Review</h3>
179+
<p>Existing maintainer team will evaluate your contributions</p>
180+
</div>
181+
</div>
182+
<div className={styles.step}>
183+
<div className={styles.stepNumber}>4</div>
184+
<div className={styles.stepContent}>
185+
<h3>Permission Grant</h3>
186+
<p>Upon approval, you'll receive the corresponding GitHub permissions</p>
187+
</div>
188+
</div>
189+
</div>
190+
</section>
191+
192+
<section className={styles.getStarted}>
193+
<h2>🚀 Get Started</h2>
194+
<p>Ready to begin your contribution journey?</p>
195+
<div className={styles.actionButtons}>
196+
<a href="/community/work-groups" className={styles.actionButton}>
197+
🏷️ View Work Groups
198+
</a>
199+
<a href="/community/contributing" className={styles.actionButton}>
200+
📖 Contributing Guide
201+
</a>
202+
<a href="https://github.com/vllm-project/semantic-router/issues" target="_blank" rel="noopener noreferrer" className={styles.actionButton}>
203+
📝 Submit Application
204+
</a>
205+
</div>
206+
</section>
207+
</main>
208+
</div>
209+
</Layout>
210+
)
211+
}

0 commit comments

Comments
 (0)