Introduction to FreeCAD development
Have you ever wanted to contribute back to the project? Let us help you getting started!
If you want to contribute, write a thread about what you want to do in the developers corner and we will do our best to get you going. This post provides a brief overview of our workflow.
Forum
The FreeCAD forum: https://forum.freecadweb.org/ is the primary place for communication between FreeCAD users as well as developers. This should be the first place to search for answers if you have any questions.
Note: When you create a forum account, it might take a while before it's activated as the process is currently manual. This is done to limit spamming.
Issues/Tickets
As we are getting a lot of reports please follow the rules before creating a new issue
- Make sure you're using the most updated stable or development versions of FreeCAD.
- PLEASE PLEASE PLEASE post to FreeCAD forum to verify the issue.
- Only after community vetting, open a ticket and link said thread to ticket and vice-a-versa.
- Post your Help>About FreeCAD>Copy to clipboard version info in to forum thread and ticket.
- Post a Step-By-Step explanation on how to recreate the issue.
- If possible, upload an example file to demonstrate problem.
- If there is a crash involved, please consider Debugging and attaching the traceback to the ticket.
Documentation
Code
The FreeCAD codebase is mostly C++ and Python, we are currently migrating to Python3, new contributions based on Python2.X are frowned upon. The git repo is hosted at https://github.com/FreeCAD/FreeCAD
Development
If you're interested developing for FreeCAD please look into
- Read the Source code wiki page and check the API reference .
- Creating your own workbench (See Workbench Creation , Module Creation , Workbench Starterkit )
- Modifying an existing workbench (View source code of any external workbench at FreeCAD-Addons Repo )
- Creating your own macro (Read more about FreeCAD Macros and the FreeCAD Macros Repo )
- Building FreeCAD and writing C++ code (See Compiling instructions )