The DGL104 Research and Reflection Journal documents weekly activities and reflections throughout the rest of the semester, offering a structured record for academic growth.
-
Week 8
- Activity 1 - Read the Research and Reflection assignment
- Activity 2 - Research a new language (Lua)
- Activity 3 - Write a user story (YouTube)
- Activity 4 - Choose a language for community code
- Activity 5 - Star GitHub topics repositories of interest
-
Week 9
- Activity 1 - Read the Community Code Assignment
- Activity 2 - How to contribute to open source
- Activity 3 - Find Potential Projects to Contribute to
- Activity 4 - Explore community connections
- Activity 5 - Identify issues to support
-
Week 10
- Activity 1 - Assess external community contribution Guidelines
- Activity 2 - Contribute to external community
- Activity 3 - Contribute to pattern library
-
Week 11
- Activity 1 - Read through pattern library issues
- Activity 2 - Continue Contributions to external community
- Activity 3 - Contribute to pattern library
-
Week 12
- Activity 1 - Community Code assignment links
-
Week 13
- No Class
-
Week 14
- Reflection on Community code project
- Reflection on Research and Reflection Journal
Make sure to visit the description of the Research & Reflection assignment on Brightspace. You should read the assignment description and the rubric in detail to familiarize yourself with expectations.
In this assignment, we have to write about what they do each week in their class. There is a need to include everything we learn and reflect on it. The goal is to show our progression and learnings. Also, we have to make sure to organize the writing well and include references when needed for better and informative journal. The rubric grades the Research and Reflection Journal based on how well the content is write and organize. It checks if the entries are detailed and reflective and include proper references. Also the journal should be easy to follow with supportive statements and correct citations. Created the github repo on time is also important. Scores range from "Needs improvement" to "Excellent" for each part, deciding the overall grade.
This activity conducting research on either Processing, Haskell, or Lua and responding to the following questions.
- What is the language used for?
- Who uses the language?
- What are some useful resources?
- Why are these specific resources useful?
About Lua
Lua is a versatile and lightweight scripting language that's great for customizing things like games and software. It's powerful, fast, easy to use, and can be embedded into different applications. Lua is utilized by video game developers for scripting, embedded systems engineers for efficiency, and software developers for configuration and scripting. Some examples of companies using Lua are Adobe, World of Warcraft, Warframe, and CISCO systems. Lua has some excellent features which makes it perfect. It is a free, portable, fast, robust, and simple embeddable language (Lua: About, n.d.).
Lua is commonly used in video game and game engine development, network programming, and industrial applications. Some of the popular examples are:
- Games: Warframe, World of Warcraft
- Network programs: CISCO Systems, Nmap
- Industrial programs: Adobe Lightroom , MySQL Workbench.
In video game development, Lua is a popular choice, known for enhancing performance and contributing to games like World of Warcraft and Warframe. It also plays a crucial role in network systems (CISCO Systems, Nmap), industrial programs (Adobe Lightroom, MySQL Workbench), and embedded programming, offering efficiency and seamless integration with various languages. Many companies rely on Lua, showcasing its broad applicability in different industries.
These sources offer complete with well-organized content to make learning Lua easy.
- Lua Programming Wiki (Wikipedia) - Provides comprehensive overview, syntax reference, features, applications, history, and related technologies of Lua.
- Careerkarma Blog - Offers industry insights, real-world examples, career paths, trends, community support related to Lua.
- Lua Documentation: Official reference with language specification, examples, version-specific information.
Pick out an app that you use regularly and choose a feature to write a user story about. You may begin by writing a relatively general user story, but you should endeavour then to write a collection of more specific user stories for the same feature. Consider writing about different contexts, or different uses (i.e. users with different motivations). You can also try to write some acceptance criteria (i.e. a checklist of qualities or properties that should be present in the feature for it to be “accepted”).
For my app user story, I choose YouTube. It is a popular online video-sharing platform where users can upload, share, and view videos. It offers a diverse range of content, including music videos, tutorials, vlogs, and more. I use this app regularly for education and entertainment purpose.
- "As a user, I can watch videos on the platform."
- "As a user, I can search for specific videos using the search feature."
- "As a user, I can subscribe to channels I enjoy for regular updates."
- "As a user, I can like and comment on videos to engage with content creators."
Acceptance criteria for the last of these user stories may include:
- The video player should load smoothly and play videos without significant buffering delays.
- The search feature should provide accurate results based on the user's entered search query.
- The channel subscription feature should be straightforward and easily accessible.
- The "Like" button should be visible on the video player interface, and clicking it should increment the video likes.
The Community Code project requires that you spend time writing code in service of an open source community. The code you write need not necessarily be shared with that community, but you should write code with the community in mind. What code you write will be determined by course content, community needs, and your choice of programming language.
For this task you should spend time thinking about what language you might like to work with for the remainder of this course. I recommend that you consider using a language you are already familiar with and preferably one that is closely associated with mobile or web app development. This is also an opportunity to learn more about your chosen language, so think of it as a learning opportunity.
The language I selected for the community code project is Javascript. Although I do not have much experience in this language but as, I am learning Javascript as one of my courses this semester, I can work on it with the fundamental knowledge. It's a practical way for me to apply what I'm learning in class and get hands-on experience with JavaScript by working on this project.
Explore github and give stars is a new practice, I have learnt to gain the knowledge regarding different open source communities and their latest trends. Also, give stars to the interesting topic will be useful for us in future to stay updated for potential learnings.
To complete this tasks, I visit to:
-
What is one interesting thing that you’ve learned from researching about programming languages and from reading other students’ posting about programming languages in response to the first activity?
Learning a new language is always fun and exciting. With this research, I learn a very new programming language with many useful features of it. I would love to learn more practical approach of this language in future.
-
What other programming languages might you consider to work with for DGL 104? What are your second choices, and why?
Since JavaScript is my primary choice, I'm considering Kotlin, PHP, or Lua as my second option. Lua caught my interest after some research due to its utility. Additionally, PHP will be part of my upcoming semester, while I've already gained some basic knowledge about Kotlin through my current DGL-114 course.
-
What did you find most interesting when examining repositories on GitHub? Is there anything that surprised you, or that you didn’t expect? What similarities are there across some of the repositories you’ve starred?
Looking through GitHub projects was fascinating. I was amazed by the wide range of stuff people are working on. Even though they're all different, the ones I liked usually with clean code and clear instructions. It's been knowledgable to see what others are up to and learn from it.
Lua (programming language). (n.d.). In Wikipedia. https://en.wikipedia.org/wiki/Lua_(programming_language)
Careerkarma. (2022, Feburary 4). Who Uses Lua?. https://careerkarma.com/blog/who-uses-lua/
Lua Documentation. (n.d.). https://www.lua.org/docs.html
Make sure to visit the description of the Community Code assignment on Brightspace. You should read the assignment description and the rubric in detail to familiarize yourself with expectations.
The assignment encourages practicing good coding by participating in two open-source communities and consists of two parts. Although contributing to both parts are mandatory but for code only one part can be involved. Also both the parts should be completed simultaneously, not sequentially.
Part 1 - Contribute to a real open-source community by improving code documentation, answering questions, creating tutorials, translating code, or working on GitHub issues. Fork the project, make changes, and document your contributions.
Part 2 - Contribute to a pattern library for DGL 104 students, involving software design and architecture patterns. This includes creating a README, CONTRIBUTING.md, and managing contributions through pull requests and issues.
The rubric evaluates contributions in two parts: Part 1 for external open-source communities and Part 2 for an in-house pattern library. It covers documentation, code organization, user-facing activities, and commits, with a maximum score of 52 points. Overall scores range from "Excellent" to "Poor," reflecting engagement and contribution levels.
The open source guide offers a thorough and easily understandable content, organized into distinct sections. Each section presents something new for me as, I do not have knowledge of these since I previously had no familiarity with the topic.
Why to Contribute to open source?
This part explains how anyone can help improve open source projects, not just by coding, but also by doing things like writing, designing, or organizing. It suggests finding a project you like, checking if it's open to new ideas, and then following some steps to suggest changes or improvements. It emphasizes that everyone's contribution is valuable, no matter their skills or experience, and encourages people to get involved.
What it means to contribute?
This part shows contributing to open source means helping out with software that anyone can use and modify for free. It's like joining a team to make something better, whether by fixing bugs, writing instructions, designing graphics, or just chatting with others.
Orienting yourself to a new project!
This section give knowledge about how joining a new open-source project is like joining a new group with its own leaders and members. Each project has documents explaining how to contribute and rules for behavior. People use tools like issue trackers and chat channels to work together. Understanding these basics helps you contribute effectively.
Finding a project to contribute to!
This section give information regarding open source contribution at distinct levels during the project. Also, there is a checklist for before starting of every project with range of resource for new projects work.
How to submit a contribution?
This part provides information that contributing to open source it is useful to communicate clearly, keep it short, and be patient. Also, by following guidelines when submitting your contribution and respect others decisions to acheive a meaningful contribution to open source projects.
What happens after you submit your contribution?
This section give knowledge that after submitting the contribution to an open-source project, four things can happen: no response, requested changes, rejection, or acceptance. (Open source Guide)
-
Task 1 - Identifying and selecting open-source repositories from platforms like Good First Issues, Up for Grabs, CodeTriage that align with your interests and skillset.
-
Task 2 - Analyzing the selected projects by reviewing available issues, understanding their requirements, discussing potential solutions with the community, and preparing contributions such as code changes or documentation updates.
-
Task 3 - Using the checklist helps figure out if any of the projects are a good match. This makes it easier to pick three projects that are relevant to us.
-
Task 4 - Take a screenshot when you have completed all checklist questions.
My project choices:
-
Project 1
-
Mermaid is a tool that helps you create diagrams and charts using simple text commands in a language similar to Markdown. Its main aim is to make it easier for documentation to keep pace with the progress of development projects. . It offers various diagram types, real-time editing with a Live Editor, integration with development workflows, security measures, and has a supportive community. It won the JS Open Source Awards in 2019 for its innovative use of technology. Here is the repository of this project Mermaid.
-
-
Project 2:
-
Swag-for-dev is a curated list of verified swag opportunities for developers. Users can contribute to the list, and the project encourages transparency and engagement. It offers a supportive community, donation options for hosting costs. Here is the repository of this project Swag-for-dev.
-
-
Project 3:
-
Storybook is a frontend workshop aimed at building UI components and pages in isolation. It serves as a tool for UI development, testing, and documentation. With support for various frameworks like React, Angular, Vue, and others, Storybook enables teams to develop and showcase UI components effectively. Storybook.
-
- Research community connections and Identify primary community platforms (Discord, Slack, Zulip) for open source projects.
- Spend some time familiarizing yourself with the community.
- Follow as many relevant links from the repository back to potential communities that you can find (this might include looking carefully at maintainer GitHub profiles, websites and socials).
- Write a summary of your discoveries in your Research and Reflection Journal.
In looking for connections with other communities related to my projects, I checked out places like its GitHub page, the profiles of people who work on it, any websites or social media they use, and places where they talk about the project or help each other out.
Mermaid - Mermaid, the JavaScript-based diagramming tool, is supported by its GitHub repository, a Discord community , its documentation website and Live Editor for its feature. These platforms facilitate collaboration, support, and community engagement around the project.
Swag-for-dev - This project is supported by a diverse network of communities, including Slack and Telegram for real-time discussions, GitHub Discussions for project-related conversations, and features on platforms like Changelog Nightly, Hacker News, Reddit, and Product Hunt.
Storybook - The Storybook community thrives across platforms like GitHub Discussions, Discord, Twitter, Youtube, Medium with these channels ensure active engagement, driving the continuous growth and adoption of Storybook. With support from various frameworks and generous sponsorships, Storybook offers a welcoming space for developers to collaborate, learn, and innovate.
These are the steps taken to complete this activity:
- Visit the GitHub repository for each of the three projects identified in the previous activity.
- Open the "Issues" tab within each repository.
- Take note of the different tags available under the "Labels" dropdown menu.
- Look for tags such as "good first issue" or "help wanted" among others.
- Read through the issues tagged with "good first issue" or "help wanted" (or any other interesting tags).
- Identify at least one issue that you feel you could contribute to.
- Write a summary of the issue in your Research and Reflection Journal. include the URL of the issue, a brief description of the problem, and how you think you can contribute or where you would start.
- Summarize any discussions already present in the issue between community members.
To complete this activity, I thoroughly reviewed the issues in my chosen project repositories, filtering them by labels such as "help wanted" and "good first issue." From various available issues, I selected these three that align with my skills and interests.
-
Project 1 : Mermaid
Here you can find the issue - Syntax Comparison for various charts #1924
Label : Documentation, Contributor needed, Question
-
Issue description - The issue was opened by user "toamitc" on Mar 1, 2021, expressing a need for a guide that provides a comparison of syntax supported between different types of charts. Specifically, they mentioned that while sequence diagrams support "-->>" flowcharts do not.
-
Contribution - Research syntax differences between chart types, compile a comparison guide, contribute to documentation updates, engage with community for feedback, and potentially suggest solutions for integration into existing documentation.
-
Conversations - Contributor acknowledged the idea and mentioned that it could be a valuable addition to the documentation. They suggested that the user could contribute to this effort if interested.
-
-
Project 2 : Swag-for-dev
Here you can find the issue - Add Applause-button to swag items #104
Label : enhancement, good first issue, help wanted, in progress
-
Issue description - The issue was opened by user "plibither8" on Oct 9, 2018, suggesting the addition of an applause button to swag items. This feature would allow users to express their approval or appreciation for a swag item by clicking on the applause button.
-
Contribution - Implement the applause button feature, integrate the library, modify swag item components, and update sorting functionality.
-
Conversations - They discuss implementation details and offer assistance, while newcomers inquire about the issue's status and express interest in contributing.
-
-
Project 3 : Storybook
Here you can find the issue - More clarity on what including compodoc does?#24944
Label : angular, cli, documentation, good first issue, help wanted
-
Issue description - The issue was opened by user fireflysemantics on Nov 21, 2023, who requested more documentation on what including Compodoc does in the Angular CLI. The user noted that when setting up an Angular project with Storybook, the CLI asks if users want to use Compodoc, but there isn't enough clarity on its functionality.
-
Contribution - There is need to work on improving the clarity of Compodoc's documentation within Angular CLI.
-
Conversations - The labels like "good first issue" and "help wanted," this presents an accessible opportunity for newcomers to contribute. The ongoing conversation revolves around understanding Compodoc's role, with key contributors providing insights into its functionality and interaction with Storybook.
I decided to work on the issue of storybook project for contribution in my community code part 1.
-
-
What is the most surprising thing that you’ve learned about open source development and/or open source communities during your research this week?
The incredible level of collaboration of people from different background into a particular community. Also, I learnt about the overall process of PR, issue searching and much more in this week which is a great learning.
-
What types of open source projects do you find yourself most drawn to? Is there an obvious connection between them?
I am mostly interested in open-source projects that involve JavaScript. Since I am familiar with JavaScript, I find these projects more acheiveable and meaningful contributions for contributing. I have more interest in storybook and mermaid.
-
Is the programming language that you chose last week still the right choice? Should you consider alternatives?
Although, I learnt about a lots of new language but, for now, I am sticking with JavaScript because I haven not practiced other languages enough to feel comfortable with them yet. Since I am already familiar with JavaScript and actively practicing it, I want to continue focusing on it for now.
How to contribute to open source. (2024, February 8). Open Source Guides: (https://opensource.guide/how-to-contribute/)
Good First Issues (https://goodfirstissue.dev/)
Up for Grabs (https://up-for-grabs.net/#/)
CodeTriage (https://www.codetriage.com/)
The task is to see if the project has instructions on how to contribute. If it does, read them carefully and follow the steps. If not, decide if still contribute can be done or try to learn more about the project's community. There is no need to submit any code yet but making sure to acheive the understanding of how to contribute.
Storybook provides detailed information about contribution in their contribution guide and CONTRIBUTING.md. Also they provide a lot of useful information regarding their supportive communities and platforms with the information of their sponsors in their Readme.md. They also provide contributor Covenant Code of Conduct information with this.
There is a step by step procedure which one need to follow to participate as a contributor which include in contributing.md. They encourage newcomer to join them in contributing as their community is a harassment-free experience for everyone. They describe different ways to contribute in their contribution guide.
Overall, it seems like Storybook has put effort into creating a supportive and inclusive environment for contributors.
I have chosen an issue from the Storybook project, for which I have forked and cloned the repository to my local machine. Subsequently, I have created a new branch dedicated to addressing this particular issue. My focus is on conducting thorough research and preparing comprehensive documentation for the identified issue. I have initiated the process of gathering necessary information to provide a well-documented and structured approach towards understanding and potentially resolving this problem.
I have chosen the implementation of the Singleton pattern from the pattern library for this issue "Add React Native implementation for Singleton pattern #8" labelled with good first issues and code which can be found here Issue 1. I give request to got this issue assigned to me.
What is the hardest/most challenging thing you had to do this week for DGL 104? How did you overcome this challenge?
For me, it is learning and exploring everything new is difficult, as it took me a lot of time to understand everything. Also, the challenging part is to decide contribution provide for project, search a issue and all that things.
Project Repostory - Storybook
The issue , I request for got assigned and then I just request for another issue to got assigned. Basically I am particpating in both coding and documentation part for the internal community project. The internal community issues in which I am participated are "Write definition of Template pattern in README.md #66" labelled with research, good first issue and which can be found here Issue 2 and the implementation of the Singleton pattern from the pattern library for this issue "Add React Native implementation for Singleton pattern #8" labelled with good first issues and code which can be found here Issue 1. I forked and cloned the project into my machine already and begin working on first issue.
To work upon the external community issue, I forked and cloned the original repository into my machine and create a different branch with name "compodoc_info" and also one more file to show how and what I did for the contribution in this issue. I choose storybook to work upon in which, I selected this issue More clarity on what including compodoc does? #24944. I ensure to provide a clear documentation to get more clarity on compodoc for which, I continued my researched and write the definition of this tool into my readme file and then provide all the necessary information with reference in the readme.md file.
To work upon the pattern library assigned issue, I create different branch for both of them to begin working. For first issue, I establish a branch with name react_native_development and made two files which are "singleton.js" and "singleton_readme.md". Also, as we are three who is going to work on this particular issue so, we also made a contribution.md file as well to showcase our parts for this issue contribution.
For the second issue, I initiated a new branch named "template_pattern_docs" and crafted two essential files which is "template_readme.md" and "template_contribution.md". These documents serve to illustrate my work and contributions towards addressing the specified issue.
Determine if your chosen programming language is OOP capable. To what extent does it support OOP? Fully, or partially? Does it support any other paradigms? Wikipedia has a good list of multi-paradigmatic programming languages.
I choose javascript and it Partially capable of object-oriented programming (OOP). It supports OOP concepts like objects, inheritance, and encapsulation, but its implementation differs from traditional class-based languages. JavaScript also supports other paradigms such as functional programming.
- I choose an issue to work upon by filtering with different labels in different project but, I selected storybook to work upon in this issue More clarity on what including compodoc does? #24944.
- Then, I forked and cloned the project into my machine.
- After that, I establish a branch with name "compodoc_info".
- Subsequently I made two files "compodoc_readme.md" and "compodoc_contribution.md".
- Then, I commit and push my work into Github.
- I choose the issues to work upon and request to get assigned to work upon these issues Add React Native implementation for Singleton pattern #8 and Write definition of Template pattern in README.md #66 .
- Then, I forked and cloned the project into my machine.
- After that, I establish a branch with the names "react_native_development" and "template_pattern_docs".
- Subsequently I made two files for both issue.
- I got request to change some content in both issues which, I elaborate in my contribution.md file.
- Then, I commit and push my work into Github.
I create a new contribution file which elaborate our group work as we got a feedback on the pull request to drop it from the pull request work and add in Reflection Journal
Taking part in Contribution of the open source projects on GitHub was completely new to me and initially it is hard to understand the concept of how it works, but then, with every week's activities and content, I learned a lot from this project. Starting up with reading the content of every week, watching tutorial works wonders to work upon the project. I think contributing means understanding the problem you want to help with and doing some research to find solutions. With this, I gain knowledge regarding forking, cloning, branching, pull request, project management and much more. I believe this whole process is so rewarding and enjoyable as, when we dive deep into it, there is a lot more to get.
In community code part 1, I was totally confused and nervous about picking a problem for the community project, but the step-by-step instructions helped me understand what to do. I experienced growth in my learning of how to find good sources and include them in my work correctly. The filters for labels are really helpful to select a desired issue for working. I have seen improvement in my overall development in every aspect, not only the problem-solving but in reasearch as well as Decision-making skills. I learned about a completely new concept and do research on it for my issue in this part which is compodoc documentation. I want to do some practical work using this to get more information regarding this topic.
Talking about community code part 2, I learned about different pattern designs. Also, I contribute for one of them to give some information on it, as a part of one of the issue. This part is fascinating and rewarding as well. Getting feedback on work from peers specially to make the work more efficient is my favourite part here. Also, I learn about singleton and react-native while working on the solution for the issue of this part. React-native is a language with which, I am totally unfamiliar but, I research a lot to gain some useful information regarding it and work a lot to know how it is used for singleton pattern. I believe it is the best approach to gain some knowledge of a topic by writing it down and presenting others which, I usually do for getting insight of the concept as, I love to write.
I learn about the importance of a informative and properly structured with clear content journal from this project. The Reflection journal makes the process of understanding of this project easier as it contains all the content in an organized way so that, I can analyse my work and knows where, I am lacking. Furthermore, I have come to understand the significance of recording work while simultaneously accomplishing tasks.