Skip to content

Repository Research

harunsami edited this page Mar 23, 2023 · 14 revisions

This page is for documenting the repositories that we liked after doing some research. We briefly explain the repository adding the good and not so good aspects that we find about them.

openzeppelin-contracts (Çisel Zümbül)

openzeppelin-contracts is a popular open-source library of smart contracts for the Ethereum blockchain. The library provides developers with pre-built smart contracts that can be used to create a wide range of decentralized applications (dApps), including tokens, crowdsales, governance systems, and more. The library is written in the Solidity programming language and includes a range of standard contracts like ERC20 and ERC721 that can be used as building blocks for developing custom smart contracts.

  • The repository is well structured and modular, allowing developers to find and use individual contracts or subsets of contracts as needed for their particular use case.
  • The README is very detailed, it has clear installation instructions. Also, it provides good links to get started even for those who doesn't involved much with smart contracts before.
  • The repository doesn't consist wiki but the links to their documentation site can be found in README, their site for documentation is also very comprehensive. It consists code snippets and use cases of the contracts.
  • Everyone who wants to contribute can open an issue and most of the issues are addressed by maintainers. There is a good discussion going under issues. However label usage is limited and doesn't contribute much to the classification of the issues.

ohmyzsh (Arda Kabadayı)

ohmyzsh is an open source, community-driven framework for managing zsh configuration. Over 2100 people have been contributed to the project. It provides more than 300 optional plugins such as git, docker, python etc. Especially the git plugin is extremely helpful to visualize your current branch. It also provides more than 140 themes to increase the readability of the zsh shell. If you want to increase your productivity and bored with the appearances of your zsh shell, probably this the thing you are looking for.

  • The repository has very long and detailed README. It might look like a good thing, but I think README should give some essential information about the repository and additional details should be in the wiki pages.
  • Wiki section of the repository is awesome. Especially the home page and the sidebar are very well organized. They are short, concise and just used for getting some information about the repository and going to other wiki pages.
  • The wiki pages except the home page are very long and detailed. For example, themes page contains information and photos of almost all themes. I think this is very useful to see all the themes.
  • For me, the worst thing about the repository is the lack of an issue template. I think all open source repositories should have an issue template, so that anyone who wants to open an issue can write in a certain rules.

realworld (Can Uzduran)

Most software developers start their journey by creating a simple demo app which is a good starting point for understanding software development patterns and practice. However, most of these apps lack the complexity and applicability of a real-world scenario. RealWorld solves this issue by enabling you to develop complex, real-world full stack application (a clone of Medium.com) where the frontend and backend services communicate via API.

  • They have some sort of an archive in CodebaseShow for the projects that have been developed previously in various languages and frameworks. I think this is a great concept for beginners to examine the projects and their codebase before starting developing their own projects themselves.
  • Discussion section of the repository is quite useful and helpful for developers. You can see different subsections inside the discussion section such as Ideas, Announcements and Q&A. These types of sections enable developers to keep in touch with different users around the world easily and effectively.
  • In my opinion README page of the repository is lack of detail about the content of the project. You need to visit different forum-like websites in order to get information about the project and its usage.
  • You can select which framework you want to work with for frontend and backend and I think this is a great feature. You can select your frontend framework over Angular or React and backend framework over Django, Rails (RoR) or Node.js.

styled-components (Alperen Bırçak)

Styled Components is a cutting-edge Javascript/React library that allows component based styling of a react project. It solves two big problems in css: global nature of the language in a increasingly modular web development environment, and decoupled but co-dependent nature of html and css. Syled Components allow seamless integration of established CSS principles and React components by making styling a part of the components code (using tagged template literals), without needlessly complicating the CSS part of the equation.

  • The README part of the repo is very comprehensive, addressing the issues both a new user and an established user might have. It gives a brief description of the project then moves on to a FAQ style presentation that provides solutions to common problems and links to more detailed sources.
  • Issues page of the project is very active, the maintainers seem to respond in a relatively short time. Good issues are encouraged by a "good first issue" tag and bad ones are adressed in the comments.
  • The wiki page does not exist since the project hosts its own user centric wiki, which is very comprehensive. However, some contributor focused information is stored as Markdown files in the project itself, which seems like a bad practice, and a good reason to utilize the wiki feature of github.

public-apis (M.Said Yolcu)

Public-apis is a repository that documents and gives links to a multitude of public APIs. It has around four thousand watchers and more than a thousand contributors. It is starred around two hundred and thirty thousand times.

  • The README file is easy to navigate and understand. Firstly the APIs are listed according to their respective themes. Each item in the list links to another place in the README file where APIs of that respective themes are listed. There is a short description of each API and its requirements. Then with a click on the item, the webpage of the API is accessed.
  • Site navigation and file hierarchy is magnificent. The repository is designed with a minimalistic mindset, thus there are a minimal number of files. This feature makes this API easy-to-use.
  • The downside is that the scripts in this repository are devoid of any comment. This makes understanding and evaluating the code harder.

chalice (Halis Bal)

AWS Lambda is a service that allows us to run our code without thinking about servers. Chalice is an open source serverless microframework for AWS Lambda in Python. It enables us to easily create and deploy AWS Lambda Functions. It provides a command line tool to deploy and manage our application. Also it uses decorator-based syntax to set routes in the app or scheduling functions etc., this makes it easier to develop an API using Lambda. Our functions can be triggered by requests, messages or webhooks. Also they can run periodically if we set a cron expression while developing the code. Chalice provides specific decorators for each of these options, this allows us to create endpoints or schedule our functions easily. Also it has integrations with other AWS services, which makes it easy to implement and use that services.

  • The repository includes a long and detailed README. After a short description, they introduce the main functions of the library and give some examples. After that, they show usage of command line tool, setting credentials and deploying etc. I liked how detailed the README is, but I think it is long for a README file. It could be more precise and descriptive.
  • Besides the README, they have Tutorials, Topics and API Reference which contains very detailed and explanatory documentation for the library. I am pretty sure that it would help so much while developing a project using chalice.
  • I observed that they use GitHub Issues very effectively. There are many feature requests and bug reports as issues, many of them follow the similar design patterns. Most of the bug reports include reproducing steps, many of the feature requests include very detailed explanations.

mpv (Deniz Ünal)

Mpv is a free (as in freedom), cross-platform media player. It supports OpenGL, Vulkan, and D3D11 based video output and offers high quality videos thanks to features such as interpolation, HDR and frame timing. It is also pretty minimal but highly configurable and extendable through scripts that can be written in JavaScript and Lua.

  • README page of the project is very comprehensive and also neatly organized. Thus one can reach the information he/she wants without getting lost in a wall of text.
  • Wiki home page is pretty short and just includes bunch of links to other wiki pages. It also includes third party scripts that can be used to extend mpv which is pretty nice.
  • Wiki sidebar is only consisting of bunch of dropdown menus which categorizes wiki pages. For some reason there were dropdown menus which shows nothing in them and also some dropdowns were unnecessarily long. Overall sidebar was the only dissatisfying part.
  • Issue tags were decently categorized, and also tags that belong to same category were assigned to the same color which is helpful but I found it a little lackluster. Instead of exact same color, shades of one color for each category could make finding some tag in a category easier while also making it more pleasing to the eye.

freeCodeCamp (Zeynep Baydemir)

freeCodeCamp is a popular open source repository to make people learn how to code in any programming language. They also give certifications to people in backend and frontend development, data analysis, machine learning etc. They have 209 repositories and 363k stars.

  • The repository has long, readable and well designed readme file. At the top of that, they have table of contents and image of freeCodeCamp to make it good looking and easily used. In readme file, there are links to take certifications in different topics, reporting, contributing etc.
  • The repository does not contain wiki page but they have links to their site in readme file.
  • In issues page, they have almost 17k issues (16.5k is closed), and they use 39 labels to categorize issues.

TheAlgorithms (Ege Ekşi)

The Algorithms is an open-source resource that provides implementations of a variety of data structures and algorithms , including but not limited to dynamic programming ,divide and conquer , and graph algorithms , in a vaste number of programming languages. It is a useful tool when learning data structures and algorithms.

  • The README pages of the main repository and sub-repositories are short yet useful. It is more than enough to guide someone to find the information he/she searches for.
  • Some sub-repositories have a wiki page and some don't. The wiki pages are lackluster , yet it is understandable as the concept doesn't really require a detailed wiki page.
  • In majority of the sub-repositories I observed , the GitHub Issues was used pretty effectively. Issues were mostly enchancements and bug reports.

NumPy (Ali Başaran)

NumPy is a python library for mathematical operations in python.It uses more compact lists than that of python uses. NumPy uses less memory to store data. It also provides a mechanism of specifying the data types. These reasons make the mathematical operations faster such as matrix multiplication. In conclusion the code can be more optimized using numpy.

  • Wiki pages of the NumPy repository is well-designed. The person that views the wiki pages can navigate easily to the page that he/she wants to view by using the side bar.
  • There are well-defined issue tags in the repository. The issue tags are mostly self explanatory.
  • The code includes a README file. The README file explains how to import and use the library.
  • They are using milestones actively. The person that looking the repository can see the progress of the project. The person can also view how close the project is to the next milestone.

UnityLibrary (Bilal Atım)

UnityLibrary is a comprehensive archive that will attract the attention of those who want to develop games with the Unity game development engine. Thanks to the people who make contribution, it becomes a larger library with more resources. You can review the codes explained with examples in this repository about the subjects that are not fully understood in Unity Docs.Complete set of Unity scripts. You have the opportunity to review a complete set of sample Unity scripts on specific topics. Also, it contains ready-to-use script templates. You can find external libaries, scripts and utilities that are related to unity in this repository.

  • Main Page is very organized and designed to look nice.
  • Wiki page looks plain. There are links to the communication channels and it was nice to add information about Unity-related asset store, game physics, profiler, unity game frames.
  • The issues in the issue section are insufficient and not fully explanatory.
  • Milestone has been added but missions are not completed on time.
  • It's great that they created a community.
  • There are links to other useful repositories that those who want to develop games can reach.

Brew (Harun Sami Çelik)

The Homebrew/brew repository contains the source code for the Homebrew package manager, as well as the formulas for thousands of software packages that can be installed and managed with Homebrew. The repository also contains documentation, issue trackers, and other resources related to the project.

  • The README file for the Homebrew repository includes links to installation instructions, documentation, contributers, and licances.
  • The Homebrew repository does not have a wiki page, but it does include links to the official Homebrew website, which provides additional information about the project, including documentation, tutorials, and other resources.
  • Homebrew repository also has an extensive issue tracker, with over 3950 issues (3899 of which are closed). The issue tracker is well-organized, with 36 labels that are used to categorize issues based on their severity, complexity, and other factors.


💻 Meeting Notes

Cmpe 352
Cmpe 451

📝 Requirements


🪧 Diagrams


📬 Deliverables

Cmpe 352
Cmpe 451

🎇 General Contributions

Cmpe 352 Contributions

Milestone 1
Final Milestone

Cmpe 451 Contributions

Milestone 1
Milestone 2
Final Milestone

📕 Mock Up


🕵️ User Scenario



📝 RAM


📚 Research


📑 Templates


📱 Practice App

API Documentation for Practice App
Clone this wiki locally