Logo

dev-resources.site

for different kinds of informations.

Becoming An Open Source Maintainer

Published at
1/14/2025
Categories
opensource
osd700
Author
udayrana
Categories
2 categories in total
opensource
open
osd700
open
Author
8 person written this
udayrana
open
Becoming An Open Source Maintainer

I've had the opportunity to enrol in OSD700 - Open Source Development Project at Seneca Polytechnic, where I'll be learning to maintain and ship open source software as part of a team. As a part of the course, I'll be blogging weekly about everything I work on.

This term, we're going to be maintaining two projects: Starchart and ChatCraft.

GitHub logo DevelopingSpace / starchart

A self-serve tool for managing custom domains and certificates

Starchart License: MIT

Starchart makes it easy for the Seneca developer community to create and manager their own custom subdomains and SSL certificates, without cost or having to provide personal information.

For information about running Starchart, see our deployment guide. For development information, see our contributing guide. For further technical background, planning, and initial designs, please see the wiki.

Introduction

The internet is evolving, and what used to be hard has become simple. For example, hosting your own website used to require knowledge of server administration, operating systems, networking, etc. Today, many developers host their personal and project websites without ever touching a remote server, opting for (free) cloud services like GitHub Pages, Vercel, Netlify, or AWS.

The internet's security model is also evolving. For example, browser vendors have embraced HTTPS everywhere. This is good for security, as it enables certificate-based encryption between clients and servers. However, as with…

GitHub logo tarasglek / chatcraft.org

Developer-oriented ChatGPT clone

ChatCraft.org

Welcome to ChatCraft.org, your open-source web companion for coding with Large Language Models (LLMs). Designed with developers in mind, ChatCraft transforms the way you interact with GPT models, making it effortless to read, write, debug, and enhance your code.

Whether you're exploring new designs or learning about the latest technologies, ChatCraft is your go-to platform. With a user interface inspired by GitHub, and editable Markdown everywhere, you'll feel right at home from the get-go.

ChatCraft UI Example

Features

We think ChatCraft is the best platform for learning, experimenting, and getting creative with code. Here's a few of the reasons why we think you'll agree:

πŸ› οΈ You're in Control: Customize all aspects of a chat. Use your own System Prompts, edit, delete, and retry AI messages with models from competing vendors in the same chat.

🌍 Multiple AI Providers: ChatCraft supports both OpenAI and OpenRouter, giving you access to a…

I'll talk about my experience setting these up, and what I plan to work on for this sprint.

Setting up the projects

I was able to get both projects up and running fairly easily following the documentation. Starchart is an old project and hasn't been maintained for about two years, so I got warnings for a bunch of out-of-date dependencies, but was still able to get the webapp running.

Starchart latest commit

ChatCraft is much more actively maintained, so I didn't run into any trouble setting it up.

ChatCraft latest commit

First Contributions

I submitted some issues / pull requests for both projects - some feature suggestions and some documentation updates.

Starchart

For Starchart, I noticed a few areas for improvement in the docs:

  • The contributing docs don't mention docker compose down, so contributors unfamiliar with Docker Compose might end up leaving the Docker services on their machines.

Add `docker compose down` to contributing docs #771

The contributing docs don't mention docker compose down, so contributors unfamiliar with Docker Compose might end up leaving the containers on their machines.

  • The section on squashing and merging pull requests has some misleading info saying squashing helps prevent losing the commit history.

Misleading squash merge explanation

  • I think we could write a Makefile to simplify the developer environment setup and teardown.

I made a pull request to fix some typos and the section on merging pull requests. Unfortunately, it looks like Starchart's CI workflow is broken, because Playwright fails to install the dependencies it needs to run end-to-end tests. I haven't been able replicate this error on my local machine - I assume it's because of differences between my environment and the GitHub Actions environment. I'll have to look into the CI workflow.

Fix typos and "Merging to main" section in CONTRIBUTING.md #768

Fixes #767.

Fixed some typos. Also:

https://github.com/DevelopingSpace/starchart/blob/bf23d1c5e84298165463e34cb337f00aeb07f862/CONTRIBUTING.md?plain=1#L122-L129

This section says that squashing and merging pull requests helps prevent losing the commit history which is not true. I've streamlined the section to remove that part.

Until this is resolved I've decided to hold off on making pull requests for the other two issues.

ChatCraft

As for ChatCraft, the Getting Started section of it's README had what I understood to be slightly outdated instructions, instructing new users to select an AI provider and to enter an API Key. These are optional steps tucked away in the settings, a fact the instructions failed to mention (which confused me when trying it out the first time). I filed an issue to address this.

README "Getting Started" section improvements #776

The Getting Started section of the README talks about choosing an AI provider and entering an API key, but fails to mention where to find these settings and that these steps are optional:

https://github.com/tarasglek/chatcraft.org/blob/747d1026e3eee0ca3db829b2f09fe9ded42b83e2/README.md?plain=1#L33-L42

We could either remove those steps for the sake of simplicity (since it is supposed to be "Getting Started"), or label them as optional and mention where users can find those options.

I also opened an issue for adding a setting which updates the app theme dynamically when the system theme changes, instead of reading the system theme on start and then requiring manual toggling.

Add "Use System Theme" setting #781

I'd like a setting that makes the app theme change dynamically when the system theme changes.

I think setting useSystemColorMode to true if the setting is toggled on would work:

https://github.com/tarasglek/chatcraft.org/blob/c2f7165a7225492dcd1c1ef18e65272e3f5f59ab/src/theme.ts#L5-L10

Maybe also hide/disable the theme toggle button when this is on?

Other Plans For This Sprint

In terms of other stuff for this sprint, I'm still working on one of my pull requests to Mattermost from a while ago - I received a review last week so I have some changes to make:

[MM-53650] Add disable emoticon rendering setting to webapp #29414

Summary

This pull request adds a user setting to the webapp to toggle rendering emoticons (:D) as emojis (πŸ˜„).

The setting is added as a component in components/user_settings/display/render_emoticons_as_emoji/ which is imported in components/user_settings/display/user_settings_display.tsx.

I've added a renderOnOffLabel() function to user_settings_display.tsx, lifted from components/user_settings/advanced/user_settings_advanced.tsx to help render the new component.

The setting is stored as a user preference using the savePreferences() action.

I've added constants for the preference to utils/constants.tsx and webapp/channels/src/packages/mattermost-redux/src/constants/preferences.ts.

To actually use the setting, I've modified components/post_markdown to receive it's value as a prop, for which I've used getBool() and added a default value to the config. post_markdown passes this value down to Markdown on the options object, which then passes it down to utils/text_formatting.tsx, which finally passes the value to emoticons.tsx as a newly added parameter. emoticons.tsx checks whether the value is true and if it is, it transforms the emoticons into emojis.

I've updated affected tests and created unit tests for the new component. I've also updated the English translation file.

QA Test Steps
  1. Navigate to User Settings.
  2. Go to the Display category.
  3. Find the section labelled "Auto-render emoticons as emoji" and click "Edit".
  4. Toggle the setting and click "Save".
  5. Emoticon rendering on messages sent by the current user and other users should be toggled client-side with the setting.

Ticket Link

Fixes (partially) https://github.com/mattermost/mattermost/issues/26504 Jira https://mattermost.atlassian.net/browse/MM-53650

Note the issue and ticket describe adding this feature to the mobile app as well, which this PR does not.

Screenshots

before after
image image

Release Note

Added a new user setting to toggle rendering emoticons (:D) as emojis (πŸ˜„)
opensource Article's
30 articles in total
Open-source projects foster collaboration and innovation, allowing anyone to view, modify, and share the code freely.
Favicon
Memory Management in Operating Systems
Favicon
2025: The Year of Decentralization – How Nostr Will Make You a Standout Developer
Favicon
10 Must-Bookmark Open Source Projects for Developers
Favicon
[Boost]
Favicon
join my project semester simulator
Favicon
340+ Websites every developer should know
Favicon
KDE vs GNOME vs Others: Choosing the Best Linux Desktop Environment in 2025
Favicon
assert in Nodejs and its usage in Grida source code
Favicon
Contribute to `real-to-sim-to-real` in SmilingRobo Open-Source Sprint!
Favicon
Exploring the CNCF Landscape: A Comprehensive Overview of Cloud Native Technologies
Favicon
🎁 20 Open Source Projects You Shouldn't Miss in 2025
Favicon
Any recommendations of open source asset inventory ?
Favicon
Getting Started with the Open Source AI Hackathon
Favicon
Supercharge Your JavaScript Agents with Firecrawl in KaibanJS
Favicon
Top 10 Trending GitHub Repositories, Nov 24 2024
Favicon
Open-Source TailwindCSS React Color Picker - Zero Dependencies! Perfect for Next.js Projects!
Favicon
Procrastinator’s Guide to Glory: Turning Wasted Time Into Career Gold with Open Source
Favicon
Kubernetes Security Best Practices
Favicon
SPL: a database language featuring easy writing and fast running
Favicon
7 Open-Source Tools for Better Website Analytics
Favicon
Train LLM From Scratch
Favicon
Have you ever used `git submodules`?
Favicon
✨ Introducing Tooltip: A Revolutionary Suite of Developer Tools** ✨
Favicon
Becoming An Open Source Maintainer
Favicon
Open-Source React Icon Picker: Lightweight, Customizable, and Built with ShadCN, TailwindCSS. Perfect for Next.js Projects!
Favicon
Enhance Your App's Security with OTP-Agent
Favicon
3 essential elements for Web publishing
Favicon
Pulumi WASM/Rust devlog #3
Favicon
Sign up to our bug bounty platform!
Favicon
lodash._merge vs Defu

Featured ones: