13 | {{ item.question }} 14 |
15 |23 | {{ project.short_description }} 24 |
25 |
3 | 30 | by 31 | FOSS United 32 |
33 | 34 | 35 | {{ maintainerCount }} 36 | {{ maintainerCount === 1 ? "maintainer" : "maintainers" }} 37 | 38 |42 | Like a slam book, but with fewer crushes and more commits 43 |
44 |46 | Forklore brings you confessions, quirks, and the occasional rant from 47 | India's open source keepers. 48 |
49 |18 | Built and Maintained by 19 | 24 | FOSS United 25 | 26 |
27 | 55 | 56 | 57 |${data.full_name} (@${data.username})
28 | ${data.designation ? `${data.designation}
` : ""} 29 | `; 30 | 31 | const socialsHTML = 32 | (data.socials || []) 33 | .map( 34 | (s) => `Social Links:
79 |Projects:
82 |Form Responses:
85 |
Hard to choose. 😛"
54 | },
55 | {
56 | "question": "What's your open-source villain origin story?",
57 | "response": "I was introduced to open-source in my college during Software Freedom Day celebrations. Soon after, Operating Systems class introduced us to Linux which was fascinating to me and led to learning and discovery of everything else open-source that I know of today."
58 | },
59 | {
60 | "question": "If you had to use one emoji to convey what it is like to be a FOSS maintainer, what would it be?",
61 | "response": "🤝"
62 | }
63 | ],
64 | "created_on": "2025-08-14T15:06:00+05:30"
65 | }
66 |
--------------------------------------------------------------------------------
/content/maintainers/shikhamis11.json:
--------------------------------------------------------------------------------
1 | {
2 | "username": "shikhamis11",
3 | "full_name": "Shikha Mishra",
4 | "photo": "https://avatars.githubusercontent.com/u/25526037",
5 | "designation": "Community Contributor & Maintainer, Magento",
6 | "socials": [
7 | {
8 | "label": "GitHub",
9 | "link": "https://github.com/shikhamis11"
10 | },
11 | {
12 | "label": "LinkedIn",
13 | "link": "https://www.linkedin.com/in/shikhamishra03/"
14 | },
15 | {
16 | "label": "Web",
17 | "link": "https://github.com/readme/shikha-mishra"
18 | }
19 | ],
20 | "projects": [
21 | {
22 | "name": "Magento Open Source",
23 | "project_link": "https://github.com/magento/magento2",
24 | "website_link": "https://developer.adobe.com/open/magento",
25 | "logo": "https://avatars.githubusercontent.com/u/168457?s=48&v=4",
26 | "description": "Magento is an open-source e-commerce platform written in PHP. It provides online merchants with a flexible shopping cart system and control over the look, content, and functionality of their online store. Magento offers powerful tools for marketing, search engine optimization, and catalog management. It is widely used by businesses of all sizes to create scalable and customizable online stores.",
27 | "short_description": "Magento is a PHP-based e-commerce platform for building and managing online stores."
28 | }
29 | ],
30 | "form": [
31 | {
32 | "question": "How to support",
33 | "response": "You can support Magento 2 Open Source by contributing to its code on GitHub, reporting issues, and helping others in community forums. Creating and sharing custom modules, writing tutorials, improving documentation, and participating in events like Meet Magento also help grow and strengthen the Magento ecosystem."
34 | },
35 | {
36 | "question": "A small brief about your project",
37 | "response": "Magento 2 is an open-source e-commerce platform that allows businesses to build and manage online stores. It offers flexible customization, powerful features, and supports scalable, secure shopping experiences."
38 | },
39 | {
40 | "question": "One FOSS maintainer lesson for your younger self",
41 | "response": "Automate everything you can."
42 | },
43 | {
44 | "question": "Why do you do it? Why do you bother maintaining a FOSS project?",
45 | "response": "I started out of curiosity—to learn, challenge myself, and build something useful. Over time, it became more than code. It’s about solving real problems, seeing others use it, and growing with the community."
46 | },
47 | {
48 | "question": "If your repo had a theme song, what would it be?",
49 | "response": "It would be Magento Life | Tech Song Projekt — it captures the highs, lows, and caffeine-fueled chaos of maintaining a Magento project. Absolute vibe."
50 | },
51 | {
52 | "question": "Which file in your project would you most like to set on fire?",
53 | "response": "di.xml — without hesitation. It’s powerful, but one wrong move and suddenly nothing resolves, the cache gaslights you, and you're knee-deep in stack traces trying to figure out why your class won’t inject."
54 | },
55 | {
56 | "question": "What's your open-source villain origin story?",
57 | "response": "My open-source villain origin story? My PRs sat untouched for weeks—not because they were bad, but because the maintainer queue was overloaded. So I stopped waiting... and applied to become a maintainer myself. If you can’t speed it up from the outside, do it from the inside."
58 | },
59 | {
60 | "question": "If you had to use one emoji to convey what it is like to be a FOSS maintainer, what would it be?",
61 | "response": "😍 — because despite the bugs, the burnout, and the chaos... I still love it."
62 | }
63 | ],
64 | "created_on": "2025-06-24T19:33:38+05:30"
65 | }
66 |
--------------------------------------------------------------------------------
/content/maintainers/anandbaburajan.json:
--------------------------------------------------------------------------------
1 | {
2 | "username": "anandbaburajan",
3 | "full_name": "Anand Baburajan",
4 | "photo": "https://avatars.githubusercontent.com/u/2698932?v=4",
5 | "designation": "Marketing & Growth @ Ente",
6 | "socials": [
7 | {
8 | "label": "GitHub",
9 | "link": "https://github.com/anandbaburajan"
10 | },
11 | {
12 | "label": "LinkedIn",
13 | "link": "https://www.linkedin.com/in/anandbaburajan/"
14 | },
15 | {
16 | "label": "Web",
17 | "link": "https://anandbaburajan.com/"
18 | }
19 | ],
20 | "projects": [
21 | {
22 | "name": "Samay",
23 | "project_link": "https://github.com/anandbaburajan/samay",
24 | "website_link": "https://samay.app/",
25 | "logo": "",
26 | "description": "Samay is a free and open source group scheduling tool. Quickly find a time which works for everyone without the back-and-forth texts/emails! Create a Poll, Share the Poll, Book the meeting!",
27 | "short_description": "Find a time which works for everyone"
28 | },
29 | {
30 | "name": "CQ2",
31 | "project_link": "https://github.com/anandbaburajan/cq2",
32 | "website_link": "https://cq2.co/",
33 | "logo": "https://rawcdn.githack.com/anandbaburajan/cq2/837852f9484d8aa1c3bd3de636750f278f0138b7/public/logos/cq2-social.png",
34 | "description": "A tool for RFCs, designed for thoughtfulness and coherence.",
35 | "short_description": "A tool for RFCs, designed for thoughtfulness and coherence."
36 | },
37 | {
38 | "name": "Wordamour",
39 | "project_link": "https://github.com/anandbaburajan/wordamour",
40 | "website_link": "https://wordamour.com/",
41 | "logo": "https://rawcdn.githack.com/anandbaburajan/wordamour/81ceb45dea08ee752e13e10529b76c87d62ea624/public/logo.png",
42 | "description": "Personalized word search puzzle for your special someone",
43 | "short_description": "Personalized word search puzzle for your special someone"
44 | }
45 | ],
46 | "form": [
47 | {
48 | "question": "How to support",
49 | "response": "Wordamour - Surprise your special someone with a Wordamour and buy me a coffee (https://buymeacoffee.com/anandbaburajan) if they love it :D CQ2 - Share it with communities who might find it useful :D Samay - Use it to find a common time for a group meeting and buy me a coffee (https://buymeacoffee.com/anandbaburajan) if you found it useful :D"
50 | },
51 | {
52 | "question": "A small brief about your project",
53 | "response": "Wordamour - Personalized word search puzzle for your special someone. CQ2 - Tool for RFCs, designed for thoughtfulness and coherence. Samay - Group scheduling tool"
54 | },
55 | {
56 | "question": "One FOSS maintainer lesson for your younger self",
57 | "response": "Impact and rewards often show up in quiet, unexpected ways."
58 | },
59 | {
60 | "question": "Why do you do it? Why do you bother maintaining a FOSS project?",
61 | "response": "I find it joyful when people use my projects, and they do."
62 | },
63 | {
64 | "question": "If your repo had a theme song, what would it be?",
65 | "response": "Get Lucky by Daft Punk https://www.youtube.com/watch?v=5NV6Rdv1a3I"
66 | },
67 | {
68 | "question": "Which file in your project would you most like to set on fire?",
69 | "response": ""
70 | },
71 | {
72 | "question": "What's your open-source villain origin story?",
73 | "response": ""
74 | },
75 | {
76 | "question": "If you had to use one emoji to convey what it is like to be a FOSS maintainer, what would it be?",
77 | "response": "🧘"
78 | }
79 | ],
80 | "created_on": "2025-06-05T07:53:26+05:30"
81 | }
82 |
--------------------------------------------------------------------------------
/content/maintainers/eagledot.json:
--------------------------------------------------------------------------------
1 | {
2 | "username": "eagledot",
3 | "full_name": "Anubhav Nain",
4 | "photo": "",
5 | "designation": "",
6 | "socials": [
7 | {
8 | "label": "GitHub",
9 | "link": "https://github.com/eagledot"
10 | },
11 | {
12 | "label": "GitLab",
13 | "link": "https://gitlab.com/eagledot"
14 | },
15 | {
16 | "label": "Web",
17 | "link": "https://eagledot.xyz/"
18 | }
19 | ],
20 | "projects": [
21 | {
22 | "name": "hachi",
23 | "project_link": "https://github.com/eagledot/hachi",
24 | "website_link": "https://github.com/eagledot/hachi",
25 | "logo": "",
26 | "description": "Hachi is a fast, end to end, self-hosted search engine to enable comprehensive search for all types of media, by extracting independent information channels/attributes and providing a unified interface to mix and match those attributes.",
27 | "short_description": "An end to end semantic and meta-data search engine for personal data."
28 | },
29 | {
30 | "name": "malhar",
31 | "project_link": "https://github.com/eagledot/malhar",
32 | "website_link": "https://github.com/eagledot/malhar",
33 | "logo": "",
34 | "description": "Fast, Minimal and generic Fuzzy Search Index. The library is written in Python along with some parts in Nim to speed up querying process, with no third party dependency. This makes it flexible enough to be embedded with an application or any script to provide a fuzzy search interface automatically!",
35 | "short_description": "Fast, Minimal and generic Fuzzy Search Index"
36 | }
37 | ],
38 | "form": [
39 | {
40 | "question": "How to support",
41 | "response": "Bug Reports are very welcomed. For financial contributions you can buy me a coffee at : https://buymeacoffee.com/eagledot"
42 | },
43 | {
44 | "question": "A small brief about your project",
45 | "response": "Hachi is an end to end semantic and meta-data search engine for personal data. It enables a comprehensive search by extracting independent information channels/attributes and providing a unified interface to mix and match those attributes. It also supports a high quality and fast face-recognition pipeline to tag and search a person."
46 | },
47 | {
48 | "question": "One FOSS maintainer lesson for your younger self",
49 | "response": "Reading code from high-quality projects more early on, as good ideas/concepts transcend all pseudo boundaries imposed by job-descriptions, curriculum etc !"
50 | },
51 | {
52 | "question": "Why do you do it? Why do you bother maintaining a FOSS project?",
53 | "response": "I find it to be satisfying and joyful. It is also a way for me improve my knowledge and hopefully contribute something useful back to the open-source ! Making improvements to a non-trivial problem by reading and experiments generally keeps me going."
54 | },
55 | {
56 | "question": "If your repo had a theme song, what would it be?",
57 | "response": "\"Two steps from Hell\" soundtrack may be!"
58 | },
59 | {
60 | "question": "Which file in your project would you most like to set on fire?",
61 | "response": ""
62 | },
63 | {
64 | "question": "What's your open-source villain origin story?",
65 | "response": "Community has been very helpful. i think its on me what to take in and what to ignore!"
66 | },
67 | {
68 | "question": "If you had to use one emoji to convey what it is like to be a FOSS maintainer, what would it be?",
69 | "response": "More like a gif: https://tenor.com/view/totoro-rain-rainy-day-good-morning-rainy-day-gif-3424596352008787858"
70 | }
71 | ],
72 | "created_on": "2025-06-04T17:02:44+05:30"
73 | }
74 |
--------------------------------------------------------------------------------
/content/maintainers/liyasthomas.json:
--------------------------------------------------------------------------------
1 | {
2 | "username": "liyasthomas",
3 | "full_name": "Liyas Thomas",
4 | "photo": "https://avatars.githubusercontent.com/u/10395817?v=4",
5 | "designation": "Founder & CEO of Hoppscotch",
6 | "socials": [
7 | {
8 | "label": "GitHub",
9 | "link": "https://github.com/liyasthomas"
10 | },
11 | {
12 | "label": "LinkedIn",
13 | "link": "https://www.linkedin.com/in/liyasthomas/"
14 | },
15 | {
16 | "label": "Web",
17 | "link": "https://liyasthomas.com/"
18 | }
19 | ],
20 | "projects": [
21 | {
22 | "name": "Hoppscotch",
23 | "project_link": "https://github.com/hoppscotch/hoppscotch",
24 | "website_link": "https://hoppscotch.com/",
25 | "logo": "https://avatars.githubusercontent.com/u/56705483?s=48&v=4",
26 | "description": "Hoppscotch is a lightweight, web-based API development suite. It was built from the ground up with ease of use and accessibility in mind providing all the functionality needed for developers with minimalist, unobtrusive UI.",
27 | "short_description": "Open Source API Development Ecosystem"
28 | }
29 | ],
30 | "form": [
31 | {
32 | "question": "How to support",
33 | "response": "GitHub Sponsors: https://github.com/sponsors/hoppscotch"
34 | },
35 | {
36 | "question": "A small brief about your project",
37 | "response": "Hoppscotch is a free and open-source API development platform designed for building, testing, and documenting APIs. It's a web-based alternative to tools like Postman, Insomnia, and Paw, offering a user-friendly interface for sending requests and viewing responses. Hoppscotch emphasizes ease of use and accessibility, making it a suitable choice for developers of all skill levels."
38 | },
39 | {
40 | "question": "One FOSS maintainer lesson for your younger self",
41 | "response": "Don’t try to do everything yourself. In the early days of Hoppscotch, I took on way too much, code, issues, PRs, design, community, documentation, all solo. It felt like my baby, and I was scared to let go of control. But open source thrives when you trust the community. Delegate. Document things clearly. Welcome contributors early and often. Your project will grow faster, stronger, and you won’t burn out doing it alone."
42 | },
43 | {
44 | "question": "Why do you do it? Why do you bother maintaining a FOSS project?",
45 | "response": "Because Hoppscotch started as something I needed, and it turns out thousands of others needed it too. When I built the first version, it was a simple idea: a lightweight, fast, browser-based alternative to API clients like Postman. I open-sourced it just to share it. Then the community showed up — not just with stars and likes, but with real contributions, feedback, and passion. That’s incredibly motivating. Knowing that thousands of developers use Hoppscotch every day to build better software is wild. That’s fuel."
46 | },
47 | {
48 | "question": "If your repo had a theme song, what would it be?",
49 | "response": "Avengers assemble' theme is the energy I’d assign to the Hoppscotch GitHub repo during a big release or a major refactor sprint."
50 | },
51 | {
52 | "question": "Which file in your project would you most like to set on fire?",
53 | "response": "https://github.com/hoppscotch/hoppscotch/blob/main/packages/hoppscotch-common/src/modules/i18n.ts"
54 | },
55 | {
56 | "question": "What's your open-source villain origin story?",
57 | "response": ""
58 | },
59 | {
60 | "question": "If you had to use one emoji to convey what it is like to be a FOSS maintainer, what would it be?",
61 | "response": "🛸"
62 | }
63 | ],
64 | "created_on": "2025-06-05T07:53:26+05:30"
65 | }
66 |
--------------------------------------------------------------------------------
/parse-maintainer.py:
--------------------------------------------------------------------------------
1 | """Simple parser for maintainer issue markdown to JSON"""
2 |
3 | import sys
4 | import json
5 | import re
6 | from datetime import datetime
7 |
8 | def parse_issue(md):
9 | # Remove HTML comments
10 | md = re.sub(r'', '', md, flags=re.DOTALL)
11 |
12 | data = {
13 | "username": "",
14 | "full_name": "",
15 | "photo": "",
16 | "designation": "",
17 | "socials": [],
18 | "projects": [],
19 | "form": [],
20 | "created_on": datetime.today().isoformat(),
21 | }
22 |
23 | # Parse basic fields (username, full_name, photo, designation)
24 | for field in ['username', 'full_name', 'photo', 'designation']:
25 | pattern = rf'\*\*{field}:\*\*\s*(.+?)(?=\n\*\*|\n---|\Z)'
26 | match = re.search(pattern, md, re.IGNORECASE | re.DOTALL)
27 | if match:
28 | data[field] = match.group(1).strip()
29 |
30 | # Parse socials
31 | socials_match = re.search(r'\*\*socials:\*\*\s*\n((?:^- .+\n?)+)', md, re.MULTILINE)
32 | if socials_match:
33 | for line in socials_match.group(1).strip().split('\n'):
34 | if ':' in line:
35 | line = line.lstrip('- ').strip()
36 | label, link = line.split(':', 1)
37 | data['socials'].append({
38 | "label": label.strip(),
39 | "link": link.strip()
40 | })
41 |
42 | # Parse projects
43 | project_blocks = re.findall(
44 | r'\*\*project:\*\*\s*\n((?:^- .+(?:\n(?: .+)?)*\n?)+)',
45 | md,
46 | re.MULTILINE
47 | )
48 |
49 | for block in project_blocks:
50 | project = {
51 | "name": "",
52 | "project_link": "",
53 | "website_link": "",
54 | "logo": "",
55 | "short_description": "",
56 | "description": ""
57 | }
58 |
59 | for field in project.keys():
60 | # Match both single line and multi-line (with 4-space indent)
61 | pattern = rf'^- {field}:\s*(.+?)(?=\n- |\Z)'
62 | match = re.search(pattern, block, re.MULTILINE | re.DOTALL)
63 | if match:
64 | value = match.group(1).strip()
65 | # Clean up multi-line descriptions (remove leading spaces)
66 | value = re.sub(r'\n\s{4}', '\n', value)
67 | project[field] = value.strip()
68 |
69 | if project['name']:
70 | data['projects'].append(project)
71 |
72 | # Parse questions section
73 | questions_section = re.search(r'## Questions(.+)', md, re.DOTALL)
74 | if questions_section:
75 | question_blocks = re.findall(
76 | r'\*\*(.+?):\*\*\s*\n(.+?)(?=\n\*\*|\Z)',
77 | questions_section.group(1),
78 | re.DOTALL
79 | )
80 |
81 | for question, response in question_blocks:
82 | data['form'].append({
83 | "question": question.strip(),
84 | "response": response.replace("\n", "