New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Improve the FreeCAD API documentation #12547
Comments
Thankyou sir @yorikvanhavre for prompting me here , i have read the problem statement and also have gotten a fade idea of what is needed , though if you can guide me towards starting point and more documentation which i can read and understand and learn it will be really helpful. |
This sounds like a good Idea, a while back I already complained about the general lack of Documentation in TD WB(https://forum.freecad.org/viewtopic.php?p=694678#p694678). |
@mentors Should we also make readme more informative aswell by seperating commands and there purpose and also giving more specifics in readme only rather then hyperlinking it to another page as it will be more approachable and informative that way also what can be idea for document structure like what is generally preferred Thankyou. |
Also the names etc arent also informative either they are autogenerated / hashed or encoded and also making a proper directory like structure and making it human readable will also be good idea does it sound good ? |
You got it quite right @Ovalelephant35 . The problems I see:
That's all I have at the moment... I suggest you look a bit further at the code, you'll probably get more ideas of what could be done |
Hi @yorikvanhavre Rohan here , from past 2-3 months I have been contributing to FreeCad and been an active member. I had worked on many good first issues and features request and some of my work based on documentation you can look at here , https://github.com/RohanMishra315 . I am interested in working on the FreeCAD Doxygen Documentation Improvement Project to further contribute to the enhancement of FreeCAD's documentation. Based on the identified problems and proposed solutions, I plan to: Conduct a thorough analysis of the existing codebase to identify areas where doxygen docstrings can be improved and documentation for C++ and Python users can be separated. |
I have started to classify different files and classes and functions based on there utilities also have understood that main gap lies in the fact that standardisation of doxygen strings being not used uniformly. |
Currently Understanding codebase as well as understanding on how different part of modules has to be catered and differentiated as well as working on related codebases also thankyou. |
Glad to see you guys interested in working on this. Go through the code at ease, the more you go and read the better you'll understand the problem. Also, I would have a look at other open-source projects and try to find good examples of good C++ and good Python documentation. Some good ones I have out of my mind are:
Also, if several of you will want to propose to work on a same idea, remember we'll only be able to choose one. But it's also totally possible to submit more than one proposal. |
well to be honest qt docs are really very elegant and also its quite engaging as well , also coin docs is almost similar to ours only difference being as you have already stated its easy to browse so like if we are thinking of python to be in md format then is it possible to segregate them completely like completely 2 docs or what do you think what should be plan of action. |
Also regarding the entry point as i asked earlier as source doc is quite large where should i start exactly like is there any priority involved @yorikvanhavre. |
Qt definitely has a very good documentation style and it would not be harmful to have some of it also in the C++ documentation. An other example for Documentation could be Boost and and CPPRef. I personally think a start would be a Style guid for the documentation, so that work dous not have to be done twice. This should include WHAT and HOW documentation is to be done, examples for the various classes, functions, variables and everything else. But it would also be nice if it would include formulation help and templates to make it easier and more streamlined. |
@tobiasfalk yes makes complete sense and CPPRef is quite informative , uniform and elegant in compact space it seems a good design specifically for CPP people. |
Well the thing is documentation is largely subjective to different people https://github.com/Ovalelephant35 like in all the repo i make i make sure to include as much detail as possible but at the same time is needed to be changed again and again accordingly as circumstances demand |
So the more discussion we will have large perpective we can get leading to better documenting the documentation process😅 |
I have been using Freecad for a year now started to use it for my Engineering Graphics course , also have been part of generally Cpp community so let me start with that only and make prototype similar somewhat similar to CPPref and let see if makes sense @yorikvanhavre @tobiasfalk . |
@ mentorss @yorikvanhavre moreover i was thinking of following qt only as of now though as i said earlier more ideas always welcomed |
Also there is pdf also generated though are they of any use or like is it stored here or they can be ignored? @ mentors |
Nice screenshot! :) I don't think pdf output is important, I doubt anybody would want to print that :) If you find that a better scope, you could propose to only take care of the C++ part, no problem with that. This page can help giving you a broad understanding of how the code is structured: https://wiki.freecad.org/The_FreeCAD_source_code |
Thankyou for Replying , yes pdf output can be just available as a downloadable material , no need to worry about it ig because it can obtained anytime. First of all thank you And also screenshot should be taken as pinch of salt i was trying out mockups and just understanding cmake , styling , filing , organizing format of doxygen and its interaction will come up with more better oriented mockups in days . Thanks @yorikvanhavre for the link also other links that have been provided i have been monitoring them closely to get as much idea as i can |
Very Basic and rudimentary level diagram, understanding how logic should work and interactions between different elements with commands should happen , we can also link CSS files as well , furthermore we can implement standard conduct so that all the comments could be easily parsed and each of modules , classes could be clear i am also working on some mockups as well but currently my main aim is to grasp on more and more codebase so that formalization can be done , also @yorikvanhavre @ mentors can you suggest regarding how should we actually we should store source code developed by doxygen from Freecad/ freecad codebase like currently it is as a repo but are there more ideas or should we continue with that. |
@yorikvanhavre I think we can continue with current way repo is stored only but i think we can have a very nice nomeclature of each file and directory in our source code also this will lead to easier distinction as well as it will be way more readable and it can be achieved by using doxyfile and some snippets like these
Something like this will give us the desired result in https://github.com/FreeCAD/SourceDoc |
Anything you have to add also like more ideas / if anything i am doing incorrectly or you want the other way @yorikvanhavre sir? |
This looks very good! I added some comments on your PR, basically I don't think you should remove anything, unless for a good reason (ex. it's wrong). Otherwise, the doc strings you added are perfect, I think that's the kind of thing we sorely need! |
Thankyou for review, what currently i am trying to do is to go through each of docs and seeing for missing files/api documentation and adding in parallel to working on docstring and I will only add or correct stuff only from my part thats for sure without removing or disturbing anything all ready there i dont know why it happened with shapefix file to me it was completely empty of documentation thats why i added otherwise i myself want them to be as much descriptive as possible because information any day comes first. |
@yorikvanhavre I have made another PR on missing docs and checked twice it only adds values also I will be sharing my GSOC detailed Proposal ,I will be obliged if you can review it. |
Hi , @yorikvanhavre this is my final draft for this project kindly review. Pre-GSoC Activity: Begin intensive exploration of the FreeCAD codebase from April 3rd. |
@yorikvanhavre |
Sorry for the delay @Ovalelephant35 ok, your proposal sounds good! |
Thankyou !! Well delay was from my side initially, due to some unseen circumstances. Though I have submitted the detailed proposal on GSOC official site with all the work I will be doing. |
Hi, @yorikvanhavre !
"That wraps up the major planning and testing homework. Now, all that's left is execution, along with some additional testing and planning from point 3. I'm really excited to start working on this and make the API documentation the best it can be! 😁 |
Heard you got selected on another GSoC project @Ovalelephant35 , good luck to you there! Feel free to come help us with the API docs later on if you fancy! (Also, keep in mind we have our own funding program) ;) |
Hi @yorikvanhavre , I have already made up my mind, I will be completing all the work according to the timeline I provided. |
If I understand it correctly, looking at https://summerofcode.withgoogle.com/programs/2024/projects it seems that this particular project "Improve the FreeCAD API documentation" will not be part of GSoC 2024, correct? |
Correct! We have two GSoC projects this year: https://forum.freecad.org/viewtopic.php?p=756812#p756812 |
Outline
Work on the FreeCAD doxygen-generated documentation: Propose a better plan, document the modules better, make it clearer to read, etc.
Details
The API documentaiton of FreeCAD is generated with doxygen from the docstrings contained in the source code. It is hosted on https://github.com/FreeCAD/SourceDoc . It is currently not easily readable, the modules structure doesn't list classes and functions, python functionality is not well distinguishable from C++ functionality, and many other problems.
Expected Outcome
Identify problems and possible solutions, and propose changes to the docstrings and in-source doxygen instructions to build better docs, and possibly do some css work to produce a cleaner HTML result
Project Properties
Skills
The student should have or build a good knowledge of doxygen, optionally be ready to do some css work too
Difficulty
Medium
Additional Information
The text was updated successfully, but these errors were encountered: