Week 10

My Journey with Oppia

The highlight of the week was definitely finally being able to launch Oppia on my machine. I am not going to lie, it was truly ecstatic. Collectively, I would say it took me around five hours to set it up properly. I had to restart the process from scratch three times, and I did rage quit once. I am honestly a little scared that it’s going to break. Still, I am very excited to start contributing to Oppia (even though, when Professor Klukowska warned us around five times that people always had issues with setting up the Oppia developer environment, we probably should’ve listened to her).

On Oppia, there are plenty of lessons that need to be translated into Russian, so this way it will be very easy to rank up contributions to the project. + It seems that it would be a significant improvement to the platform because it will make the platform more accessible to a large number of people! From a more technical standpoint, I found an issue that requires writing tests for functions, which I am excited to work on since it will help me develop my programming skills. I am currently preparing my comment to leave under the issue, so I can get it assigned to me.

Read More

Week 8

Team Projects

After listening to other team reports, I realized that my team is having a different experience. Many of the other teams have already started looking into contributions, assigning tickets, and reaching out to the communities. While we are still setting up the environment. -_-

Although I must point out that it is not due to our laziness or anything like that, Oppia, as it turns out, is notoriously hard to download and get running. I am sure that as soon as we figure it out, we will catch up to everyone else in no time!!

Read More

Week 7

Reflecting on the teamwork.

I am lucky to be part of Team A! I do believe that we hit it off great. We decided on Oppia as our project by considering everyone’s interests and preferences, then sorting through the big list and narrowing it down to 4 projects. After, as a take-home activity, we further considered the remaining projects, tried to download the environments, etc. And after everything, this Sunday we settled on Oppia, which everyone is very excited about! The main obstacle is Oppias’ developer environment, but I have great teammates who are willing to help if I encounter any more issues.

Read More

Week 6

Future Project

Honestly, I am inexperienced enough that most projects should be about the same level of challenge. I am familiar with C and have some experience with C++ and Python, so something written in those languages would be nice. Obviously, a lack of specific technical skills will be in my way; however, I am most afraid of my inexperience in working on an actual, serious technical project. How does its structure work? Where would I even be able to contribute, etc.? But either way, there is only one way to gain experience. Probably the main way I would be able to contribute (if no one else wants to) is by taking the initiative to organize meetings, figure out when everyone is free, and start discussions. Hopefully, I will be helpful!

Small Contributions

For personal contributions, I’ve mainly been updating content on WikiPidia. I have a strong knowledge of the history of contemporary fashion, so I have a lot of information to share with the world. The contribution I am most proud of is publishing the fact that Ann Demeulemeester’s first collection was purchased instantly, which is a pretty important piece of information. Otherwise, I’ve tried to contribute to the course website; however, I somehow didn’t realize there are probably some guidelines on how to do that properly, so my PR got closed. However, since then, I published an issue (hopefully) properly following the instructions.

Read More

Week 5

Extensions and Presentations

All of the presentations were so interesting to listen to. I am not going to lie: in every other class, when I had to listen to my peers present, I would usually either zone out or be too anxious about my own presentation to focus on what others had to say. But this time, I was genuinely so into everything that my classmates were presenting. Everyone did such a good job, and it was so cool to see people showing off their creations. For example, the extension that lets you hover over a part of your screen to open another tab was super cool and very useful. But the most memorable extension was definitely the “zoning in and out of consciousness while watching YouTube videos”. I need to fork the repo.

Teamwork take-aways

I would say the two biggest take-aways from working with my team are: communication and work distribution. Anytime I work with other people, I am reminded of how important it is to have productive, frequent communication. For work distribution, since my teammates were much more experienced than I was, it would be really easy to start relying on them too much. I’m glad I didn’t get too comfortable, but I always could contribute more.

OSS conference talks and take-aways

This week, we were assigned to watch three talks on Open Source. The content they covered was very diverse, but I would like to comment on their conversation around AI. I haven’t really thought about what the hype around the technology means for Open Source, and it was interesting to find out that now bad actors have more tools to harm or benefit from OSS. Another memorable thing that actually made me chuckle was when Dirk jokingly told Linus that an AI model would replace him, and Linus said, “Finally.” It was good to hear that one of the most important Software Engineers in the world is skeptical of claims that AI will take over our jobs.

My biggest take-away from those presentations in terms of the art of public speaking is definitely from Kelsey Hightower’s talk on Open Source. The way he talks very slowly is a skill that I’ve been working towards ever since my freshman year of college. Every time I present, I always try to speak slowly and not be afraid of pauses, but I always end up talking too fast. Seeing him in action was a great reminder to continue my pursuit, given how good it looks from the side.

Read More

Week 4

My journey with Git

Over the past week, I have been rapidly expanding my Git knowledge and becoming more confident in its use. I’ve always had an idea of what Git is; however, it was very nice to actually learn what version control is and how exactly it works. Also, I’ve been getting more confident with GitHub by learning commands, and my teammate Alexey recommended that I look into LazyGit, which is a game-changer! Overall, it has been a very productive week.

Open Source Projects

It has been exciting to start evaluating open-source projects we may contribute to in the future. I enjoyed playing the investigation game of looking into open and closed PRs, seeing how many people are actively contributing, what types of commits are being made, and how quickly people respond to issues. I’ve been surprised to see how, for the most part, the open source community is welcoming to beginners: I never expected to see issues labeled “good first issue,” for example. In working on a project, I am most excited about really getting into the weeds and dedicating time and effort to really try to understand the project so that I can effectively contribute. I am most scared of my lack of technical experience, but the only way to overcome it is to make myself uncomfortable and force myself to grow as a programmer.

Read More

Week 3

OSSD Group Project 1

I am lucky to be part of Team Blue! Even before the first in-person group meeting, one of our team members already set up an email chain. Then, during class, my team and I started by completing the in-class activity. I cannot lie, I was taking the longest; however, my teammates were very understanding and helped me out. We were also able to settle on an extension idea we want to implement, and we discussed basic contribution guidelines. After the class, we continued communicating online and settled on the license for our project.

Within the team, I am definitely the least experienced. However, my goal for this project is not to feel like a burden to my teammates. I am going to do that by expanding my knowledge and skills and by helping out wherever I can. I have been able to contribute in little ways, for example, by finding an implementation of an idea similar to ours.

This activity promises to be very fun (also a little scary), and I know that I will come out a better programmer on the other end.

Read More

Week 2

My Thoughts on Codes of Conduct

I believe it is essential for any open-source project to have a code of conduct to scale and grow its community. In a small group of friends working on a project, some rules can go unspoken. However, for a project to succeed in the long term, there must be clear expectations set for newcomers on how to properly interact in such a diverse space. After reading the Go Community Code of Conduct, I would say its goal is to provide the community with tools to prevent and resolve conflicts so its members can focus on the most important part: contributing to the project effectively.

Two differences I noticed between the Go CoC and the Contributor Covenant Code of Conduct template: Go added a summary section and a Values section. They added a summary because I believe they understand that people are lazy. Not everyone will read the whole document, so it is important to include a concise version of the most essential points. Regarding the Gofers’ values, I think they added that section to outline the aspirational qualities of their community members.

On the other hand Eclipse Community Code of Conduct has a very different structure from that of Go: it is much more formal and longer, almost like a contract. This difference stems from the nature of the organizations. Go is a single project, while Eclipse is a foundation whose purpose is to help open-source projects thrive. Their specialty is providing frameworks that lead open-source projects to success, which explains why their CoC sounds so professional.

Sugar Labs Code of Conduct differes significantly from Go CoC. It is based on a different document: Ubuntu Code of Conduct. I would say the difference between those two boils down to the fact that Sugar Labs is a learning platform developed by volunteers. So where Go’s CoC lays out what developer they would like to see in their community and how to resolve conflicts, Sugar Labs is a guide to collaboration and cooperation.

Pygame Community Code of Conduct is based on Python Discord Code of Conduct. Looking side by side at the Pygame CoC, Contributor Covenant CoC, and Ubuntu CoC, Pygame looks a lot like a much shorter version of the Contributor Covenant CoC. It is much less of a legal document, a manifesto, or an aspirational overview. Pygames CoC serves as a practical guide for respectful interaction in a real-time chat community.

How to Drive Consensus and Transparency Within Open Source Communities

This video covers general advice on conflict prevention/resolution, as well as best practices for managing open source communities. The main strength and, at the same time, weakness of open source projects is the diversity of their participants. While, of course, this diversity of people provides an immense range of perspectives and many eyes that make every bug shallow, it also gives rise to a variety of logistical issues. People are in different time zones, so it might be impossible to arrange meeting times that satisfy everyone equally. Some people might not be fluent English speakers, and there might be cultural differences that could make you come off as rude to someone else.

In these infinitely complex structures, it is impossible to come up with a concrete answer to make everyone cooperate perfectly. But the speakers kept emphasizing the importance of the idea of the North Star, i.e., the far goal for which your community is striving. It resonated with me a lot because that is something I also came to whenever I had group work. It is important that every member has a clear vision of what we are here to achieve as a group, and that there are several ways to reach the same goal. In addition to that, some other ideas that I resonated with: everyone must have a voice and everyone should have an opportunity to share their solutions for a given problem(if you have the correct answer it doesn’t mean that everyone else is wrong); not all issues have to be solved in an instance, sometimes it is better to continue with the course and then correct later.

Finally, it was interesting to me how the speakers also treated the Code of Conduct as a sort of a North Star. They said that in most cases, it is something that you will not even need to touch whenever conflicts arise. However, it does serve as a general direction of how the community should behave online and a tool to push back against bad actors.

Read More

Week 1

Intro

So far in my academic journey of being a computer scientist and mathematician, I would always come to my classes relaxed because I always expected professors to jump straight into material. However, at Open Source Software Development, the absolute opposite happened: we were the ones talking and telling about ourselves. And honestly, I am eager to further develop my communication skills within a class setting.

In addition, I am excited to develop the practical side of programming. During my time as a cs person, I’ve gotten extremely comfortable with learning and understanding theory. Proving correctness of an algorithm, runtime, how the CPU works, etc. But outside of a couple of personal projects, I haven’t truly looked at code and tried to understand it in depth. I am very excited to begin.

I expect this class to push me hard, and I know that I will come out as a better programmer on the other side.

Open Source

When I hear the term open source, I think about GitHub. I imagine a platform where people can freely use, exchange, modify, and study each other’s code. I would assume that this system has a multitude of advantages, such as having an incredibly diverse group of developers makes any problem more solvable. Among some disadvantages, I would assume that certain actors might not be benevolent in their contributions or in their use of others’ work.

4 Important Open Source Projects

  • Wikipedia: Probably the most known open-source project in the world. I use it almost on a daily basis. I absolutely love finding random articles on Wikipedia and expanding my knowledge.
  • Pygame: I have used it in the past for my personal projects, as I believe it’s a canon event for every programmer to try to make a game at least once.
  • Python: Speaks for itself!
  • NumPy: Linear algebra mede easy!
Read More