If you like FreeCAD and would like to help the project, there are many things you can do, no matter if you prefer to invest time or money, or if you know how to write code or not.
Although FreeCAD doesn't need money to be developed, donations can help the project to grow further and faster. The Donate page lists all the options you have to donate money to the project.
Work on the documentation
Help us to build, correct and extend this documentation. Correct mistakes, extend or correct pages that are unclear, create new pages if a topic is missing, etc. Contributing to the FreeCAD wiki is easy, at WikiPages you can find the general guidelines and the help needed to get you started. To edit the wiki, you will need a wiki account with "Editor" permissions (the wiki is write-protected to avoid spamming). You can ask for an account on the forum or on the IRC channel. Please note that the IRC channel may not be as responsive as the forum. The official FreeCAD forum should be the premier place to ask questions and start discussions, As it will help preserve the experience and knowledge of the community.
A couple of areas that would welcome your work:
- The Category:Command Reference page lists and documents all of the FreeCAD commands. Most of them contain little to no information at all. Please refer to WikiPages for good examples of what command documentation pages should look like.
- The Tutorials section needs examples on how to use the workbenches. If you developed something cool with FreeCAD, why not document how you did it for posterity?
- There are open tickets on the FreeCAD "bug tracker" tagged "documentation" that could use some love.
The user community around FreeCAD is still small, but already includes several advanced users who do a very important job in showing to newcomers how to use the software. If you begin to feel comfortable with FreeCAD, your knowledge could be very valuable to others, and you might contribute with important assets, like:
- Showing the work you do with FreeCAD on the Users Showcase forum. You can post screenshots, and, even better, attach the FreeCAD files so other people can examine it and understand how you did it.
- Recording videos showing how you did something interesting in FreeCAD. These videos usually do a great job in showing new features.
- Write tutorials describing or teaching something interesting. You can write tutorials on your own blog, directly on our wiki, or even on the forum.
- Post on the Mastodon open source social network (and follow FreeCAD there), on the Facebook community or on Twitter (and follow FreeCAD there). Use the hashtags #FreeCAD, #MadeWithFreeCAD or #fc3d to make your FreeCAD-related posts easier to find by other FreeCAD users.
- Look into the latest FreeCAD posts on Reddit, 3dprinting.stackexchange, StackOverflow... Try to answer them and participate in the discussions sharing your experience and information.
- Be present at the FreeCAD IRC channel or other chat groups.
Translate FreeCAD to your own language. All text strings of the FreeCAD interface can be easily translated to other languages. All we need is someone who knows that other languages and is willing to help! All the translations are done online on Crowdin.
For details on translation, see Localisation.
Translate the documentation
Translating is easy, the FreeCAD wiki supports a translation plugin which allows you to translate the base English page to other languages.
For details on translation, see Localisation#Translating the wiki.
Please be sure you are familiar with the basics of wiki markup; see Help:Editing for a reference.
Then head to WikiPages to familiarize yourself with the style used in this wiki, particularly when it comes to templates.
Help others to know FreeCAD
- Talk about FreeCAD to other people who might be interested
- Find interesting uses for FreeCAD, and document it, for example with screenshots. FreeCAD is very young, and not many people see what they can do with it. If you are a FreeCAD fan already, you surely know some cool thing FreeCAD can do. Help us to show that to others!
- Hang on the forum, and help newcomers to solve basic questions
- Write tutorials, record videos, etc., showing what you do with FreeCAD
- Contribute with files, drawings, etc. We still lack good example files of what can be done with FreeCAD
- Help to promote FreeCAD on GitHub by "Starring" and "Watching" the FreeCAD repository
Report bugs and ask for interesting features
Although the place to report confirmed bugs and suggest new features is eventually the FreeCAD Tracker, please always post bug reports and feature requests to the Help forum first. In order to save developers time (triaging and handling hard to understand bugs can be very time consuming), and avoid frustrations because your issue was not handled the way you would like, please read the following:
- Bugs and features requests are handled in the same tracker. Just mark your issue as "bug" (something that doesn't work as it should) or "feature" (something that is not there but you think it would be good to have)
- Although originally you could submit issues anonymously, unfortunately this had to be cancelled due to spam. Now if you would like to create/edit tickets you will have to create an account. You will then by default be notified when someone adds notes to the issue. In many cases, the person who will handle the bug will need more information from you.
- When reporting a bug, the most important point is to allow developers to reproduce it. Be sure to include the exact steps needed to make the bug happen, so another person can do the same and see the bug happen on his machine too. If the developer cannot see the bug, he cannot solve it either.
- Also include information that can help developers to situate the problem, like the operating system you are running FreeCAD on, the exact version of FreeCAD and the relevant libraries. Please post all the data by using the "copy to clip board" button in the Help (menu) → about FreeCAD dialogue, and do this from the Part or PartDesign workbench.
- No matter how sure you are that you have found a bug, please always discuss bugs first in the Help forum.
- Before submitting a feature request, always discuss it with other users first on the Open discussion forum, so you might end up with a more solid proposal, with more chances to interest a developer to implement it.
- Remember that FreeCAD is developed by volunteers who use their free time to work on it. Although everyone tries his best to make the best possible application, your bug report might be treated with low priority, or canceled if you cannot give sufficient information, and your feature request might be postponed or even refused if no developer has interest in implement it or if that would request an unrealistic amount of work.
There are dozens of bugs reported on GitHub weekly. It takes a lot of time to read them, categorize them, verify if the issue is reproducible, see if some easy actions can be done, or ask the person who posted the issue to provide more information. Helping to triage is easy, just head over the GitHub and start commenting on any issue where you think you might be able to help!
See the Artwork and Artwork Guidelines page for guidelines about designing icons for FreeCAD.
Writing code for FreeCAD is not hard, and you don't need any permission, you can start right now to work on something you want, then submit a patch on the issue tracker or request a merge from a git branch. To avoid headaches you should meet the following prerequisites first:
- Information how to compile FreeCAD is available for different operating systems.
- Before you start to code for FreeCAD, you must know how FreeCAD works. This seems obvious, but if you don't know how it is supposed to work you won't know what to do internally or how to do it.
- Almost everything can be done either in Python or C++. The internals work almost the same in both languages. We suggest you read through the Power users hub pages, even if you're going to code in C++ since it will give you a good overview of the internals.
- If you are going to work in C++, make sure you can compile FreeCAD without problems first.
- Present yourself to other developers. FreeCAD is before anything a social project, we discuss a lot of things on the forum before implementing it, and it's always best to discuss your ideas and tell people what you are planning to do before actually doing it. We also have an IRC channel which is synchronized with our gitter channel, but the forum is the one and only place where you can meet all the developers.
- Since 2016, FreeCAD also participates in the Google Summer of Code 2020. Be sure to check our ideas there if you are interested in participating in the next edition.
- More and more of the FreeCAD functionality is not written in the FreeCAD code itself but in addons, macros and extensions. Together, this ecosystem is what makes FreeCAD powerful. Oftentimes, working on an addon is easier because there is less code to read and understand, and fewer people involved. check the Addons repository and Macros repository to get some ideas!
FreeCAD features a Models library that is free and open to everyone. Why not add some useful parts there, that could be reused by others? Be sure to create models yourself from scratch, to keep the library 100% free of possibly copyrighted or non-free components.
- Getting started
- Installation: Download, Windows, Linux, Mac, Additional components, Docker, AppImage, Ubuntu Snap
- Basics: About FreeCAD, Interface, Mouse navigation, Selection methods, Object name, Preferences, Workbenches, Document structure, Properties, Help FreeCAD, Donate
- Help: Tutorials, Video tutorials
- Workbenches: Std Base, Arch, Draft, FEM, Inspection, Mesh, OpenSCAD, Part, PartDesign, Path, Points, Reverse Engineering, Robot, Sketcher, Spreadsheet, Start, Surface, TechDraw, Test Framework, Web
- Hubs: User hub, Power users hub, Developer hub