Skip to content
This repository has been archived by the owner on Nov 7, 2024. It is now read-only.

nic-dgl104-winter-2024/rrj-oakintunde

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 

Repository files navigation

rrj-oakintunde

Research and Reflection Journal The DGL104 Research and Reflection Journal documents weekly activities and reflections throughout the rest of the semester, offering a structured record for academic growth.

Table of Journal Content

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 the external community
  • Activity 3 - Contribute to pattern library

Week 12

Activity 1 - Community Code assignment links

Week 8 February 26th - Read the Research and Reflection Assignment

Make sure to visit the description of the Research & Reflection assignment on Brightspace. You should read the assignment description and the rubric in details to familiarize yourself with expectations.

1

I started delving further into functional user requirements today, with an emphasis on user stories and how they influence software development. I began by learning the basic idea behind user stories, which are succinct, user-focused summaries of software features presented from the viewpoint of the final user. These narratives outline the functions that the user requires the system to do and act as the foundation for functional user requirements.

2

As I learned more, I came to understand how crucial it is to write user stories that are precise, quantifiable, and unambiguous. Every user narrative has a goal, an action, and a user role in an organised manner. Stakeholders benefit from this clarity, especially developers and designers. efficiently assimilate the demands and expectations of the user. Additionally, user stories are frequently written in a style that promotes better communication among team members who are technical and non-technical.

3

The idea of the "INVEST" criteria for user stories—Independent, Negotiable, Valuable, Estimable, Small, and Testable—rose to prominence during my education. By following these guidelines, user stories are guaranteed to be clearly defined, and manageable, and greatly enhance the system's overall functionality. Observing how these ideas improve the effectiveness of agile development methods was fascinating.

4

I then looked at how functional user requirements translate from user stories into comprehensive functional specifications that serve as a roadmap for the development team. The behaviour, interactions, and functional needs of the system are described. features that are determined by the user stories. During this stage, features are prioritised according to business value, approval criteria are defined, and user stories are broken down into manageable tasks.

5:

The iterative process of establishing functional user requirements was one of the most important lessons I learned during my learning process. Ensuring software alignment with user needs and expectations requires ongoing feedback loops, stakeholder interaction, and requirement modification. Agile approaches frequently use this iterative approach, which encourages flexibility and responsiveness to changing requirements.

In summary:

To sum up, I have learned a lot about functional user requirements, particularly how user stories become comprehensive functional specifications. I now recognise the value of clear and succinct communication through user stories, the collaborative nature of establishing user needs, and the software development projects' successful iterative refining process. My understanding of the delicate balance that must be struck between user-centric design and technical implementation in order to create effective software solutions has grown as a result of this adventure.

Activity 2 - Research a new language (Wyvern)

  • What is the purpose of the language? The purpose of the programming language Wyvern is to create safe and modular software systems. It focuses on giving language-based security significant support so that developers can make reliable and secure apps.

  • Who uses the language? Researchers and developers interested in language-based security, secure software design, and composability are the main users of Wyvern. It's also used in academics to investigate secure programming language principles for educational reasons.

  • Which resources are helpful? To get started with Wyvern, visit the official website at wyvernlang.github.io, which provides extensive documentation, tutorials, and starting points. Furthermore, the source code, examples, and community debates can be accessed through the GitHub repository (github.com/wyvernlang/wyvern).

  • What makes these particular resources valuable? An organised introduction to Wyvern, including its features, syntax, and design concepts, may be found on the official website. It provides as a foundation for comprehending the language's potential and learning how to utilise it efficiently. In addition, the GitHub repository is a great resource for learning and development because it provides real-world examples, issue tracking, and chances for community participation within the Wyvern community.

"Are you familiar with Wyvern? It is a programming language with an emphasis on composability and language-based security. Wyvern is frequently used by researchers, developers, and educators who are interested in safe software design and instruction. Visit the official Wyvern website for tutorials and documentation, and sign up for the GitHub repository to access samples and engage in community outreach."

Activity 3 - Write a user story (Spotify)

For my app user story, I choose Spotify.

  • "As a user of the "Spotify" app, I can create and manage playlists to organize my favourite songs".
  • "As a user of the "Spotify" app, I can discover new music through curated playlists based on my listening preferences."
  • "As a user of the "Spotify" app, I can collaborate on playlists with friends to create shared music experiences."

Acceptance criteria for the last of these user stories may include:

  • The app includes a "Create Playlist" button in the playlists section.
  • The app provides visibility into who contributed which songs to the collaborative playlist.
  • The app provides options to save or follow recommended playlists for future listening.
  • The app allows me to delete or rename playlists as needed.

Activity 4 - Choose a language for community code

Outcome

Examine Java for the Community Code Project. After giving the language selections for the Community Code project some thought, I'm thinking of learning more about JavaScript. Even though I've done school projects on it for the past two years, I think there's always more to learn, especially in a setting that focuses on the community.

The flexibility and extensive use of JavaScript are one particular reason I'd like to learn more about it. JavaScript is perfect for creating scalable and reliable apps because of its large ecosystem and abundance of tools and frameworks. Furthermore, improving my knowledge of Java would help me both personally and in terms of my ability to make more meaningful contributions to open-source projects in our community.

I'm interested in hearing your opinions and recommendations on this!

Activity 5 - Star GitHub topics repositories of interest

Exploring GitHub and giving stars is a new practice, I have learnt to gain knowledge regarding different open-source communities and their latest trends. Also, giving stars to interesting topics will be useful for us in future to stay updated for potential learnings.

To complete this task, I explored the following:

Reflections

Studying programming languages and reading other people's postings has taught me a few intriguing things, like how many different languages there are, each with special advantages and uses. Python appeals to me for DGL 104 because of its flexibility, ease of learning, and plenty of libraries. Because JavaScript is so widely used in web development and can be used to construct interactive interfaces, it would be my second option. I was aback by the wide variety of projects seen in GitHub repositories, ranging from straightforward tools to intricate systems. I discovered that using contemporary frameworks or tools, actively contributing to the community, and having well-documented code were all common.

References:

Week 9 (March 5)

Activity 1 - Read the Community Code Assignment

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.

Result

There are two components to this assignment, which promote practising effective coding by getting involved in two open-source groups. While it is required to contribute to both sections, only one section can be involved in the code. Also, rather than finishing each section in turn, both should be finished at the same time.

  • Part 1: Enhance code documentation, respond to inquiries, write tutorials, translate code, and work on GitHub problems to make a genuine contribution to an open-source community. Make improvements, fork the project, and record your input.
  • Part 2: Add to a library of patterns related to software design and architecture for DGL 104 students. This entails generating CONTRIBUTING.md and README.md files as well as overseeing contributions via pull requests and problems. Two parts of the rubric are used to evaluate contributions: Part 1 is for external open-source communities, while Part 2 is for internal use.

Activity 2 - How to contribute to open source

There are two components to this assignment, which promote practising effective coding by getting involved in two open-source groups. While it is required to contribute to both sections, only one section can be involved in the code. Also, rather than finishing each section in turn, both should be finished at the same time.

  • Part 1: Enhance code documentation, respond to inquiries, write tutorials, translate code, and work on GitHub problems to make a genuine contribution to an open-source community. Make improvements, fork the project, and record your input.

  • Part 2: Add to a library of patterns related to software design and architecture for DGL 104 students. This entails generating CONTRIBUTING.md and README files as well as overseeing contributions via pull requests and problems.

Two parts of the rubric are used to evaluate contributions: Part 1 is for external open-source communities, while Part 2 is for internal use. Improvements, bug fixes, and performance enhancements in open-source projects about artificial intelligence and natural language processing.

  • Documentation Improvement: The success of open-source projects depends on having thorough and understandable documentation. I can help by improving documentation, penning tutorials, and producing user manuals to help projects become more approachable for beginners.
  • Community Engagement: Maintaining open-source projects requires creating a vibrant and friendly community. I would like to help with community management tasks including planning events, leading conversations, and coaching new members. Looking for a project to work on Using GitHub Investigate and Make Available Sources Friday had a tonne of projects in a lot of different categories. I discovered projects with a variety of technologies and objectives, from easy for beginners to difficult. Analysing these initiatives allowed me to comprehend the improvements, bug fixes, and performance enhancements in open-source projects about artificial intelligence and natural language processing.
  • Documentation Improvement: The success of open-source projects depends on having thorough and understandable documentation. I can help by improving documentation, penning tutorials, and producing user manuals to help projects become more approachable for beginners. various chances for contributions and the significance of identifying a project that fits my interests and skill set.
  • Thought on project exploration: I discovered popular and vibrant communities for projects like TensorFlow, VSCode, and Pandas throughout my exploration. Smaller initiatives concentrating on specialised fields like educational materials and accessibility tools were also revealed to me. The notion that there is a project for everyone, regardless of skill level, was strengthened by this experience and that finding the appropriate fit is key to contributing to open source.

In conclusion, I now have a deeper grasp of open source contributions thanks to my investigation of projects and my trip through the Open Source Guides. I can't wait to share my expertise and experience to improve open-source initiatives, encourage teamwork, and benefit the community.

Citation: GitHub, n.d. How to Contribute to Open Source: Open Source Guides. taken from the website

Activity 3 - Find Potential Projects to Contribute to

ask Involved

  • Task 1 - Identifying and selecting open-source repositories from platforms like Good First Issues, Up for Grabs, and CodeTriage that align with your interests and skill set.
  • 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.

Activity 4 - Explore community connections

Task

  • 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.

Result

In my exploration of community connections for open-source projects, I focused on platforms like Discord, Slack, and Zulip, which are commonly used for fostering collaboration and communication among contributors. Here's a summary of my discoveries:

Discord:

  • Discord has become a popular platform for open-source communities due to its ease of use and various communication features. Many open-source projects host Discord servers where contributors can chat, ask questions, share ideas, and collaborate in real-time. I found several open-source project repositories on GitHub that linked to their Discord servers in the README or CONTRIBUTING.md files. Examples include gaming-related projects, developer tools, and community-driven initiatives.
  • Slack: While Slack was once widely used for open-source communities, its popularity has somewhat declined in favor of other platforms like Discord. Nevertheless, some open-source projects still maintain Slack workspaces for communication and collaboration. I encountered Slack links in older repositories or projects affiliated with organizations that prefer Slack for internal communications.

Zulip:

Zulip is gaining traction as a communication platform for open-source communities, particularly those that value threaded conversations and topic-based organization. It's often used by projects that require structured discussions and searchable archives. Although less common than Discord or Slack, I came across a few open-source projects that use Zulip for their community interactions. Community Connections: During my research, I delved into various open-source project repositories and followed links to potential community platforms. I also explored maintainer GitHub profiles, project websites, and social media channels to gather information about community engagement.

Reflection:

I observed a trend where newer and more active open-source projects tend to favour Discord for its real-time communication features and vibrant community engagement. Slack, while still used by some projects, appears to be less prevalent in the open-source ecosystem compared to a few years ago. Zulip, with its focus on organized discussions, appeals to projects that prioritize structured communication.

Overall, my discoveries highlight the importance of community platforms in facilitating collaboration, knowledge sharing, and engagement within open-source communities. Each platform has its strengths, and the choice often depends on the project's needs and the preferences of contributors. This research experience has deepened my understanding of community connections in open source and reinforced the significance of fostering inclusive and active communities for sustainable project growth. I compiled this information based on general trends and observations in the open-source community. If you need specific examples or details about particular projects or platforms, I can delve deeper into those areas as well.

Activity 5 - Identify issues to support

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.

Result

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: Prayer Times Menubar App

Here you can find the issues here Label: Enhancement, New feature, Help Wanted

  • Issue Description - The issue was opened by user "b0bdN" on Feb 15, 2022, expressing that the function getNextPrayer() in renderer.js can be better. The aim is to show the next prayer with the difference between the prayer time and the actual time. Also to add more language translation on the app.
  • Contribution - Wrote JSON language translation for Pakistan, Nigerian (Yoruba language) and Italian
  • Conversations - I decided to work on the issue of the storybook project for contribution in my community code part 1

Project 2: Lighthouse

Here you can find the issue - Add Applause-button to swag items #104 Label: docs, P2

Issue description - The issue was opened by user "ChristopherPHolder" in March 2024, the lighthouse is exposing a method called startTimespan and is unable to find any documentation on it: user-flow docs.

Contribution - made the timespan work

import { startTimespan } from 'lighthouse';
import { launch } from "puppeteer";
import { writeFileSync } from "fs";

const browser = await launch({headless: false});
const page = await browser.newPage();

await page.goto('https://web.dev/');

const timespan = await startTimespan(page);

await page.click('button[search-open]');
const searchBox = await page.waitForSelector('devsite-search[search-active] input');
await searchBox?.type('CLS');
await searchBox?.press('Enter');

// Ensure search results have been rendered before moving on.
await page.waitForSelector('devsite-content a[href="https://web.dev/articles/cls"]');

const timespanResults = await timespan.endTimespan();

// Save results as JSON.
writeFileSync('timespan-result.json', JSON.stringify(timespanResults, null, 2));

await browser.close();

Conversations - They discuss the node equivalent of running timespan mode in the DevTools panel. A flow you need to call flow.startTimespan to get timespan results in the flow report.

Project 3: OpenSearch

Here you can find the issue - Easy and fluent disaster recovery (3.0?) #11894

Label: Enhancement, Storage:Snapshots

Issue description - The issue was opened by user "sandervandegeijn" on Jan 15, 2024, 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 a need to work on improving the clarity of Compodoc's documentation within Angular CLI.

Conversations - The labels like "Storage issue", present an accessible opportunity for storage. The ongoing conversation revolves around understanding snapshots sto, with key contributors providing insights into its functionality and interaction with OpenSearch..

Reflection

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 backgrounds in 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 achievable and meaningful contributions for contributing. I have more interest in the prayer times Menubar app and OpenSearch. Is the programming language that you chose last week still the right choice? Should you consider alternatives?

Result

The thing that surprised me the most about open-source development and communities this week was how closely people from different backgrounds collaborated. It was incredibly motivating to see this degree of cooperation and shared enthusiasm for project advancement. I also learned a lot about issue tracking, community involvement, and the PR process, which improved my comprehension of open-source dynamics. I feel that JavaScript-based projects, especially ones that use open search and Lighthouse, pique my attention the most when it comes to open-source initiatives. These projects seem like a perfect fit for my experience with JavaScript, which will allow me to make significant contributions and advance personally. About last week's programming language selection, JavaScript continues to be the best option for me because of its adaptability and extensive usage in the initiatives that I find appealing. Alternatives, though, are welcome to be investigated if they better fit the plans for upcoming projects.

References

How to contribute to open source. (2024, February 8). Open Source Guides: (https://opensource.guide/how-to-contribute/)

Week 10 ( Mar. 11)

Activity 1 - Assess external community contribution Guidelines

Task

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 make sure to achieve the understanding of how to contribute.

  • Result The Prayer Times Menu bar app's CONTRIBUTING.md file and contribution guide provide contributors with extensive instruction. In their Readme.md, they also provide insightful details on the sponsors, platforms, and helpful communities they use. They also follow the Contributor Covenant Code of Conduct to guarantee that no one in the community is harassed. The contributing.md file is a step-by-step description of their contribution method, which welcomes new members. The app's contribution guide lists several methods to become involved, demonstrating its dedication to diversity and support of contributors. In conclusion, the Prayer Times Menu bar app has worked hard to create an environment that is kind and inclusive of all contributions.

Activity 2 - Contribute to external community

I started by choosing a problem in the Prayer Times menu bar app project, and then I cloned and forked the repository to my PC. I've since created a new branch that is dedicated to solving this problem. My current assignment entails researching the identified issue in-depth and creating comprehensive documentation. I've started compiling the necessary data to develop an organised and thorough understanding of the issue to help find a possible solution.

Activity 3 - Contribute to pattern library

To handle the problem labelled "Add Java template method for design pattern," which has been flagged as a good starting issue, I've chosen to use the Java template method implementation found in the pattern library. You may find the pertinent code and information in Issue 1. I'd like to contribute to this issue, so please assign me to it.

Reflection

What is the hardest/most challenging thing you had to do this week for DGL 104? How did you overcome this challenge?

  • Response This week, solving a difficult code challenge involving design patterns was the most difficult part of DGL 104. It took a combination of persistence investigation, and peers to overcome this obstacle.

I divided the issue into more manageable chunks and ranked them according to dependencies to start solving it. I used web resources and documentation to conduct a thorough investigation of pertinent topics and methods. I also used the knowledge and insights of my lecturers and classmates by actively participating in conversations and asking for their opinions.

I overcame the obstacle and developed a deeper comprehension of the subject matter by using a methodical approach, remaining tenacious, and making use of the tools that were available to me.

References

Project Repository - Prayer Times Menubar App

Week 11 ( Mar. 18)

Activity 1 - Read through pattern library Issues

Activity 2 - Continue contributions to the external community

Contributions:

  • Forked and cloned the original repository to my local machine.
  • Created a new branch named "oakintunde" for my contributions.
  • Added a new file to showcase my contributions to the issue "More clarity on translating to three other languages and adding a JavaScript function for reminders of prayer time." Contributions Details:

Translation Enhancements:

  • Researched and defined the purpose and functionality of the Prayer Times Menubar App in the README.md file.
  • Clarified the translation process for three additional languages (e.g., French, Spanish, and Arabic) in the README.md file for better understanding and implementation by contributors.

JavaScript Functionality:

  • Implemented a JavaScript function to provide reminders for prayer times within the app.
  • Documented the JavaScript function's usage, parameters, and integration steps in the README.md file with references for further information.

References:

  • Original Repository Issue: More Clarity on Translating to Three Other Languages and Adding JavaScript Function for Reminders Documentation Standards for Contributors Next Steps:
  • Submit a pull request from the "oakintunde" branch to the original repository.
  • Request feedback from maintainers and community members for further improvements and validation of contributions.
  • Note: This summary provides an overview of the contributions made to address the specified issue in the Prayer Times Menubar App repository. Detailed documentation and code implementation can be found in the respective files and branches within the repository.

Activity 3 - Contribute to pattern library

I made separate branches for each assignment so that I could begin working on the allocated issue related to the pattern library. I created a branch called "oakintunde" and divided the files into the "php_strategy_pattern" and "JavaTemplateMethod" folders for the first problem. After concentrating on implementing user login and signup authentication for the PHP strategy pattern, I worked on the Java template method, which outlines an algorithm's fundamental structure in a method and assigns specific stages to subclasses. With this method, subclasses can give particular implementations for certain phases while still preserving the algorithm's general structure.

I also started the process of creating the "contributing.md" and "readme.md" papers. These documents serve as a portfolio of my efforts and contributions to the topic at hand.

Reflection

Week 12 (WEEK OF MARCH 25)

Community code assignment links - part one

I started by sorting problems according to programming languages and ended up using the Menubar app called Prayer Times for this purpose. My goal was to make JavaScript and JSON functions more understandable. I then copied and forked the code to my computer. After that, I made a new branch called "prayer-times-menubar-app" and added the translation files for each language's folders (pa, it, and ng). Then, I commit and push my work into Github.

Community code assignment links - part two

  • I choose an issue to work on and request to get assigned to work on these issues Add Java Template Method Design pattern and Php Strategy Pattern.
  • Then, I forked and cloned the project into my machine.
  • After that, I establish a branch with the name "oakintunde".
  • Subsequently I made two files for both issues.
  • I got the request to change some content in both issues which, I elaborate on in my contribution.md file. Then, I commit and push my work into Github.

About

Research and Reflection Journal

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published