-
Notifications
You must be signed in to change notification settings - Fork 0
lab 06
Monday Oct 27 by Midnight.
Over the next two weeks, we are going to extend our 0.1 projects by exploring the features of another similar open source project, Repomix. We'll also use this lab in order to explore how it works, and get inspiration for our own tools.
This lab will help you practice the following:
- evaluating existing open source projects for inspiration and ideas when building your own solutions
- reading the code for an existing open source project
- prototyping a new feature and implementing a working proof-of-concept
- planning future work via Issues
Please read the Repomix Guide. Pay special attention to features in Repomix that you don't have in your own tool. In the open source world, it's fine to copy where licenses allow it. Repomix's License allows you to "use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software," as long as you accept and maintain the license.
You are asked to pick a feature of Repomix that you think is interesting. You are free to pick whatever feature you like.
Reading source code is a critical skill. The best way to do it is to have a goal--it's hard to read source code like a book (i.e., you don't sit down and start reading at main()!). You want to use tools to help you navigate around and find what you're looking for. We'll practice reading-with-a-goal by using Repomix and your chosen Feature from the previous step.
You are asked to try and locate all of the code related to your feature. This includes:
- implementation
- tests
- build or configuration settings
- docs
- Pull Requests and Issues related to the original work
Here are some strategies we can use:
-
git grep. Git has built-in search capabilities. Whenever you
clonea repo, you can usegit grepto search within the tracked files and folders. For example, you might look for a keyword like a function name, a string you see in the UI, etc. - GitHub Code Search. GitHub also has many advanced search features built into the UI. Using it you can navigate files and folders, look at type information (e.g., click a function to see where it's defined or referenced). There are lots of powerful features to explore.
- Using AI. Large Language Models (LLMs) are excellent for helping us understand what existing code is doing.
Create a blog post explaining what you learned about how your feature is implemented. Be detailed and technical! Include links to files or lines of code you reference. Give a summary of what the feature is and how it works. Next, talk about how the code that makes it work is organized and written. Give examples of things you learned while reading the code (e.g., styles of programming or ways of solving problems you've never thought about before), aspects that were hard to understand, and anything you're still trying to decipher. Also talk about the strategies you used to read the code. Were you able to learn everything you needed from GitHub? Did you need to use AI to help? What worked best?
Often code reading is something we do to get a sense vs. a perfect understanding of how software works. Don't pressure yourself to be perfect, but also don't give up easily. If you get stuck, take a break and come back to it again another day.
Now it's your turn to implement something similar in your own project. Plan how you'll implement a prototype of this feature using GitHub Issues. File Issues in your repo to document what needs to be done and ideas on how you'll approach the work. The smaller you can make each Issue, the easier it will be to fix them.
Next, prototype the feature in your project. Prototyping means building just enough of a feature in order to understand how the finished version might work. It doesn't need to be 100% complete or perfect. With a prototype, going fast is more important than being meticulous and detail oriented.
Create a branch and start implementing your code, committing to git as you knock-off various bits of the work.
When you're done, you should have something that can be squashed and merged into your default branch. It can be a simple proof-of-concept (missing key elements), as long as it works and proves your idea.
By the of the lab, for any aspects of the feature that you can't get done, file more Issues to be fixed later on. Challenge yourself to stay on schedule, and convert unfinished work into Issues to be solved in subsequent releases. Figure out what you need to cut in order to ship something on time. Shipping on time is more important than being perfect and never shipping. Software is never done, so it's important to learn to embrace the chaos of rolling releases and ongoing bug fixes.
After you're all done, write about your project's new feature. Here are some ideas to touch on in your post:
- Describe your feature. How does it work? What problem(s) does it solve? What does it do?
- What did you build it?
- How did Repomix inspire your feature?
- What did you do similarly to Repomix, and what did you do differently?
- What are your next steps for the feature and how can people get involved to help you move it forward (e.g., issues you've filed)
Remember, make sure you include URLs to everything you discuss.
When you have completed all the requirements above, please add your details below, copying the template:
- Blog Post about Code Reading Analysis of Repomix Feature: https://dev.to/{your-name}/reading-repomix-code
- Blog Post about Writing the same Feature in your Project: https://dev.to/{your-name}/announcing-my-new-feature
- GitHub Commit https://github.com/{your-username}/{your-repo}/commit/ddeaf180bcde5ebed04b695453fa52cf6b410aca
- Blog Post about Code Reading Analysis of Repomix Feature
- Blog Post about Writing the same Feature in your Project
- GitHub Commit
- Blog Post about Code Reading Analysis of Repomix Feature
- Blog Post about Writing the same Feature in your Project
- GitHub Commit
- Blog Post about Code Reading Analysis of Repomix Feature
- Blog Post about Writing the same Feature in your Project
- GitHub Commit
- Blog Post about Code Reading Analysis of Repomix Feature
- Blog Post about Writing the same Feature in your Project
- GitHub Commit
- Blog Post about Code Reading Analysis of Repomix Feature
- Blog Post about Writing the same Feature in your Project
- GitHub PR | GitHub Commits Have several commits for the feature.
- Blog Post about Code Reading Analysis of Repomix Feature
- Blog Post about Writing the same Feature in your Project
- GitHub Commit
- Blog Post about Code Reading Analysis of Repomix Feature
- Blog Post about Writing the same Feature in your Project
- GitHub Commit
- Blog Post about Code Reading Analysis of Repomix Feature
- Blog Post about Writing the same Feature in your Project
- GitHub Commit
- Blog Post about Code Reading Analysis of Repomix Feature
- Blog Post about Writing the same Feature in your Project
- GitHub Commit
- Blog Post about Code Reading Analysis of Repomix Feature
- Blog Post about Writing the same Feature in your Project
- GitHub Commit
- Blog Post about Code Reading Analysis of Repomix Feature
- Blog Post about Writing the same Feature in your Project
- GitHub Commit
- Blog Post about Code Reading Analysis of Repomix Feature
- Blog Post about Writing the same Feature in your Project
- GitHub Commit