#hfoss
Explore tagged Tumblr posts
Text
When Uncomfortable... GROW (12/04/2020)
Now that my senior fall semester is coming to a close, I would like to share some of the growth I’ve had as an individual and how my experiences learning about and working with the OSS community has cultivated this growth.
At the start of this semester, my only real-world application of development was at my summer internships. The more I learned, the more it became abundantly clear the magnitude of tools, technologies, lingo, and strategies in the development world that I did not understand. It was daunting to say the least. Our coursework to this point was predominantly theoretical and when we were writing code, we always had the tool sets needed to figure out how to complete the assignments. However, in my experience working, this was never the case. I constantly had to rely on Google to help me learn and problem solve unfamiliar tasks. Feeling lost in a new position, though uncomfortable, is common and necessary for learning and growth.
This past semester, in my senior seminar capstone course, was the first time in the computer science major that I felt this level of unsureness and discomfort. Learning that we would work with a FOSS project overwhelmed me with the prospect of having to figure out the development environment and integrative tools required for that type of collaboration. What became increasingly apparent however, was that as we spent more time with the new materials, I became more confident in my ability to understand new concepts and handle unknown complications.
This course was structured around readings and discussions, hands-on activities, and work with our respective FOSS projects. The readings were profoundly helpful for me to get my bearings in the developer community. Previously we have learned to code and how to solve problems, but the readings in this class began to open our eyes to how you would actually use these skill sets to contribute to a team and what technological components you would have to interact with to create a final product. The hands-on activities were our first insights into applying the skillsets we read about and while I was not able to remember how to do many of the activities at the time, I have found that they were the first insight into methods that I have used continuously with my FOSS project. Simply having more practice using the terminal provided valuable insight to interacting files, directories, ports, and technologies in a way that I could not have understood prior to engaging and troubleshooting with them in the terminal.
I spent this semester working with OpenMRS, an HFOSS project that provides a medical records system to those in need, especially in the developing world. The OpenMRS community is extremely large and the development kit it requires is very version specific and nitpicky. At first this was very frustrating to me because I have always struggled with configuring development environments and handling unfamiliar software. But as I continued to troubleshoot the developer installation, I slowly began to understand how to debug error messages on my own and how to identify possible reasons they occur. Every error message is unique and unfamiliar, but having had to trouble shoot dozens this semester, they are not as daunting as they once were because I know that I have overcome similar errors in the past. Instead of immediately asking someone for help, I am now much more willing and confident to troubleshoot independently first and often can even find my own solutions. I also have a better idea of when it is necessary to outsource support.
The OpenMRS community has been pivotal to my growth with overcoming uncertainty. While the project itself is hard to understand in its full capacity, the community members have been extremely supportive. They have helped me to understand the interacting software components and the structure of the project itself. It is now clear to me that while unfamiliarity is necessary for individual growth, it is the community that is supporting you that plays a large role in determining whether you can overcome that discomfort.
A few months before the start of this semester, I made the decision to pursue a career as a doctor. I was unsure if development was something that I would try to take with me through that experience. While it can help me to perform research in the medical community, I was concerned that I did not know enough about systems to be effective. This course has given me the insight and background to more confidently learn new technologies and strategies that will enable me to effectively use development in the medical field to help individuals in the way that I dream to as a physician. Working with OpenMRS in particular has propelled my excitement to have the background of a developer because technology is what enables us to help millions of individuals worldwide to close the gaps of access and support. As I have spent more time with the OpenMRS community I have become increasingly engaged with their mission statement and efforts. While I wasn’t originally planning to continue development after I graduate, I am now increasingly excited to continue to work with this community because it supports an effort to help others, a goal that I believe in, and I want to continue paying the community back for the help and lessons they provided me when I was overcoming my discomfort around technological uncertainty.
0 notes
Text
Intro to Senior Seminar Blog
For my computer science senior seminar course, I'm using this platform to blog about and reflect on various technical topics and dilemmas. I'll be posting about free and open source software (FOSS), as well as HFOSS, software engineering more broadly, and contemporary social and ethical issues in technology.
After college, I plan on working as a software developer/engineer. I am open to working anywhere, for many companies, and with many different softwares.
1 note
·
View note
Text
Reflection on my Dickinson Education
Reading through both the goals of a Dickinson College education and learning goals of the computer science major specifically, I can confidently say that I will graduate having fulfilled them all. Looking back on my four years as a student here, I am more than satisfied with the education that I have been given, and proud of myself for successfully making it through (almost, 2 more months to go). While some of the goals have been emphasized more than others, the courses required of the computer science department and the professors who teach them have gven attention to each one. Describing how I specifically have encountered each one would take far too long, but I can summarize a few of my most significant takeaways from my experience as a Dickinson student.
The most unexpected benefit of my Dickinson computer science education is summed up in one particular learning goal of the major: “Students will gain an understanding of social, legal and ethical issues raised by computing.” Thinking back to even my very first computer science course at Dickinson when I took 130 during the fall semester of my freshman year, we learned about and discussed topical issues related to ethics within computing. Those kinds of discussions continued throughout my four years of undergrad, particularly in 190, 290, and senior seminar but coming up at least briefly in almost every single other class. These discussions not only helped to foster a greater understanding of relevant topics to the field of computer science, but also allowed us to be exposed to sharing and listening to a variety of different, opposing viewpoints in a respectful and productive setting.
The ability to work productively in a partner or group setting is another skill that I can confidently say has improved throughout my undergrad experience. Partner programming frustrated me at first, but I’ve now seen the benefits in actively working as a pair. I’ve even seen partner programming listed as a desired skill on job applications. In a field where the stereotype is an antisocial programmer, working alone in a dark room, the department’s emphasis on collaboration has not only been surprising, but inspiring. My experience working as a part of a team makes me want to pursue a career path that values teamwork just as much as Dickinson does.
The excerpt from Dickinson’s goals of a college education, “our distinct characteristics of independence, inquiry and engagement are rooted in a practical, real-world approach to the liberal arts,” can be easily exemplified by the computer science major’s use of open source as a learning tool. I’m very happy to have gained real world experience and developed a relevant skillset contributing to both the projects FarmData2 and Oppia. These skills make me a more qualified candidate when applying for jobs, and I can absolutely apply them within an industry career. Not only that, but it’s given me the chance to apply my knowledge in a way that makes an impact. Both FarmData2 and Oppia fall under the umbrella of Humanitarian Free and Open Source Software (HFOSS). Being encouraged to volunteer my time and skills toward a worthwhile endeavor fulfills several of the points made in the general goals of a Dickinson Education, specifically to “produce critical thinkers…forever ready to make a difference” who are ”ready to make significant contributions in an ever-changing world.”
Saying that after studying computer science at Dickinson I now “understand core concepts of computer science, including data structures, algorithms, computational complexity, and computability” is an obvious statement, but I’d like to expand on that point. More than just understanding the concepts alone, I now have an understanding of how they intertwine. The way that the major track is designed, every class builds upon the knowledge that we have previously learned. Taking analysis of algorithms before computability and complexity feels incredibly beneficial, because I have already been introduced to the concepts surrounding complexity. What I learned in data structures has applied to almost every single class that I’ve taken since then. I feel as though Dickinson has given me not just individual bits of knowledge, but a grasp of the computer science discipline as a whole, and an ability to continue building upon what I have learned.
Regarding the goal “students will acquire the ability to recognize, design, apply and implement abstractions in complex computing systems,” I am able to give a very specific example. When I worked as a FarmData2 intern during the summer of 2021 along with Iris, we spent a large chunk of our time working on a custom table component. The goal of this component was to have a versatile building block that could be used on any page of the web app, regardless of the information that needed to be displayed, and that could be easily implemented by a contributor who did not know the ins and outs of how the component was constructed. What was great about that experience is that I not only gained a better understanding of abstraction in an academic sense, but we were also implementing it in a real-world scenario. That whole summer working on the project was a great opportunity, and the custom table component just one of the many experiences that I will carry with me after college.
One of the things that makes me the most thankful that I go to Dickinson is when I talk to students at other schools, especially computer science majors. Descriptions of two-hundred person lecture halls, impersonal professors, and a lack of resources for struggling students have all been reoccurring themes. Are there things that I would change about my college experience if I could? Sure, for one thing I’d rather not have gone through a pandemic in the middle of it, but in terms what I learned, how I’ve grown, and the skills that I’ve cultivated have all been because of the environment created by Dickinson’s dedication to the liberal arts. That dedication is perfectly summarized in their learning goals, which I can now confidently say are no longer goals, but achievements.
0 notes
Text
Final Reflection
Since I had spent time learning how to code in high school, it naturally felt like computer science would become the major that I join at Dickinson College. I didn’t have any real concrete goals as a freshman other than making sure I graduated. However, as I continued to take classes in the computer science major, other paths started to open up to me. The tech industry has a wide variety of occupations and being a software developer was just one of them. Drawing from my past experiences, working in Information Technology was possible, the Cyber Security course at Dickinson was pretty eye opening as another career option. However, I decided to pursue software development. One of the classes that I found challenging and super helpful was Analysis of Algorithms. I took this class last semester during my job searching and I felt that it really improved my critical thinking and problem-solving skills. Since coding challenges have become normal for applying to any software developer job, I was looking into LeetCode and other resources to improve those skills. Analysis of algorithms gave me a good introduction to the types of methods often used to solve data structure problems. It’s not as if I would be completely blind to these problems without the course, but Analysis of Algorithms was able to prepare me. I think the way this course has helped me ties into Dickinson’s educational mission by giving me some sort of preparation for applying to start working as a member of society. Being where I am now, I can look back into the courses I’ve taken such as Data Structure and Algorithms and see how the knowledge I’ve cultivated at Dickinson has been meaningful and logical. Certainly, many of the things I’ve learned in the Computer Science major can be self-taught, but Dickinson has given me direction and taught me about the tools used by professionals in the fields that I prepare myself to move into in the future. The senior seminar and working on my HFOSS project have done exactly this. Although my senior seminar and finals are not complete yet, I can say for certain that the git merge conflict I experienced working on The Odin Project will be one of the learning blocks I’ll remember for years. While the senior seminar introduced tools like git to me, the HFOSS project really gave me an opportunity to use it in a closely related real world problem. In the past, I’ve touched git a little before, but I never really understood it. Even after having git re-introduced to me in the senior seminar, I felt that I had this hazy understanding of how things worked. It was after encountering a merge conflict that I truly felt I understood git as a tool and the possible ways professionals use it. I am now by no means a pro at using git, and there’s still much for me to learn, but I have become more confident in my ability to learn about and use tools in the real world. Dickinson has been able to prepare me for life after college by helping me cultivate knowledge and giving me opportunities to learn and put what I’ve learned to use.
0 notes
Text
Choosing a H/FOSS
H/FOSS (Humanitarian Free Open Source Software), like many things, come in many shapes and sizes. Four main types are single vendor, developer communities, user communities, and competence centers. Each type works to produce free software to solve specific problems. As they each are structed differently the H/FOSS groups have different methodology and structure on how the software is maintained and created. Single vendors are single leader developing companies, while competence centers are lead by a board of directors and already have a predetermined chain of command. User communities, as the name suggests are lead by software users where developing communities are lead by individual developers. As a project progresses and grows it may mutate and become a different type of project. For example, as a single vendor project grows it may need to change into a developer community as the number of pull requests becomes too great on the lead developer. This is the case with many H/FOSS communities that have a good culture.
A good culture attracts passionate members that improve the project. Once a new member contributes, they become a rightfully named contributor. These contributions can be small as fixing documentation or finding a bug to as large as refactoring the whole code base or adding a brand-new feature. Every contribution is helpful as it helps expand the project.
Every contribution or issue according to GitHub has its challenges. Within the Development Model it is important to have good communication and documentation to work through challenges. As many F/HOSS projects are used by fortune 500 companies there needs to be a structure to the project. Projects should have a README file that contains all useful information. This includes code of conduct, code format, communication channels, installation instructions, mission statement, project goals, and anything else that a user or developer may need. A well-documented project makes contributing easier as everything is in order.
An organized project allows for users to report bugs. The developers can quickly find and fix the bugs. This is in accordance to the model above. The users report bugs for the developers to fix and post to the repository. However, this does not always go smoothly. Passion in a F/HOSS project is important, however can be deadly as well. Depending on the project and the structure of the community behind it, a singular passionate person can be fatal. Although HFOSS communities tend to be welcoming communities some have leadership problems. For example, let’s look at a single vendor community. A user has a suggestion to improve the project. This suggestion however will revamp the application and undermine all the hard work the leader has done. The leader thus does not allow the pull requests to merge into the project. He has become a dictator, pushing contributors away from the project, hindering its growth.
When looking to contribute to a F/HOSS project, it is important to find the right group. A wrong group can hinder your growth as a developer. Take the time to review all the documentation and look through the communication channels. Choosing a F/HOSS community is like choosing a job. If unorganized or has a bad culture, a job quickly becomes toxic and a negative work environment. The same goes with F/HOSS projects.
0 notes
Text
Reflective Blog
The open source community is something I had little to no knowledge or experience with leading up to this class. I barely even knew what FOSS or HFOSS meant. The communities are very welcoming and inclusive and they are full of people who encourage people to join and learn about working on larger scale computing projects, without the stress of it being a job. Open source communities are an incredible way to learn what it is like to work in a team environment. The previous computer science classes one may work with a friend or a partner in an earlier lab but the overall class is about improving your individual skill. This course flipped that upside down as we began to learn about contributing to a team and how one will function in a team of developers. You are responsible for your tasks and report back to supervisors who approve your code. The open source community takes what could potentially be a very stressful situation and makes it much more about helping one another. It is a community with the main focus being learning. Of the civic dispositions listed I believe that personal responsibility is something I will take away from this class. Although we worked in groups and had great support it is still down to the individual to work hard and take charge of what they have asked to work on. In the projects you reach out to work on stuff and therefore it is your responsibility to work on the issues. When looking at the civil skills I would say the biggest takeaway would be applying democratic principles to work in groups. I can’t say enough good things about my group this year. They were all incredibly supportive and encouraging. It was great to learn how to properly function in group work by sitting an observing them. I was able to watch the our group work through things be y allowing every member to state their opinion and never considering anyone’s opinion as lesser. They all helped me truly understand working in a team and I am deeply thankful. This class a whole challenged me greatly but I appreciate all I learned from it and from my classmates.
0 notes
Text
Reflection- Working with OpenMRS and Volunteering
Working with OpenMRS, an HFOSS platform that provides medical record system in resource constraint environments and over 41 countries, during my senior year of college has been an amazing learning experience for me. I was able to grow professionally and personally from the challenges, I had while working on different projects ranging from being a lead team member of the Website Squad to fixing and reproducing bugs on the backend.
I had never heard about OpenMRS or anything about HFOSS platforms before my senior year. Therefore, the number one thing I am very happy to learn is how I can volunteer at any time in my life to HFOSS projects like OpenMRS and use my skills for social good and sustainability. Working with OpenMRS strengthened my values about empathy and having a sense of personal responsibility to take initiative. Especially in this virtual world when physically volunteering is hard, anyone can be a part of an HFOSS platform and volunteer from the comfort of their homes. Therefore, after working with OpenMRS, I feel prepared for a life of civic engagement, plan to be involved with the community, and move my way upwards as a leader in the OpenMRS community.
Overall, my leadership skills have greatly improved as I have had the privilege to learn from inspiring leaders in the OpenMRS community. Their abilities to take on new initiatives and keep improving OpenMRS motivate me to pursue more leadership opportunities at OpenMRS. Working with OpenMRS was very open-ended, I was not just a developer but also a product manager since my team took the initiative of building the new website for the OpenMRS from scratch as the old one hasn’t been updated in over a decade and is not user friendly. Working with the website team, we set different goals for us every week and made a project timeline, and currently, we will soon be launching our beta site and migrating from our old website to the new beta site. Working with different stakeholders during this project prepared me to be organized with timelines and be strategic in my decision-making as this project required paying attention to the details from getting the user interaction right to providing the right functionality.
Another valuable outcome of working with OpenMRS was being able to take ownership of my work and present it at weekly meetings, quarterly showcases, and OpenMRS annual conferences. This made me feel like a true product manager as I was talking with key stakeholders and getting different feedbacks to list the requirements and features of the website. Moreover, I have always been passionate about diversity, equity, and inclusion (DEI), and recently I had a productive discussion with Jennifer, the community manager of OpenMRS, of how we can make OpenMRS more inclusive. There might be an opportunity coming that we will make a separate small team that will work on DEI initiatives, and I could get to lead that team. For example, I have some interesting collaboration ideas like connecting OpenMRS with several coding camps that serve underrepresented groups. This could help the students get some real-life experience before they apply for workforce. I am super excited to work on these initiatives later this year.
Overall, my interactions with the OpenMRS community made me feel welcomed and included and I feel very happy that I chose OpenMRS. I have developed strong relationships with the community members, and I wish to continue working with them and even try to pursue more leadership roles in the future.
0 notes
Text
Reflection
I really enjoyed learning and discussing FOSS communities. Through the challenges of working in an online environment, joining a FOSS community as a group, and learning important functionalities of my terminal with a partner, I have been prepared for a life of civic engagement.
The online environment has taught us to be more independent and accountable. This semester is very different than previous years because it was online due to COVID. It has changed the way me and my peers had to work and communicate in teams. In short, it has been a challenge, but it has also helped us develop critical skills and prepared us for a life of civic engagement.
Due to classes being online, I had to be more independent. When I ran into bugs I couldn’t always ask for help. In person I could have an informal meeting. Asking for help in person took less effort because I could easily see either my peers or my professor after class when I was having trouble. Now I have to troubleshoot the problem on my own or schedule a meeting which is a lot more similar to how a FOSS community works. It definitely was difficult to adjust to this initially. Especially when I was setting up my Ubuntu Virtual Machine.
Additionally, I had to be more accountable in and out of class. Paying attention was difficult especially when there are many distractions in one’s room as well as allocating time in order to complete all of your school work while also balancing one’s responsibilities at home.
Furthermore, I have felt significant burnout as the semester has gone on. It is really hard to get motivated especially with the lack of interaction with my peers and FOSS community. Motivation and accountability all contribute to one simply taking initiative in one’s own learning and participation. Our project is HFOSS which motivates me to contribute to this project. I want to help society and people who are less fortunate. Working online can be tough but I am more accountable and internally motivated which helps me prepare for a life of civic engagement.
My group and I have joined a HFOSS community--OpenMRS-- which has been a great learning experience. In relation to accountability, I was having an issue deploying a running instance of OpenMRS. I went through the Developer Installation Steps for OpenMRS and then I asked about my errors within the OpenMRS community. I then met with another contributor from the community to run and set up my project. I finally got it running. The other contributor is from East Africa which is really amazing because it shows how globally diverse the project is. This shows my commitment and relentlessness to my learning and contributing within an HFOSS environment. Overall, it has been a great experience joining the OpenMRS community and I hope to stay motivated, accountable and independent.
0 notes
Text
Getting Involved in HFOSS Project Community
1. What are the four models of open source communities? How does each work?
Four Models of Open Source Communities:
[Single vendor open source projects] - Owned by a single firm that derives a direct and significant revenue stream from the software. - Use of dual licensing: one under a open source license and the other under a proprietary license. - The firm/company/vendor sells the software to customers under a proprietary license - A company owns the full copyright of the software.
Examples of single vendor open source projects: MySQL by Oracle, Openbravo ERP by Openbravo S.L., Magnolia CMS by Magnolia Inc., and Alfresco DMS by Alfresco Inc.
[Development communities] - Initiated by an individual, a community, or a software company (devloping companies and individual programmers) - Contributions are made to the source code of the OSS project. - The developers make contributions for their own interest/motives or for their own needs or for the community's common goal. - The copyright of the software is shared among various stakeholders.
Examples are the Linux Foundation, the Apache Foundation, the Mozilla Foundation, or the Debian community.
[User communities] - The software users/end user organizations are the owners of the software product. - That is, software users are the copyright holders/the owners of the software product. - The vendor does not own the source code. - Users in the community typically share development costs, and help solve own problems.
[Open source competence centers] - For the purpose of promoting open source projects in general in a community - Usually coordinate initiatives of project - Provides consulting services for administrations and businesses - The community is usually led by board of directors of the organization. - Share Research and Publications regarding open source project. - Examples are: Swiss Open Systems User Group /ch/open (Switzerland) Open Source Business Alliance (Germany) CENATIC (Spain) Adullact (France) OSS Watch (UK) Open Forum Europe (Europe in general) E-Zest (USA)
summary of the four models of open source communities
2. What is forking? Why do projects fork? What prevents projects from forking? Can you find examples of projects that have forked?
- Forking is a process of producing a personal copy of someone else's project. - Because FOSS guarantees everybody the right to redistribute and modify the source code, developers can always take a FOSS project and move it in a new direction.
- Forking cannot be prevented by business models or governance systems. The key lies in appropriate resource allocation and careful community management. Managers must strike a delicate balance between providing a driving force while appeasing and unifying the community.
- Unix may be an example that has forked from Linux.
3. What is a Contributor Mountain? Is it essential join a project by going through the stages as outlined in the reading? What are some of the types of contributions/roles that exist in H/FOSS projects that you hadn’t thought about?
[Contributor Mountain: Users to Contributors] User: Literally makes a use of a product/software. Seeker: User gets a problem and looks for answers, look for broad community who wants to help for the problem/any types of issues of the product. Collaborator: Decides to help fix the problem themselves (e.g. file/report a bug, discuss experience of using the product) Contributor: Person a FOSS community actively relies on for help, May write code, documentation, refine bug reports, blog about it
[Examples/types of contributions or any roles that exist in HFOSS projects] - Bug reports - Translators: making translation for either user/developer documentation or the programming language translation - Documentation writers for the source codes/websites
[Another thing to keep in mind] - In a Contributor Mountain, descending from being a contributor to a collaborator is possible - Contributing to some portion/part of the project (e.g. translation) and try to find another bug - Being both contributor and collaborator/user is also possible
Remind that: - We are not necessarily required to be a user of the product. - One can understand the code -> use some portion of the product as a developer, not the whole software as a user. - One/multiple step jump is also possible
References:
https://opensource.com/business/13/6/four-types-organizational-structures-within-open-source-communities
https://quaid.fedorapeople.org/TOS/Practical_Open_Source_Software_Exploration/html/sn-Introduction_to_Free_and_Open_Source_Software-Climbing_Contributor_Mountain.html
0 notes
Text
Senior Seminar Reflective Post
My experiences in the Senior Seminar course have been rewarding in terms of what I have learned and how I have improved myself to be prepared for my post-graduation life. By participating in ethical discussions and working on my research project, I have learned how to think critically, look at social and technical problems from different angles, and apply analytical skills to my research topic.
What I value the most in this course are the class discussions. Not only did I get to know more about the technology world (e.g. self-driving cars, virtual reality, ethics in technology), but also I get to think about the social issues related to modern technology critically. When discussing these issues with other members in the class, I am encouraged to support my opinions, but at the same time, I learn to listen to others and adjust my perception as I see fit. Because technology can be applied to everyone, I also need to put myself in others’ shoes. For example, I may not consider privacy violations in social media a serious issue in my life, but for other people, personal information is important to them. Being a liberal arts student, I learn not to evaluate ethics using my personal experience, but instead, I evaluate ethics based on the rights and the benefits of the involved parties. There were several discussion topics that I was completely unfamiliar with, which made me pay extra attention to the readings so I can understand the questions and share my ideas. At the same time, there were topics related to software development that I was familiar with thanks to my work experience. These were the chances for me to share my knowledge and compare my understanding with others’. Moreover, for global issues such as government surveillance and algorithm bias, I tried to analyze how these issues would affect people from different countries instead of focusing on the US alone. These discussions allowed me to think about ethical problems locally and globally, which sometimes made me realize the significant differences between the society I live in and the world around me.
Image 1: The poster of my research project
Moreover, the work I have been putting into my research project has taught me tremendously about the importance of contributing to a pool of knowledge on a topic that is new to the technology world. When I started this project, it was mostly about my personal gain of knowledge and experience. However, after working on 5G mmWave for almost a year, my personal gain is still important, but I am more proud of myself because hopefully in the near future when these results get published, it will be the basis for further research and development, similar to how I relied on other research papers to get started on mine. One of the motivations that have led me to this project was how the development of 5G mmWave would help people’s everyday lives by improving the performance of several operations and enabling faster communication. While I did not have a chance to work on an HFOSS project, I am aware of the importance of my research topic to the general public and my responsibility to provide accurate results and analysis for future research. Sharing the knowledge I have gained and the materials I have collected about this topic to the class was also a rewarding experience for me, as I could contribute to the class members' learning experience in this course. Last but not least, as a Computer Science student who used to not know much about wireless networks and mobile technology, I hope that my experiences with this research project will motivate me to get out of my comfort zone in the future as a software engineer and a member of the society.
0 notes
Text
Choosing a ‘Good’ H/FOSS Project
The first step to contributing to an open source project is to find projects that interest you. Are you interested in providing a tool set for technical tasks? Or maybe providing humanitarian relief to people in need? It is important to select a project that you will feel fulfilled working on because that is what will drive you to contribute value and stay involved. A good H/FOSS project will include a clear name and mission statement that potential contributors can align with and want to support.
But, simply wanting to help the cause of a project, is not enough to determine that the project is right for you. Imagine that you, as a developer, join a project that you are extremely excited about. Early on, you find you have a few questions you need to ask the community before you can contribute meaningfully. What do you do if no one responds? Or what if it takes weeks for you to get a response? If this is your experience, you will quickly discover that you cannot contribute to a community that does not seek the help of new contributors. That is why the most important thing to do before you join that exciting project is to research its community!
Ask yourself the important questions about the project. Does the community encourage new contributors? Are there active, supportive chat channels? Is there documentation that supports your understanding of the project, its code, and how to get started as a contributor? Are there tasks intended for developers of your experience level? How organized is the development process? The opportunity to feel that you are valued and supported by a community should factor into your decision as much as your interest in the project itself.
Once you have answered these questions, you may find that it would be difficult to contribute to that project that looked perfect to you at first glance. And that is okay! That is part of the process of finding a project that you can devote time and energy towards while enjoying the experience. Fortunately, there are PLENTY of H/FOSS projects to choose from!
As I’ve gone through this discovery process myself, one of the main projects that has stood out to me is OpenMRS. OpenMRS is interesting to me because it is an HFOSS project dedicated to improving global healthcare access (especially in less developed areas) through improving access to medical databases. Since I am interested in pursuing medicine, I love that this project both aligns with my interests in computer science and with helping people medically. The OpenMRS community is large and is very active. They have many tickets to work on, extremely organized documentation on set-up, community expectations, and other general processes, and they are welcoming to newcomers. I even messaged the community to introduce myself as a student who was interested in contributing, to which they responded within 3 hours a welcome message and a suggestion on how to get started. As a developer who is new to contributing to open source, the support offered by the community is going to be imperative to my ability to make meaningful contributions!
0 notes
Text
Reflection on Fall Semester Senior Seminar
As part of the Fall semester of Senior Seminar, I was preparing for life after graduation. The course required us to get comfortable with a FOSS project and provide small contributions. Similarly, there were some hands-on activities that allowed to learn some tricks that is applied in the software industry. There were also readings that relate to contemporary software culture, practices, processes and models which were followed by discussions and reflections. This setup has undoubtedly helped in the development of necessary skills and knowledge to engage in community post-graduation.

One thing that I found interesting was the workings of a FOSS community - its formation, processes, incentives and motivations. I appreciated that some FOSS communities have a humanitarian aspect to it mainly HFOSS. During my internship over the summer, I have engaged with people who contribute to the community not for the sake of monetary profit but for its improvement. I was glad to find this connection with H/FOSS community where the main goal is to serve the user community. The community is driven by the needs of the user and there is no monetary incentive. It is either for the sake of the software itself or for learning. I recognized this from the various discussions we had over the semester and the readings. This was further solidified when I saw frequent occurring names in the various communication channels of Jenkins. I remember seeing one individual post something 9 years ago and still responding to it this year. This helped me appreciate the desire to contribute to one’s community. I also found a contributor who was from Germany, I believe. The global range of H/FOSS is extraordinary to me and I was able to learn the local-global connections from it.

Similarly, I was also exposed to collaboration. After we made our group of four, we had to constantly communicate to accomplish various checkpoints we had. Our group was maintaining certain procedures but we understood that we were lacking in some regard. We came up with solutions and applied it with much flexibility. For instance, for the sub-team work, the communication between sub-teams were lacking. 2 sub-teams were rarely on the same page. However, we decided to add each other in their Slack channels. This allowed for instantaneous communication and allowed sub-teams to remain in the same page as progress was being tracked. I believe our communication skills have also grown as a product of this course. Also, since we had to rotate sub-teams of 2 for each activity, we were also able to work with people from different perspectives and grow our empathy as a whole. As a team, we decided to tackle on Jenkins - which is a new concept to all of us. We were interested in Jenkins because it is a software being used constantly in the software industry and we thought gaining experience and knowledge about it would be very valuable. We have ended up being much more curious about it and have questions that will keep us engaged throughout next semester.
Overall, working with the FOSS community and various activities of the course has helped me and the team to learn various aspects of the software world along with the civic community as a whole. We were engaged in a completely new environment but were able to use our curiosity and communication skills to traverse through it. Also, as we progressed through, we were very adaptive in our practices to improve any aspect - individual or team. I believe we enjoyed the experience as a group and look forward to the next semester.
0 notes
Text
Reflective Blog Post 2: The Value of Working on a HFOSS Project
Now that it is already May, my two-semester senior seminar class is coming to a conclusion. It has been quite an incredible learning experience in many ways. Through the high-level technical readings/discussions, hands on technical exercises, and being part of a H/FOSS community, I have acquired many valuable skills.
Let's start with the readings and discussions. This year I have learned more about technology than I have learned in my entire life. It wasn’t just about reading, it was about analyzing scholarly articles and being able to look at things in from many different angles. Through this I learned how to listen effectively in the classroom, as sometimes people would have thoughts that I initially wouldn’t agree on. But being able to look at ethical situations in many different lights allowed me to really be able to value other opinions on the subject matter. One subject that stick out to me the most is the “Deep Fakes” topic. Through learning about this subject matter, it has effectively made me more aware than ever when I read articles or watch any videos on the internet. I now make sure that the websites I require information from are credible and reliable as I am aware of how easy it is for malicious creators to create fake websites and release fake news.
Even though this semester we did not have many hands-on exercises to work on, since we focused primarily on class discussions and working on our H/FOSS projects, the technical work of the hands-on exercises from the first semester proved to be very valuable to me. Through these exercises, I was able to work side by side with some of my classmates that I did not know at all prior to this semester. This has taught me how to manage time with other people which has greatly improved my ability to work in small groups. Another valuable skill gained from the technical work is that I hands on learned how to distinguish credible sources of information from unreliable sources. A lot of the time my partner and I would get stumped with some kind of error produced in terminal on Ubuntu. This would cause us to google the error and click on the first result and try whatever it said. After making this mistake a few times, we realized that a lot of the times we were clicking on sources that were outdated and therefore unreliable. We learned that in order to find a reliable source we need to read through a few different sources, and then pick the one that has the most logical solution to our problem.
I said it at the end of last semester and I will say it again now, having the opportunity to work on a H/FOSS project has been by far my most valuable experience at Dickinson. I believe that my personal responsibility skills have greatly improved throughout the semester, as I had to take initiative to work on the project outside of class. It was unquestionably a huge adjustment at first, but throughout the semester, I learned how to take initiative in a group environment in order to get work done on the project. I did this by being the first person to reach out to the other members to schedule time to meet, or to check in on their weekly progress so that we could make sure that we were all on the same page. Through this, my ability to work in small groups has greatly improved. I also learned how to apply democratic principles within a small group setting from day one when we all collaborated to select our project. Throughout the year I have become more comfortable working with others. I am no longer afraid to seek help from my peers, as well as express my thoughts to my teammates about my concerns. My overall desire to contribute to the community has also significantly increased as I was able to make some small contributions to Audacity. It was definitely a very satisfying feeling even just making a contribution as small as closing out on old bug ticket, but the appreciation the other developers gave me was priceless and it made me even more eager to contribute.
I know that the skills that I have acquired this year are skills that I will take with me to my future careers as well as future life experiences in general. I also hope to continue to contribute to HFOSS projects at some point in my future.
0 notes
Text
Interactions with OpenSource Communities
In reflecting on the last year of working on a free open source project, and an HFOSS community I feel like I much better understand the uses of community-based learning, and why it is important for a school such as Dickinson College to help young computer scientists to contextualize their education within service to a community.
For my HFOSS project, I worked with OpenMRS, an open source medical record system used in many hospitals throughout developing countries. This was an incredible opportunity to take the skills I had been learning over the past four years and apply it to a specific project which needed volunteers, and also to move away from trivial homework assignments, and into a product which serves real people throughout the world.
If I was asked to summarize my experience in one word, I think it would be “challenging”. My teammates and I were new to working on these types of projects and picked OpenMRS because we felt a strong connection to their mission statement. After nine months of work on it however, we now understand how difficult this process was, and what a steep learning curve we attempted to scale. I am thankful for everything I learned, the ability to persevere through difficult and hard to understand technologies and problems, and most of all I learned to organize an manage a project with no true structure or steps. Thanks to professor Brought and my three teammates for their work, advice, mentorship, and support.
0 notes
Text
Readings 4/17
Readings:
(de Silva) http://timreview.ca/article/399
(Paul) http://www.slate.com/articles/technology/future_tense/2014/09/hfoss_software_for_humanity_computer_science_students_solve_real_world_problems.html (Wolff - found for this week’s readings) http://johnwolff.name/tag/humanitarian-foss/
======
This week's readings were by far the most enjoyable, mostly because they reminded me of my prior academic experience prior to studying computer science. I majored in Economics in undergrad with a focus on International Development, and my senior thesis was on the impact of Information and Communication Technology on Economic Growth - I reviewed emerging studies on how technological developments such as mobile apps were affecting economic growth in developing countries. Such mobile apps in these studies were very similar to the ones that students developed in Paul's article, and though the results of my thesis found the effect of such apps inconclusive, I'd like to think that advancements by projects like HFOSS have changed this. I readily agree with many, if not all, of the reasons Paul lists of how students can benefit from getting involved in FOSS: helping students learn more about the true nature of programming and providing experience on submitting code and documentation by certain deadlines were a couple of my favorites. I think the most convincing though is provided by Wolff, in that HFOSS simply has intrinsic purpose; students hardly have to wonder what the code they write has to do with them, because they know it has everything to do with helping people alleviate their suffering. I read de Silva's article before Paul's, so one major concern I had when reading Paul's article was regarding the quality of the students' submitted code. I agree with de Silva in that with HFOSS projects, there really is no room for error - the product cannot afford to fail when providing its services in disasters. I don't intend to dismiss the skills college students possess, but it seemed a little risky to leave the development of HFOSS projects to students who are still learning their trade. But I was much more assured when reading in Paul's article that teams at projects like Sahana revew the code before including them into the system; that makes much more sense and aligns very much with the spirit of open-source. What was most interesting was the ways in which open source aligns with humanitarian values. In particular, the values of not discriminating by access and of empowering local capacity are highly regarded in humanitarian issues. I used to work for a humanitarian non-profit organization that trained women in rural areas of Indonesia how to sew and sell handmade bags. The organization also provided workshops that taught women how to run their own businesses, and encouraged them to find ways to make their businesses best work for their needs. Anyone in the villages was welcome to learn; there were no restrictions or fees. I never noticed that these values of non-discrimination, open access, and empowerment to local capacity are also found in FOSS; anyone and everyone can participate in open source, and developers are encouraged to modify source code in ways that best benefit their needs. Recognizing these kinds of connections is, for lack of a better word, cool; it makes me appreciate FOSS much more.
0 notes
Text
Final Reflections
Over the past couple of days, now that my time as Dickinson student comes to a close, I’m asking myself: Why Dickinson, what am I really learning from my experiences on campus and in the classroom? Liberal Arts colleges, specifically Dickinson, offer an unparalleled experience for young students. By focusing on learning beyond the classroom, it becomes easier to see how ourselves as individuals impact our community and how can we leverage our situation to better the lives of people across the world.
FOSS and HFOSS are manifestations of this mantra; how can a community of programmers come together and use our abilities and resources to make an impact. FOSS is not only beneficial for those using the software, because free stuff is awesome, but it impacts those who contribute in a more significant way. Even as a beginner on a project, it is easy to see how many different people from all over the world communicate and collaborate for others. FOSS is a great introduction to post graduate professional work and it helps create a social foundation for working with all kinds of people.
The work in the classroom has been extremely fun and engaging and I believe that only working with FOSS provides this kind of experience. The communications skills required to be an effective classmate and group member while working as a small sub team scales directly to FOSS as a whole. It is always important to treat everyone as an individual and make sure that progress is being made together.
Another positive experience while working with FOSS is the process of learning about the community and the software involved. It is important that one puts themself outside of their comfort zone, and FOSS is a great opportunity to engage with new people and technologies. There is always something to learn in FOSS.
0 notes