Skip to content

Commit 2e300a7

Browse files
Add Open Source page
Co-authored-by: Jeff Ma <[email protected]>
1 parent 23c9fd0 commit 2e300a7

File tree

7 files changed

+1266
-1
lines changed

7 files changed

+1266
-1
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ node_modules/.bin/hexo new news "News Title"
1212
```
1313

1414
## Testing Locally
15+
Use Node.js 16, because there are known issues with newer versions. [nvm](https://github.com/nvm-sh/nvm) is recommended.
16+
1517
You can start a server locally.
1618
```
1719
npm start

_config.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,8 @@ theme_config:
208208
People: /people || fa fa-user
209209
Funding: /funding || fa fa-info
210210
#tags: /tags/ || fa fa-tags
211-
GitHub: https://github.com/SymbioticLab || fab fa-github-alt
211+
Open Source: /open-source || fab fa-github-alt
212+
#GitHub: https://github.com/SymbioticLab || fab fa-github-alt
212213
# Wiki: https://symbiotic.eecs.umich.edu/wiki || fab fa-wikipedia-w
213214
# Join us: https://forms.gle/L3Syau9dBzi8eLxQ7 || fa fa-user-plus
214215
# Collaboration: https://docs.google.com/document/d/1mVPqfnqLz_CXVz8XyDLcB1BIlUyezY2A-t5mV33JZHw/edit?usp=sharing || fa fa-user-plus

custom/layouts/open-source.njk

Lines changed: 174 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,174 @@
1+
{% extends '_layout.njk' %}
2+
{% import '_macro/sidebar.njk' as sidebar_template with context %}
3+
4+
{% block title %}{{ page.title }}{% endblock %}
5+
6+
{% block class %}archive posts-collapse{% endblock %}
7+
8+
{% block content %}
9+
10+
<style>
11+
.card-container, .project-container {
12+
display: flex;
13+
flex-wrap: wrap;
14+
gap: 20px;
15+
justify-content: space-between;
16+
margin: 0;
17+
padding: 0;
18+
}
19+
20+
.project {
21+
width: 48%; /* Full width for each project */
22+
padding: 15px;
23+
padding-top: 4px;
24+
box-sizing: border-box;
25+
background-color: #f9f9f9;
26+
border: 1px solid #ddd;
27+
border-radius: 8px;
28+
box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.1);
29+
text-align: left;
30+
text-decoration: none;
31+
color: #333;
32+
display: flex;
33+
flex-direction: column;
34+
gap: 10px;
35+
}
36+
37+
.project:hover {
38+
cursor: pointer;
39+
border-color: #bbb;
40+
}
41+
42+
.project-header {
43+
display: flex;
44+
align-items: center;
45+
justify-content: space-between;
46+
margin-bottom: 10px;
47+
}
48+
49+
.project-logo {
50+
max-height: 50px;
51+
object-fit: contain;
52+
margin-right: 2px;
53+
}
54+
55+
.project-name {
56+
font-size: 20px;
57+
font-weight: bold;
58+
flex-grow: 1;
59+
}
60+
61+
.project-description {
62+
font-size: 14px;
63+
}
64+
65+
.project-details {
66+
display: flex;
67+
justify-content: flex-start;
68+
gap: 20px; /* Add space between details */
69+
font-size: 12px;
70+
color: #666;
71+
}
72+
73+
/* Fixed widths for consistent vertical alignment */
74+
.project-details .language {
75+
width: 50px; /* Fixed width for language */
76+
}
77+
78+
.project-details .stars, .project-details .forks {
79+
width: 30px; /* Fixed width for stars and forks */
80+
}
81+
82+
.project-details span {
83+
display: flex;
84+
align-items: center;
85+
gap: 5px;
86+
justify-content: space-between;
87+
}
88+
89+
.project-details i {
90+
color: #333;
91+
}
92+
93+
@media (max-width: 800px) {
94+
.project {
95+
width: calc(100% - 20px); /* Full width on smaller screens */
96+
margin: 0 auto;
97+
}
98+
99+
/* Remove fixed widths on smaller screens for flexibility */
100+
.project-details .language,
101+
.project-details .stars,
102+
.project-details .forks {
103+
width: auto;
104+
}
105+
}
106+
</style>
107+
108+
<h1>Open Source Projects</h1>
109+
<div class="intro">
110+
<p>{{ page.content }}</p>
111+
</div>
112+
113+
{% for section in page.sections %}
114+
<section class="github-section">
115+
<h3>{{ section.title }}</h3>
116+
{% if section.description %}
117+
<p>{{ section.description }}</p>
118+
{% endif %}
119+
120+
<div class="project-container">
121+
{% for item in section.items %}
122+
<a href="{{ item.url or item.github_url }}" class="project" data-repo="{{ item.github_url }}">
123+
<div class="project-header">
124+
<span>
125+
<div class="project-name">{{ item.name }}</div>
126+
{% if item.github_url %}
127+
<div class="project-details">
128+
<!-- Fixed width for consistent alignment, using FontAwesome icons -->
129+
<span class="language"><i class="fas fa-code"></i> <span id="{{ item.name | lower | replace(' ', '-') }}-language">...</span></span>
130+
<span class="stars"><i class="far fa-star"></i> <span id="{{ item.name | lower | replace(' ', '-') }}-stars">...</span></span>
131+
<span class="forks"><i class="fas fa-code-branch"></i> <span id="{{ item.name | lower | replace(' ', '-') }}-forks">...</span></span>
132+
</div>
133+
{% endif %}
134+
</span>
135+
{% if item.logo %}
136+
<span style="width: {{ item.logo_scale or '100%' }}">
137+
<img src="{{ item.logo }}" alt="{{ item.name }} logo" class="project-logo">
138+
</span>
139+
{% endif %}
140+
</div>
141+
<div class="project-description">{{ item.description }}</div>
142+
</a>
143+
{% endfor %}
144+
</div>
145+
</section>
146+
{% endfor %}
147+
148+
<script src="https://kit.fontawesome.com/a076d05399.js" crossorigin="anonymous"></script> <!-- FontAwesome Kit -->
149+
<script>
150+
document.addEventListener('DOMContentLoaded', function () {
151+
const projects = document.querySelectorAll('.project');
152+
153+
projects.forEach(project => {
154+
const githubUrl = project.getAttribute('data-repo');
155+
if (githubUrl) {
156+
// Construct the GitHub API URL by inserting "api." after "https://"
157+
const apiUrl = githubUrl.replace('https://github.com/', 'https://api.github.com/repos/');
158+
159+
fetch(apiUrl)
160+
.then(response => response.json())
161+
.then(data => {
162+
// Use project name to generate IDs
163+
const idPrefix = data.name.toLowerCase().replace(/ /g, '-');
164+
165+
document.getElementById(`${idPrefix}-language`).textContent = data.language || 'N/A';
166+
document.getElementById(`${idPrefix}-stars`).textContent = data.stargazers_count || 0;
167+
document.getElementById(`${idPrefix}-forks`).textContent = data.forks_count || 0;
168+
})
169+
.catch(error => console.error('Error fetching GitHub data:', error));
170+
}
171+
});
172+
});
173+
</script>
174+
{% endblock %}

source/open-source/index.md

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
---
2+
title: Open Source
3+
date: 2025-03-18
4+
layout: open-source
5+
6+
# Sections schema
7+
# - title: "Section title"
8+
# description: "Section description"
9+
# items:
10+
# - name: "Project title"
11+
# description: "Project description to put in the body of the card"
12+
# github_url: "GitHub repository link"
13+
# url: "Optional: Link to open when the project card is clicked; falls back to `github_url` if omitted"
14+
# logo: "Optional: Link to logo file"
15+
# logo_scale: "Optional: will be added as CSS height: `logo_scale`"
16+
17+
sections:
18+
- title: "Energy-Efficient Systems"
19+
description: "Projects focused on optimizing energy use in software systems."
20+
items:
21+
- name: "Zeus"
22+
url: "https://ml.energy/zeus"
23+
github_url: "https://github.com/ml-energy/zeus"
24+
logo: "/open-source/logo/zeus.svg"
25+
logo_scale: 70%
26+
description: "Deep learning energy measurement and optimization."
27+
28+
- title: "Systems for AI"
29+
description: "Building efficient systems for AI workloads."
30+
items:
31+
- name: "Cornstarch"
32+
github_url: "https://github.com/cornstarch-org/Cornstarch"
33+
logo: "/open-source/logo/cornstarch.svg"
34+
description: "Build, train, and run your own multimodal model."
35+
- name: "Oobleck"
36+
github_url: "https://github.com/SymbioticLab/Oobleck"
37+
description: "A resilient distributed training framework."
38+
- name: "FedScale"
39+
url: "https://fedscale.ai"
40+
github_url: "https://github.com/SymbioticLab/FedScale"
41+
logo: "/open-source/logo/fedscale.png"
42+
logo_scale: 45%
43+
description: "A scalable and extensible federated learning platform."
44+
45+
- title: "Memory systems"
46+
description: "Building practical disaggregated and/or tiered memory systems."
47+
items:
48+
- name: "TPP (Transparent Page Placement)"
49+
url: "https://lwn.net/Articles/876993/"
50+
github_url: ""
51+
logo: ""
52+
description: "TPP is now part of the Linux kernel."
53+
54+
---
55+
56+
We build strong open-source software based on research, meant for adoption in the real world.

0 commit comments

Comments
 (0)