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 ?
The plan and structure was set up quite late.
Lack of bandwidth to manage and follow-up.
Setup up workflows that reduces overheads
Follow-up systems for feedback.
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
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…
Look through proposal requests and assign issues to contributors
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
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.
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
The prizes in cash would be decided upon after the contributions are made and merged.
For commercial projects, prizes could be provided by the projects.
The project maintainers would have the descretion to judge the contributions and decide prizes.
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
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!
The partner projects issues for FOSS Hack’24 are now open to explore!
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.
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.
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 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:
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.
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 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.
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 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