Partner Projects Programme

:green_circle: Check out Open Code-Walkthrough Sessions for Partner Projects. :green_circle:

The Partner Projects program is an effort to provide FOSS Hack participants with time and mentorship to be able to contribute to existing open-source projects.

Context

We had attempted this programme as a small experiment during FOSS Hack 3.0, which didn’t pick up well as expected.

What could have improved ?

  1. The plan and structure was set up quite late.
  2. Lack of bandwidth to manage and follow-up.
  3. Setup up workflows that reduces overheads
  4. Follow-up systems for feedback.
  5. Spreading awareness

Hence, this edition, we are attempting a revamped version of this programme, in addition to it being a mock-run for structuring Season of Commits.


We are very much open to feedback and suggestions as comments in thread, that would help in structuring this better.

We are also welcoming volunteers, do comment your interest in this thread as well.

Proposed Structure of the Programme

1. Curation of partner projects:

  • Our aim is to have between 5 - 10 open source projects looking for contributions and can spend some time and resources.
  • Each project ought to have a dedicated issue list for the participants to look through.
  • The projects will be listed on the FOSS Hack website, linked to their issue boards.
  • Community and commercial projects will be categorised separately.

2. Opening issue list to participants:

  • A participant/team can go through the list of projects and issues to choose issues to work on and submit a proposal on respective issue comments.
  • Based on the proposals received, the maintainer can assign issues after the opening window closes.

3. Prep Period

  • Proposing a period of 15 days.

  • The participants with issue assigned can enlist their projects on the FOSS Hack platform.

  • Interact with the maintainers to get an onboarding on the project, codebase queries, issue-related queries etc.

    • Issue related queries are preferred to be done on issue discussions threads.
    • General queries can be made on dedicated project discussion channels, the FOSS Hack Telegram group can also be utilised for the same.

4. Hacking:

  • Code commits are to be made during the hackathon period: 27th - 28th July (36 hours).
  • Queries, doubts etc can also be made and cleared during this time.

5. Evaluation:

  • We would like the maintainers to review the list of PRs submitted for the project and merge them based on merit and value added.

Proposed Timeline

Title Date
Finalising partner projects 10 June 2024
Open issue list to participants 13 June - 3rd July
Coordination, issue assignment, onboarding 4th July - 10 July
Prep phase 12 July - 26 July
Hacking 27 July - 28 July
Evaluation 29 July - 19 August

Expectations from maintainers

  1. Curate an issue-list and add a fosshack label to those issues. The issues should be:

    • Non-trivial and with enough substance to solve.

    • Solvable within a window of 30 hours along with the prep from 15 days.

    • 2 or 3 similar issues can also be collated into a single issue and considered.

    • Issues should be well-drafted to make them understandable.

    • Issues could be of varying nature - bugs, feats, architecture, design, documentation etc…

  2. Look through proposal requests and assign issues to contributors

  3. Utilise the prep-phase to provide support to contributors, which could include:

    • Providing an onboarding to the project.
    • Helping to understand the codebase
    • Resolving queries
  4. Provide a forum to have discussions on general project queries.(issue specific can be done on issue discussions).

    • Preferably GitHub discussions can be used.
    • FOSS Hack Telegram group could also be used to make announcements about discussion calls if any etc.
  5. Review PRs and merge them if significant to the project.

    • The maintainers are allowed to suggest changes to the PR after submission to make them more efficient

Prizes and Recognition

  1. The prizes in cash would be decided upon after the contributions are made and merged.

  2. For commercial projects, prizes could be provided by the projects.

    • The project maintainers would have the descretion to judge the contributions and decide prizes.
  3. In the case of community projects, the prizes could be pooled from the FOSS Hack prize pool.

    • Feedback will be taken from the maintainers and contributions re-evaluated by the judges to decide upon this.

Next Steps

  • We have been having open discussions with a few project maintainers about their thoughts on the programme, and few of them are interested to explore.

  • An open call for projects will help us to make the selection process more effective.

    • We will release a Call for Interest for Partner Projects in 2 days. While do share suggestions of potential projects welcoming contributions in this thread, and we’ll follow-up with them too.
  • As important as it is to onboard projects, it’s also crucial to spread awareness among potential contributors as well - need to plan this section

References

6 Likes

This is an amazing initiative. The rules and guidelines of this initiative align well with our ethos at Vibinex about commercial FOSS. Looking forward to this year’s FOSS Hack!

3 Likes

Call for projects

We opened a call to propose partner projects, that can be part of this programme.
https://fossunited.org/fosshack/partner-projects

A tentative list of projects that got confirmed:

Edited: 3rd July, 2024

Curated some recommendations for partner projects, that can be referred to while curating issues and setting workflows.

The partner projects issues for FOSS Hack’24 are now open to explore! :tada:

At FOSS Hack, you can either build a FOSS project from scratch or contribute to an existing FOSS or commercial open source project. These issues can be considered as potential problem statements if you are unsure of which project/what contribution to make.

Check out the list of partner projects - FOSS Hack 2024 | Partner Projects

1 Like

Updates about Partner Projects

  • All projects have now been added to webpage with their issue boards and discussion links.
  • Current Stats for projects:
    • Community FOSS: 9
    • Commercial: 4

Activity

  • Folks have started proposing to the issues, and are asking queries regarding same.

Planned to do:

  • Announcing projects via social handles

  • Need to plan awareness outreach about the programme:

    • Writing a FOSS Hack newsletter to all former FOSS Hack participants :white_check_mark:
    • Start code-walkthrough sessions with community projects :white_check_mark:

Open Code Walkthrough Sessions

The code-walkthrough sessions for partner projects would be helpful to understand more about the project and get your queries from the maintainers.

It will be an open call happening on Jitsi, and can be joined via:

Session Timings

The sessions will be flexible and will be arranged based on the maintainers’ bandwidth.

Planned Sessions:

:white_check_mark: Amaze File Manager - 2024-07-04T12:30:00Z→2024-07-04T13:30:00Z

:white_check_mark: FreeCAD - 2024-07-05T13:30:00Z→2024-07-05T14:30:00Z

:white_check_mark: Compilerd - 2024-07-06T11:30:00Z→2024-07-06T12:30:00Z

:white_check_mark: Keyshade - 2024-07-18T12:30:00Z→2024-07-18T13:30:00Z

:white_check_mark: Raven - 2024-07-20T12:30:00Z→2024-07-20T13:30:00Z


This isnt solely focused for partner projects too. Any other project who’re looking for contributors at FOSS Hack and would like to talk about, do propose in this thread.

These sessions are recorded. Find the recordings in this playlist.

1 Like

Summary of Some Hosted Code-Walkthrough Sessions

We hosted 3 code-walkthroughs over the past week. The recordings of these have been uploaded to YouTube and shared. This is intended to serve as an extended resource for contributors even after FOSS Hack.

Amaze File Manager

Amaze File Manager is a simple and attractive Material Design file manager for Android. Vishnu Sanal and Vishal Nehra from Team Amaze joined us to share the vision behind Amaze File Manager and provided a full walkthrough of the project.

The session covered the following:

  • The story of Amaze File Manager
  • Features and setting up the project
  • Code walkthrough - File Listing, Hybrid Files, etc.
  • Discussion of a few doubts and issues
  • Important pointers to keep in mind for contributors

Some questions asked:

  1. For NFS-type filesystems, does the Amaze File Manager implement the NFS spec to communicate with Network devices, or do we rely on 3rd party or base kernel to implement that part?

We use libraries – we cannot do kernel-level manipulation on Android without root access.

  1. How are R/W failures handled, particularly any failures which would cause corruption?

We basically have redundancy for everything – we try using multiple APIs if one doesn’t work. We make sure that the files are never corrupted by ensuring that the original copies of irrecoverable files are modified only after the operation succeeds, etc.


FreeCAD

FreeCAD is an open-source parametric 3D modeler made primarily to design real-life objects of any size. Ajinkya Dahale and Yorik van Havre from the FreeCAD Community joined us to share more about the project, walk us through the codebase, and discuss some issues in the project.

We had a good discussion about the scopes for contributions to the project, initiated by @Shree_Kumar.

Notes shared by Ajinkya:

  • Vision: To provide a professional-grade free and open-source 3D modeler.

  • Languages: C++ and Python

  • Key resources:

  • Dependencies: OCCT, Qt, Coin3D, Python, and some others (including optional ones)

  • Set-up procedure: Depends on platform (Windows, Linux, or Mac). Refer to instructions in the handbook/wiki.

  • Structure:

    • Core: Setup of the application, handling of objects, parametric relationships, file opening/saving. Separation between UI-related functionality (src/Gui) and non-UI, which can run on the command-line/API (src/App). Core is fully coded in C++ for speed and stability.

    • Modules: Each module deals with specific areas, object types, and interface setups (called Workbenches). Like core, each module is also divided into “App” (command line/API) and “GUI”. Some modules are coded in C++, others in Python, and some with both languages. Examples:

      • Part (src/Mod/Part): Main interface to OCCT, provides OCCT geometry to most other modules (C++)

      • Sketcher (src/Mod/Sketcher): Provides tools to build constrained 2D shapes (C++)

      • Draft (src/Mod/Draft): Provides more classical tools to create 2D shapes like line, rectangle, etc. (Python)

      • PartDesign (src/Mod/PartDesign): Adds tools around Part and defines a strict modeling environment aimed at creating single objects (C++)

      • FEM (src/Mod/FEM): Tools to perform Finite Element Analyses on objects by applying forces on them (Mix of Python and C++)

  • Tests: Unit tests are contained in …/tests/…, written in C++. More comprehensive tests are contained within each module, mainly in Python using the API.

  • Contributing: GIT is used to work with the FreeCAD source code. Contributing involves:

    • Cloning the FreeCAD repo onto one’s own computer

    • Creating a clean branch

    • Making changes to the code

    • Verifying that your changes work: Compile FreeCAD and test

    • Committing these changes

    • Pushing the branch containing the changes to a public repo (e.g., one’s own GitHub repo)

    • Creating a Pull Request to have that code change merged into the main FreeCAD repo


CompilerD

Compilerd is an online code judge for evaluating code submissions, maintained by the Kalvium Community. Anirudh from the Kalvium team joined us to share more about Compilerd and provided a full walkthrough of the project.

The session covered the following:

  • More context about the project and its specifics
  • Features and setting up the project
  • Code walkthrough
  • Discussion of a few doubts and all fosshack labeled issues

Relevant Links

Special thanks to @SphericalKat for joining the discussion and sharing relevant feedback and comments!

Partner Projects Programme Retrospective Report

The Partner Projects program is an effort to provide FOSS Hack participants with time and mentorship to be able to contribute to existing open-source projects.

The primary objective of this programme was to strike a balance between fostering connections with existing projects in the ecosystem and attracting new contributors, all while aligning with FOSS Hack’s vision of sustaining open-source projects, along with bringing up new projects.

The Season of Commits project was proposed to take this activity to a greater scale. The partner projects’ program in question was used as an experiment to better understand different aspects important to this aim. It sought to examine community response, project maintainers’ expectations and involvement levels, and, most significantly, how contributors would perceive the program.

Let’s start with expectations

Given the challenges in setting proper expectations and execution during the previous year, I established the following baseline expectations for the upcoming program:

  1. Kickstart interest in the cause
  2. Bring visibility to some niche community FOSS projects
  3. Achieve a minimum of 15-20 quality pull requests throughout the entire program
  4. Start small by onboarding up to 10 projects

On the planning front, find the thread with updates.

The outcomes

The most possible metrics are the numbers themselves:

Metric Value
Community FOSS projects onboarded 9
Commercial open source projects onboarded 4
Interests for contributions 63
Projects contributions 17
Total PRs created 61
Projects contributed to 9

Projects that received PRs:

  1. Compilerd
  2. Internet Shutdowns
  3. Keyshade
  4. Kitty
  5. Vyaakaran
  6. Hoppscotch
  7. Phase
  8. Raven
  9. Vibinex

The good

The outcomes exceeded expectations to a significant degree, indicating that the experiment was successful. Several additional positive factors emerged:

  • Curating a set of recommendations for projects to adhere to, serving as a benchmark for potential partner projects.

    • These recommendations were segregated into levels, aiming to fine-tune projects to make contributions more welcome.
  • Code-walkthrough sessions:

    • Hosted code-walkthrough sessions for 6 open source projects. These were held publicly on Jitsi Meet for live Q&A, and then recorded for future use as resources for contributors.
    • Special mention to @SphericalKat, @Shree_Kumar and others for joining some sessions to share valuable feedback and support.
  • Created a list of open source projects along with their curated list of issues and discussion forums. This list can be used as a reference for issues beyond the scope of the programme as well.

The pitfalls

  • Despite a 2-month planning period, the active phase of the programme lasted only about 1 month. This included a maximum of 15 days for participants to understand projects, scope issues, and then contribute during the 36 hrs of hackathon. This timeframe is relatively short for understanding and contributing to complex projects.

  • 4 projects received no contributions despite extensive resource curation efforts: FreeCAD, Amaze File Manager, OCaml, and Listmonk.

  • Unfortunately, FreeCAD received 2-3 spam pull requests, and we shared an apology note regarding the incident on the FreeCAD forum

Feedback

(Shared by maintainers and contributors)

  1. Both maintainers and participants noted the short timeframe of the programme as a challenge.

  2. Many projects received high-quality contributions:

    • Projects like Phase and Keyshade mentioned that contributors followed up with them after the hackathon about further contribution opportunities.
    • Akash Hamirwasia noted that the programme resulted in good contributions to his project “Vyaakaran”.
  3. Kovid Goyal applauded the efforts to encourage participation in open source and give people experience writing real-world code for actual working projects. He was glad to contribute in his own way.

  4. The Hoppscotch team provided positive feedback, stating that the programme struck a good balance between empowering people to contribute to FOSS and helping contributors navigate the process. They expressed enthusiasm for seeing more similar initiatives from the foundation.

  5. The Vibinex team appreciated the initiative and offered constructive feedback on how contributors could improve communication with project maintainers.

  6. Some projects faced challenges with contribution quality:

    • Some pull requests were not up to the required standard, and contributors didn’t follow up after receiving reviews.

    • Projects like Raven and Vibinex reported that some contributors weren’t active enough after receiving feedback.

  7. The Phase team conveyed that they had a great time interacting with developers from various backgrounds and were happy to onboard some new contributors on the project. They suggested creating a beginners’ manual for FOSS contributions, covering topics such as:

    • Evaluating issues for contribution
    • Committing code effectively
    • Creating informative pull requests
    • General etiquette on issue boards
  8. Communication challenges:

    • Some contributors reported difficulties in effectively communicating with project maintainers, citing significant gaps between responses.

Evaluation process and rewards

The contributions were initially evaluated by the project maintainers, who provided feedback and recommendations.

Contributions to commercial projects:

For commercial projects, the awards were determined by the projects themselves. These awards will be given only after the pull requests are fully reviewed and merged into the projects (noting that reviews for these projects can take considerable time). The maintainers will have full leverage on the contributions to be awarded.

The rewards could be in form of:

  • Recognition
  • Cash prizes
  • Internship opportunities
  • Potential job offers

Contributions to community projects:

For community projects, each team’s contributions were collectively evaluated as a single hackathon entry. These were then assessed alongside other hackathon projects by the FOSS Hack jury. Although these contributions didn’t qualify for the cash prize pool due to strong competition from other projects, several deserved special recognition:


Overall, this experiment served as a valuable reference point to understand the considerations to keep in mind when hosting contribution programmes. Some key insights for future initiatives include:

  • Explore ways to maintain ongoing engagement with projects and ensure steady contributions continue.
  • In addition to large-scale contribution programmes like Season of Commits, consider hosting small-scale programmes:
    • These could focus on one or a small number of projects, potentially improving the quality of contributions through increased focus.
    • Such programmes would be less intensive to host and could be run independently by FOSS Clubs or city chapters etc.

A big shoutout to all project maintainers, contributors, volunteers, and the wider community for fostering the partner projects programme so well. This wouldn’t have been possible without the extended support and feedback that we’ve received from the FOSS United Community.

Cheers to the next steps ahead!

FOSS Hack Partner Projects - Honorary Mentions

The partner projects programme paved the way for some good contributions to partner projects. The judges and maintainers nominated some commendable contributions for honorary mentions.

1. Semantix

Partner project: Vyaakaran

The Semantix team contributed 4 PRs during the hackathon period which directly addressed 3 issues that were already there in the project. They also came up with a proposal for a feature request for the Vyaakaran compiler to add support for DFA generation, state minimization, and checking for cyclic state dependencies.

Feedback from Akash Hamirwasia (project maintainer):

The team successfully completed the DFA generation for the Regular Grammar playground in Vyaakaran, a crucial feature for students learning formal languages. They quickly adapted to the complex compiler codebase, documenting their algorithms thoroughly. This contribution has already been merged and is live.

Additionally, they set up linter and prettier for major Vyaakaran modules, which was also merged after minor adjustments. The team proposed an innovative solution using generative AI to create formal languages and state machines from natural language. While its merger is uncertain due to potential costs, their implementation was extensible and impressive.

Overall, the Semantix team demonstrated exceptional ability in tackling this complex project, which requires understanding of compilers and algorithms. Their thoughtful, modular solutions and ability to overcome potential barriers for first-time contributors were particularly commendable. Their work significantly enhances Vyaakaran’s functionality and user experience.

2. Recursive Image Display for Kitty Terminal

Partner Project: Kitty

The team worked on IV kitten, fully implemented in Golang which recursively searches for images in the given directory and prints them on the kitty terminal using Kitty Graphical Protocol.

Feedback from Kovid Goyal (project maintainer):

This was a hard project, the hardest in my list anyway. It’s impressive that the team managed to produce something that kind of works in two days. It meets the basic goal of displaying a grid of images in Kitty. The team showed some real hacker spirit in learning enough in an unfamiliar area to come up with a MVP in the allotted time.

That said, it also needs more work done before being suitable for inclusion in Kitty. It works only on macOS and uses various hacks to achieve the basic functionality instead of using the APIs kitty provides to work in a robust cross platform manner. However, this is to be expected in something created for a hackathon. Creating real software is much harder and would have required the team to spend considerable preparatory time familiarising themselves with kitty’s APIs. I am hopeful that they will follow up and mould their MVP into something actually shippable over time.

3. Contributions to Keyshade

  1. API CLIENT Controllers of Keyshade.

    Maintainers’ Notes:
    PRs made by this team helped us in adding developer tool support for keyshade. Although these PRs don’t have any direct contribution to the project’s value, they helped us immensely in making our project more developer friendly.

  2. Paginate Keyshade

    Maintainers’ Notes:
    Showed real dedication to pick up the entire parent issue that contained nearly 10 child issues, and solved all of them. These PRs added some cosmetic value to our project.

  3. UI-Ops Keyshade

    Maintainers’ Notes:
    Added direct value to our project. While a few PRs were scoped to the maintainability of our project, the other PRs carried some weight in terms of their impact in the project.

  4. Contributions by Team ArchAngels

    Maintainers’ Notes:
    Added direct value to our project. While a few PRs were scoped to the maintainability of our project, the other PRs carried some weight in terms of their impact in the project.

4. Hoppscotch Workflows

Partner project: Hoppscotch

The team developed a node based system to set up test workflows for APIs. Users can set up a graph with nodes for REST requests, response outputs, selectors etc and execute them to verify that the entire API works.

Feedback from Hoppscotch Team:

The team came with the proposal on their own and effectively communicated its implementation. We are extremely happy with the team to build this new feature addition to our suite. This PR would need a thorough review and might take up a long time for resolution, since it’s quite broad in scope to be merged into the app in its current state.