If you like FreeCAD and would like to help in its development, there are many things you can do, even if you are not a programmer. Actually, there are things to do for everyone: users, power users and developers:
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. To edit the wiki, you will need a SourceForge account, then, you can use the same login and password on this wiki. Then, ask on the forum or on the irc channel for write permission (the wiki is write-protected to avoid spamming). A couple of areas that would welcome your work:
- The List of Commands page list and documents all of the FreeCAD commands. Most of them have few or no information at all. The Std_ViewScreenShot page is a good example of what every other command should like.
- The Tutorials section is still very poor. If you developed something cool with FreeCAD, why not write there how you did it?
Share your FreeCAD knowledge
The users 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 this forum thread. 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.
Translate the documentation
Translate the documentation: Translating this wiki is easy, you just need to add a /languagecode page to create a translation. For example, to translate the Part_Module page (its url ends with index.php?title=Part_Module) to french, you would just add /fr to the url, which will create a Part_Module/fr page.
Translate FreeCAD in your own language. All text of the FreeCAD interface can be easily translated in other languages. All we need is someone who know that other language and is willing to help! We currently have translation in english, german and french. All the translations are done online on crowdin.
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
Report bugs and ask for interesting features
The place to report bugs and suggest new features is the FreeCAD Tracker. 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 you can submit issues anonymously, please use your sourceforge account (create one if needed), so you can 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 version of FreeCAD (for example 0.11) and the revision number (for example 4955). Both those numbers are available on the Help -> about FreeCAD dialog.
- If you are not sure whether what you found is a bug or not, the best way is to head to the forum and discuss it there first.
- Before submitting a feature request, it might also be a good idea to discuss it with other users on the 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 unrealistic amount of work.
See the Artwork 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 or request a merge from a git branch. But to avoid some headache you should meet the following prerequisites first:
- FreeCAD goes at its own pace, and has a very small team of developers. We have not as much time as we would like to dedicate to FreeCAD, and things are not planned ahead, they are done when some developer sees it fit and when he finds time to do it. So we don't maintain a list of tasks to be done. It is up to you to find something you would like to do, for example a defect you would like to correct, or a small feature you think is missing. The tracker also contains some items that are not yet assigned to anybody.
- Before you start to code for FreeCAD, you must know well 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, but the forum is the one and only place where you can meet all the developers.