Help FreeCAD

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. Contributing to FreeCAD Wiki is easy, at WikiPages you can find the FreeCAD Wiki rules and the help needed to to get you started. To edit the wiki, you will need a FreeCAD Wiki account (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.

A couple of areas that would welcome your work:
 * The Category:Command_Reference page list and documents all of the FreeCAD commands. Most of them have few or no information at all. Please refer to WikiPages for good examples of what command documentation pages should look 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 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 FreeCAD Google Plus community.

Translate FreeCAD
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! All the translations are done online on crowdin.

For details on translation, see FreeCAD Wiki Translation Process under Localisation.

Translate the documentation
Translating is easy, the FreeCAD wiki supports a Translation plugin which allows to manage translations between pages.

For details on translation, see FreeCAD Wiki Translation Process under Localisation.

Please be sure to be familiar with the WikiPages style guide, which includes rules for good translations.

The Help Editing page provides some information on editing.

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 github

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 cancelled 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.

Design artwork
See the Artwork page for guidelines about designing icons for FreeCAD.

Program!
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 tracker 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.
 * Since 2016, FreeCAD is also participating to the Google Summer of Code. Be sure to check our ideas there if you are interested in participating in a next edition.