Partner Projects Programme

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!