-
Revamping the FreeCAD Project Association’s grant program
TL;DR: the FreeCAD Project Association studied best practices of other organizations that have grant programs and is now working towards improving its own program.
In 2022, the FreeCAD Project Association announced a grant program and issued several grants to people actively contributing to the well-being of FreeCAD and its ecosystem: to RealThunder for his work on the toponaming problem mitigation, to Ajinkya Dahale for his work on Sketcher, and to Adrián Insaurralde Avalos for managing FreeCAD releases. Several more grants are in process or are currently being discussed.
However, the organization would like to expand the program and is unsure how to go about it. Here are the key pain points.
Small payouts. The FPA doesn’t have experience managing grants, thus so far, we’ve been sticking mostly to “honorary” single-time $1,000 payouts. The organization has a much larger budget than that, but we want to spend money responsibly and with maximum efficiency, so we feel that we need a better plan for managing the program.
Little interest from the community. There have been very few proposals for grants coming from the community. The FPA admin board is not sure why that is the case.
Lack of clarity on program supervision. On one hand, the FPA would rather issue grants to developers who know their way around FreeCAD code, can come up with a sensible plan, and will execute on it. On the other hand, it’s unclear how many potential contributors match that description, plus either way, this would put extra burden on maintainers doing code review.
Thus another grant was issued to Alexandre Prokoudine to study the experience of other organizations that issue grants to free and open-source software developers. The objective was to find answers to the following questions:
- What to do to start increasing engagement?
- How to find talent and bring them to the project?
- If people think this looks too much like work, do we want to change how it looks or do we find devs who don’t think like that?
- How do other organizations and applicants structure grants? Too specific or too open in scope? How much specificity to do? Is it like GSoC project ideas?
- Do we do small/medium/large projects?
To do that Alexandre studied what the FPA has done so far with its grant program and how the program was communicated to the FreeCAD community.,He then identified organizations whose experience could be applicable, conducted interviews and studied what they’ve been doing and why, then summarized main takeaways and came up with a list of actionable recommendations.
You can read the full report on the research here. Let’s briefly discuss its key findings.
FPA’s activity
So far, most grants have been more like gifts to people who were already doing great work for FreeCAD. There was neither planning, nor budget estimation, and no supervision was done.
All payouts were $1,000 single-time ones, done 100% upfront, no strings attached. Meanwhile the FPA accumulates close to $8K a month and is prepared to spend between $50K and $75K a year on development grants and supervision.
The program communication has been rather scarce so far: very few posts in this blog and on social media, not much discussion on the forum. The development fund page has a number of ambiguities that are easy to fix.
Overall, the research finds that the FPA “hesitates to go big on its grant program while having sufficient funds to do so”.
What other organizations do
The research focused on QGIS, GRASS GIS, Cesium, Blender, Godot, and Open Toolchain Foundation, with honorary mentions of Google Summer of Code, Krita Foundation, Epic MegaGrants, Python Foundation, NLnet Foundation, and Prototype Fund.
General approach to acquiring talent. Most organizations gravitate towards giving grants to developers who have already proven their worth in the community — either by actively contributing as volunteers or by successfully completing a GSoC project.
Rolling schedule vs batching submissions. There is a strong bias towards batching proposal submissions and making annual runs of the grant program.
Project ideas. Just one organization, GRASS GIS, provides a list of topics for potential grant applicants. Organizations mostly expect applicants to be people with hands-on experience, capable of coming up with a sensible proposal of their own.
Paperwork. Proposals are generally expected to have a general project description, expected completion time, timeline/milestones, a list of deliverables, and a budget estimation. Interim reports are encouraged. A final report is commonly expected as the last payout usually depends on it.
Project supervision. Organizations mostly expect applicants to be experienced enough to not require much supervision. Except for GRASS, mentorship is not provided except for the usual code review procedures or communication in chat rooms for developers.
Scope and size of projects. Organizations typically allow small, medium, and large projects even if it only shows through project descriptions and allocated budgets.
Payout schedule. Organizations mostly pay 50% before the project and 50% after successful completion of the project.
Public communication. This is one aspect where organizations differ the most. Some actively post about the program on social media and publish announcements and recaps in their respective blogs, others don’t even have a single place of entry for people willing to learn more about the program.
One question that the research was unable to answer directly based on studying other organizations was how to increase the amount of grant applications. This is in part due to a relatively small sampling in the study, but also because FreeCAD has very specific challenges. However, Alexandre pointed out that, so far, there hasn’t been a lot of public communication about the program. And while this blog posts updates on donations, it’s possible that potential applicants are mostly unaware that the FPA does have a substantial budget for grants.
What’s next
Based on actionable recommendations provided at the end of the report, Alexandre will design an updated grant program and revamp the approach to public communication about it.
One of the main challenges here is that the FPA is a non-governing body that cannot directly meddle into development affairs. Therefore the FPA is interested to work with a group of active contributors who are willing to spend time reviewing grant applications and doing code review. We’ve just made a post about that to the ‘Developers corner’ section of the forum. If you are interested and you think you qualify, please respond to that post.
-
WIP Wednesday: 27 Sept 2023
This week in FreeCAD development:
- @yorik continues to work on the NativeIFC new document system (one FreeCAD document = one IFC document), which is almost ready.
- @obelisk79 has completed and is publishing his preference pack “OpenDark” to the addon manager. He’ll then be resuming work on his icon theme “Flat Dark” for dark styles to expand beyond Part/PartDesign and Sketcher WB’s.
- @paddle is working mostly on the assembly solving system. He’s also working on some side projects.
- Remove stop button of macro toolbar : https://github.com/FreeCAD/FreeCAD/pull/10836
- Transparency toggle : https://github.com/FreeCAD/FreeCAD/pull/10805
- Discussing tool settings : viewtopic.php?t=81212
- I (@chennes) continued work on the Toponaming mitigation merge and the new Windows LibPack.
PR stats: In the week from Wednesday, 20 Sept to Wednesday, 27 Sept there were 48 pull requests merged, with a total codebase change of +33,938 / ‑24,934 lines — however, +20,100/−15,934 of that was an auto format change of the Mesh Workbench. Not counting that format change we had an average merged PR size of +294 / ‑191. We closed 35 Issues, and 22 new Issues were opened.
-
WIP Wednesday: 20 Sept 2023
This week in FreeCAD development:
- @wandererfan is wrapping up the cosmetic circle command, doing more GSOC Unified Measurement Facility review & testing, and preparing for the grand TechDraw code reformat event.
- @calligarov is moving forward with the [Feature Request] Preferences — Default button, and trying the Draft Grid: Improvements, updating it to 0.22 dev version and figuring out how to proceed with it
- @qewer33 created icons for the new Assembly WB joints and improved the appearance and function of the Transform tool
- @PaddleStroke finished Sketcher_Dimension: Added arc angle mode, Angle movement, enable swap to supplementary, Assembly joints : https://github.com/FreeCAD/FreeCAD/pull/10611. Now he is working on connecting the assembly solver, and is also having a look at many UI quirks in tree right click contextual menu and view toolbar.
- I (@chennes) finished up the first PR of the next Toponaming phase and am starting on the second, plus working on reviewing the new Materials Workbench PR.
PR stats: In the week from Wednesday, 13 Sept to Wednesday, 20 Sept there were 47 pull requests merged, with a total codebase change of +10,046 / ‑1,648 lines (not counting translation changes). That’s an average merged PR size of +214 / ‑35. We closed 17 Issues, and 41 new Issues were opened.
-
WIP Wednesday: 13 Sept 2023
This week in FreeCAD development:
- @PaddleStroke is working on an assembly constraining system. He posted a draft PR to share advancement if anyone wants to follow along: https://github.com/FreeCAD/FreeCAD/pull/10611.
- @yorik is working on NativeIFC, trying to make the FreeCAD document a 1:1 alter ego of an IFC document.
- @kaktus is continuing to clean up Crowdin: This time strings from FreeCAD’s home page are under the microscope. The subject of the research is unnecessary end-of-line characters in strings to be translated.
- @wandererfan is wrapping up Part Scale implementation, working on Google Summer of Code UMF testing, and working on the cosmetic circle command.
- I (@chennes) am starting in on the next phase of the Topological Naming Problem mitigation project.
PR stats: In the week from Wednesday, 6 Sept to Wednesday, 13 Sept there were 55 pull requests merged, with a total codebase change of +44,100 / ‑33,089 lines (not counting translation changes). That’s an average merged PR size of +817 / ‑613 (this is a little misleading because several of these PRs were large-scale code reformatting actions, not actual code changes). We closed 16 Issues, and 26 new Issues were opened.
-
WIP Wednesday: 6 Sept 2023
This week in FreeCAD development:
- The first PR of the new Assembly workbench was merged — kudos to @PaddleStroke and the team at Ondsel for beginning that process.
- @davesrocketshop is putting the finishing touches on the first in a sequence of PRs introducing a new Materials Workbench
- We’ve activated a continuous integration (CI) tool that applies our clang-format and Black formatting standards to select areas of the code. Developers, please see this post for details and setup information.
PR stats: In the week from Wednesday, 30 Aug to Wednesday, 6 Sept there were 63 pull requests merged, with a total codebase change of +22,244 / ‑15,922 lines (not counting translation changes). That’s an average merged PR size of +353 / ‑253. We closed 26 Issues, and 30 new Issues were opened.
-
WIP Wednesday: 30 August 2023
As the new development cycle begins in earnest, there are many projects going on in the FreeCAD world that will soon be making their way into the development builds:
- @FlachyJoe finally saw the merge of PR 9559 — Sketcher: Point to Circle Distance Constraints
- @kaktus is learning about the mechanism to provide translation support in code, and has submitted several PRs to address translation bugs
- @wandererfan is continuing his ongoing refactoring effort, plus adding adjustable section line length and investigating reports of zooming anomalies
- @mlampert is continuing to work on Cavalier Contours POC and its use for Path generation
- @PaddleStroke is putting the finishing touches on the first of many PRs related to the new core Assembly workbench, and also saw the merge of PR 9810 — Sketcher: Constrain Contextual
- @qewer33 continues to refine the new Start Page
- I (@chennes) am (still) building a new LibPack with Qt6 and Python 3.11
PR stats: In the week from Wednesday, 23 Aug to Wednesday, 30 Aug there were 59 pull requests merged, with a total codebase change of +12,713 / ‑6,667 lines (not counting translation changes). That’s an average merged PR size of +219 / ‑114. We closed 21 Issues, and 42 new Issues were opened.
-
WIP Wednesday: 23 August 2023
The UI and code cleanup continued this week, but the real excitement is that work has begun on an integrated Assembly workbench.
- @obelisk has published a proposed color palette that improves the contrast of the default theme throughout FreeCAD
- @sliptonic and the team at Ondsel are beginning their work on an integrated Assembly workbench
- @wandererfan is plowing through the backlog of PRs and Issues
- I (@chennes) am building a new LibPack with Qt6 and Python 3.11, and improving the process we use for creating new LibPacks
PR stats: In the week from Wednesday, 14 Aug to Wednesday, 23 Aug there were 65 pull requests merged, with a total codebase change of +10,275 / ‑48,812 lines (not counting translation changes). That’s an average merged PR size of +161 / ‑762 (yeah, that ‑762 is a bit of an outlier!). We closed 24 Issues, and 26 new Issues were opened.
-
WIP Wednesday: 16 August 2023
The past week saw developers working on a large number of UI improvement projects, as well as quite a bit of behind-the-scenes code updating and cleanup.
- @wwmayer has been working on modernizing our C++ codebase, bringing various things up to the C++17 standard (which is our current target)
- @obelisk is homing in on an updated default color scheme that retains the feel of “classic” FreeCAD, but is better suited to vision-impaired users
- @qewer33 has created an improved Start page that is in the PR approval queue now
- I (@chennes) am working on some translation issues, as well as fixing some issues with the 0.21 installers.
PR stats: In the week from Wednesday, 9 Aug to Wednesday, 16 Aug there were 52 pull requests merged, with a total codebase change of +6,680 / ‑5,960 lines (not counting translation changes). That’s an average merged PR size of +128 / ‑115. We closed 43 Issues, and 21 new Issues were opened.
-
Vancouver Hackathon Wrap-up
As I write this we are just wrapping up the FreeCAD Hackathon 2023 in Vancouver, BC. The coffee is gone, the laptop batteries are drained, and everyone present (physically and virtually) is winding up their weekend projects.
The weekend featured a variety of different activities, ranging from presentations from Dr. Aik-Siong Koh about his recent work on a new LGPL’ed 3D constraints solver for assemblies and from Ajinkya Dahale on his work towards a custom properties system, to audio conferences via the Discord channel with FreeCAD users and developers from across the world, to just a bunch of devs sitting around hacking on FreeCAD and occasionally asking each other for help or input.
Major Topics
Version 1.0 Release Roadmap. The first order of business was to discuss the Roadmap to v1.0. The general consensus was that there are four main focus areas that must be addressed before a 1.0 release:
- Mitigating the topological naming problem
- Integrating a default Assembly workbench
- Creating a unified Material-handling system
- Improving the basic user experience
We also discussed a need to improve terminology as a sub-focus area for v1.0, which is closely tied to item 4. In fact, nearly all remaining discussion for the weekend focused on one or more of those four items.
Assembly Workbench. It came up at FreeCAD Day 2023, it comes up in the forums on a regular basis, and it comes up in discussions with end users: FreeCAD needs a default, built-in Assembly workbench. It does not necessarily have to have every possible sort of workflow, or solve all assembly-related problems, but it should at the least address basic assembly tasks. Ondsel published a series of blog posts detailing that company’s analysis of the situation, and in recent months they have been actively working to develop one of the core technologies anticipated for that workbench: a fully 3D constraint solver with a compatible license. The next order of business was to decide which of the various available paths we intend to follow:
- Integrate the new solver into @realthunder’s Assembly 3 Workbench, and then integrate that external workbench directly into FreeCAD. @realthunder seems very enthusiastic about the new solver, so it seems likely that at least the first part of this will happen in very short order.
- Integrate @zolko’s Assembly 4 Workbench into FreeCAD and extend it to include the solver.
- Develop a new Assembly user interface directly in FreeCAD, taking inspiration from Asm3 and Asm4 and combining those ideas into a simplified, streamlined workbench.
In general it was felt that Assembly 3’s user interface was too complex to be integrated on its own, and that Assembly 4’s lack of solver presented a significant challenge to direct adoption. Therefore the planned approach is to create a new solver user interface in FreeCAD that provides simplified access to the most common assembly tools, and that provides a standard API for assemblies that external workbench authors can use to be compatible with both that workbench and each other.
User Interface Colors. FreeCAD’s default background gradient and the color scheme of various UI elements present a nearly unusable interface for those with color vision deficiency, and the low contrast inherent in the current design presents some visual challenges even for those without vision impairment. A group of developers and users met (virtually) to discuss the ongoing research project of theme developer @Obelisk, who is attempting to create both a set of new light and dark themes based on existing work from a number of other theme authors, as well as to adapt the color scheme of the “classic” FreeCAD experience to be more friendly to everyone. While we don’t expect this work to be without controversy, having a solid technical basis for making these sorts of decisions will help us to move forward with the project.
Integrating a Rust Library. A very appealing project from the Rust world led to a discussion about the feasibility of integrating a Rust library into our codebase for use in the Path workbench. There are a variety of pros and cons related mostly to packaging issues (and no, we did not discuss rewriting FreeCAD in Rust!) but the overall consensus was that the upside of the advanced library outweighed the downside of packaging complexity, and that it is worth attempting in this limited application to see how it goes.
Toponaming Next Steps. @JohnAD, Ondsel Developer and team lead for the TNP mitigation project worked with various developers to work out what the next phase of that project looks like, and published the next set of steps we need to undertake. Things get exciting right about now, as we actually begin using the system to track element history. Help wanted! If you are interested in learning what this TNP thing is all about, and want to assist in the project, drop me a line and I’ll get you an invite to the group Telegram chat.
Task panel, tree view, and stealing focus (oh my!). At the FreeCAD Day meetup at FOSDEM in Brussels earlier this year, a consistent user complaint had to do with interactions between the Task Panel, the Tree View, and various ways that things could go awry when using them. That continued to be an active area of discussion at the event this weekend, with various proposals for helping to mitigate these sorts of problems. There were a number of proposed solutions, but be on the lookout in the coming months for PR’s related to a “Speed Bar.”
And more! Dozens of other smaller discussions cropped up during the event: switching from toolbars to a ribbon, improving the documentation, cleaning up the tracker, not moving our toolbars around(!!), and improving the naming of things, just to name a few.
Thanks to everyone who attended, in person and virtually. I hope that we can have more of these meetups, across the globe, as FreeCAD development moves forward. We don’t have any official dates yet for FOSDEM 2024 (likely early February), but you can be assured that FreeCAD developers and users will certainly coordinate a meeting around that event. I have heard of a couple of other groups looking to plan events: if you are interested, please reach out to the FreeCAD Project Association — funding is available!
-
WIP Wednesday: 9 August 2023
Welcome back to WIP Wednesday! After a short hiatus while we prepared for the 0.21.0 release, we’re back out of the feature freeze, and FreeCAD development continues apace. Actually, it’s accelerating, and fast! We’re still working through the PR backlog that built up over the freeze, but expect to make major progress during the FreeCAD Hackathon this Friday-Sunday.
Please note that we expect the master development branch to experience some slowdowns, increased memory consumption, and probably some other temporary regressions going forward. This is due in part to the plans for integrating the Topological Naming Problem (TNP) mitigation strategy into master, but also in part to the accelerated pace of development. If you choose to use a daily or weekly development build, please back up your data regularly.
Over the past weeks:
- wwmayer has been working on some C++ code modernization
- PaddleStroke reorganized the preference page folder structure
- ConnorWarrell optimized the QuantitySpinBox regular expressions
- I (chennes) worked on getting the Snap updated to Ubuntu 22.04, and developing a new LibPack for Windows based on Qt6.5 and Python 3.11.
- Plus hundreds of other items: check the Pulse for details!
PR stats: In the week from Wednesday, 2 Aug to Wednesday, 9 Aug there were 55 pull requests merged, with a total codebase change of +14,550 / ‑13,172 lines (not counting translation changes). That’s an average merged PR size of +269 / ‑244. We closed 16 Issues, and 47 new Issues were opened.