Google Summer of Code 2023 - Coding! Up to July 10th

Hello everyone!
I am Gauri Maheshwari, a second-year student pursuing Mechanical and Automation Engineering at Indira Gandhi Delhi Technical University for Women, India.

I am a technical enthusiast and a regular CAD user. I look forward to being an active FreeCAD community member, and a possible future contributor.
For GSoC, I’m particularly interested in Upgrade the documentation system owing to my background and experience in C++ and Python. I am comfortable working in both languages.

A strong open-source community, first-hand user experience, and user feedback are all important for improving the software.
Since I am new to the ecosystem, I ask for guidance in proceeding further toward contributing to the project and the FreeCAD community.

Thank you!

Hi all,

I’d like to propose an idea for GSoC’23. Please find the description below.

Development of a ROS workbench for FreeCAD

The aim of this project is to develop a ROS workbench for FreeCAD.
The project will be based on a preliminary ROS workbench developed by myself.

Student’s tasks

  • implement a script that exports a list of elementary objects, such as boxes, spheres, cylinders, meshes to the format of robot description used in ROS, URDF,
  • implement a FreeCAD object type to represent a robot,
  • implement a script that exports the newly developed robot object type to URDF into a proper ROS package,
  • implement a script that imports a robot description in URDF format into FreeCAD,
  • implement a tool to combine several URDF files and FreeCAD objects into one URDF file to describe a robot with a gripper for example or a robotic workcell.

Possible extensions of the ROS workbench

  • implement a tool that creates the configuration package to use the robot with MoveIt!, similar to MoveIt!'s Setup Assistant,
  • implement the features to visualize live ROS topics, such as the robot state, the planning scene, reference frames, LiDAR scans, images, point clouds, …,
  • implement a tool that configures existing libraries for inverse kinematics or directly exports the inverse kinematics as equations or kinematics plugin for MoveIt!.

References

Mentor

Gaël Écorchard from the Czech Technical University in Prague, Czech Republic, Group of Intelligent and Mobile Robotics.

The topic, ROS, is a niche in the FreeCAD community so that the implication of the community will probably be sparse.

There is also the option to submit an idea under the umbrella of OSRF, which may be more appropriate. I’ll also contact them.

Please tell me your opinion about it.

Hi everyone,
I am a mechanical engineering undergrad from India, also a computer enthusiast, so naturally open source CAE become one of my area of interest.

I have some experience using C/C++, Python, git and I’m new to open source, currently going through the documentations and looking at the issues and project ideas.

I rely on open source CAE tools, and very eager to get involved and know my tools better.

Looking forward to start my journey into open source CAE.

Welcome gauriimaheshwarii , Nishanth !

Excellent idea galou_breizh ! Mind to add it to https://wiki.freecad.org/Google_Summer_of_Code_2023 ?

Hello FreeCAD friends!

I’m Jyothish Kumar MS, and you can call me Blacklight. I’m 22 years old, and am a university dropout, who is interested in improving open-source engineering software so naturally FreeCAD is the most interesting one for me to contribute towards. I also heard about GSoC from a friend’s LinkedIn, and I found that FreeCAD used to participate there so I was really excited to join in.

My background
I was studying Computer Science & Engineering in Cochin University of Science and Technology since 2019, and I had taken a break year once for introspection during Jun’21-Mar’22, and then I dropped out in October’22 due because of family and work conflicts. I did not have any difficulties with the subject, and computer science was my favorite subject too. But often the college could not maintain a healthy pace (probably due to COVID), and I had some personal problems too. But then, after my year of introspection, I was ready to focus harder on my classes, but things didn’t go well yet again. In Oct’21, a friend invited me to join his startup, and I was feeling really creative, so I decided to join it. To make it work alongside my classes, I had to maintain a good routine, which I was okay with. But my father never believed in my abilities and would call me a moron when present my ideas for not considering what’s possible for us. They would also never respect my need for a silent space to focus, and that eventually led to me fighting with my dad many times, and once I damaged my spine by straining myself too hard. I didn’t know exactly what it was (I thought it was either muscle pain/blood pressure), but my whole body was often in pain and I couldn’t focus in my classes since last June. My first exams were also postponed to July, so I couldn’t score well in the entire semester, even though I’d attended my classes really well. That really lowered my morale. Finally in October, I couldn’t handle the pain and went to the doctor, and it was then that I figured out that I had thinned discs, and I was prescribed weighted bedrest for 15 days. Because I had lost a lot of time already, I decided to drop out to focus on my startup. I didn’t even rest properly during the prescribed period because my mind was coming up with new ideas which I had to note down, and because of that I took 3 months to fully recover. My teachers really liked me for my aptitude, and they asked me to stay, but because of my health conditions, and the fact that I felt being pushed and pulled around a lot, I had to leave it, even though I’d have loved to continue if I could just freeze time for a while. (My family issues are solved now, and we’re at peace)

To top it off, I was sent to a military boarding school when I was 11 where I studied for 7 years. I was a computer nerd and I was interested in game development at that time :laughing:

My motivation to work in FreeCAD

So, as I started working on my startup, I realized the need to make CAD models. We are currently working on making delivery drones btw. For free-form modelling, I was familiar with Blender, but I did not know much about mechanical design. My friend told me that he knows CATIA, but I didn’t want to support piracy, especially in a business environment. At first, I picked Fusion 360 because I was sold on their generative design workspace, but after a while they made their simulation services paid-cloud only. This was really annoying to me.

And over the course of one year, I got used to linux distros enough to see why operating systems should’ve actually been open-source. Also, while at college I never liked how they used to teach us about Intel 8085 as opposed to reasoning from first principles. I did not see why a proprietary company had to be used as the primary reference rather than an open-standard like RISC-V at the least. I also saw that MATLAB was more popular in universities unlike Octave or any free university built tool, which I could not justify. If students are taught proprietary software, they will be stuck with them and not be able to easily switch to a free alternative, even though they are not intrinsically worse than the paid ones. The only reason they lag behind is because everyone uses proprietary software and no one wants to contribute to open-source, because not everyone cares about how programs work as opposed to how easy it is to get some good looking results, and also because they don’t get paid.

Also, my friends often call me to pirate ANSYS Fluent, CATIA for them, since I’m the hacker kid. Some people don’t even know that Fluent is the software and ANSYS is the company. I don’t think anyone I know really buys any of these tools even though they use them. The fact that we pirate, even though we don’t generally get into trouble makes us feel like second class citizens, and I don’t want hard working students to feel like that. After my pestering, my teammate started telling me that he has a CATIA student license, even though I know CATIA doesn’t have one in India.

For this reason, I’m interested in contributing to the development of FreeCAD, and I want to show the people around me how it can be as good as proprietary alternatives.

My aptitude and experience

I am mainly interested in physics, particularly with laws of motion and electrodynamics (which technically includes everything) and mathematics. I’m also interested in the theory of computation, and I enjoy simply messing with code. When I’m free I sometimes come up with totally useless algorithms that would solve niche problems that no one would want to solve. However, I’ve found this hobby of mine to be very useful when it comes to engineering, although I think only design engineers do this sort of stuff, and that’s not everyone.

I also have interest in game development, music theory (8-bit included), literature, art, photography, UI/UX design and anything new. I also have a good taste for design, although I’m not yet very experienced at designing, so I may be able to help with the UI and ergonomics later on.

While at school, I had created a music player for my final year project. We did not have access to computers aside from afternoons at the library, so I coded 2000 lines using pen and paper, filling 7 notebooks, and I debugged it by tracing the flow through paper alone, and it had to work on the first try, which it did with minimal tweaks. I only used the Windows API and standard C++17. I was not used to Makefiles and CMakeLists.txt back then, so I haven’t worked with them yet.

While I’m good with C++17, I’m just somewhat experienced in Python. Someone stole my ‘How to Think Like a Computer Scientist: Learning with Python’ when I’d only read ~70% while at school, so I never finished an entire course, and don’t consider myself an expert. I still fix my friends’ codes when they have problems, but I know that’s not enough since I have to refer StackOverflow to get anything meaninful done. I’ve also dabbled with a bit of Java, C# and PHP here and there, and also my childhood favorite Batch scripts.

I also maintain a knowledgebase for everything I learn, titled Vault of Knowledge here. I’m working on publishing it using ObsidianHtml, and I hope to make it a good source of knowledge for everyone.

My Ideas for FreeCAD / GSoC

So, as of now I’ve only gone through the source code. I’ve not even used it yet, since I was on 4 GB RAM until last month and I was not done with distro hopping to settle on a lightweight work OS. I took my notes on FreeCAD source code, which you can see here. I’ve not yet gone into familiarizing OpenCASCADE and CMake yet, but I will with time. I’m hoping that mentors will guide me through them as needed if I get into GSoC.

So, here are some of my rough ideas:

  • I haven’t seen a tutorial on designing motors using FreeCAD. Perhaps this requires a good interaction with KiCAD and Elmer? If so that is one area I’m willing to work on. I don’t know how complicated this can be or if it will fit in the GSoC timeframe, but you guys should know about it better.


  • Any code refactoring or cleanup, because I am a sucker for clean code. Although I don’t think FreeCAD has any bad code in it’s core. I did notice that package/fedora is outside /src, while MacAppBundle, WindowsInstaller and XDGData are inside the src folder. I also saw there’s a /3rdParty folder but /zipios++ is outside that. I’m not sure why, but perhaps they have their reasons.

I’m also interested in grd’s idea of introducing Nim as an extension.


  • Any sort of documentation improvement, because writing wikis was an old and beloved hobby of mine. There’s 8558, but apparently there are others who are interested in doing that too, so I won’t be choosing that for GSoC.


  • Extend the materials database to include a minimalistic, yet broad catalog of materials, like Aluminium Alloys 2017A (AU4G), 6061, 7075, Carbon Fiber Reinforce Polymer (Epoxy Resin), Carbon Fiber Reinforced Carbon, Glass Fiber Reinforced Polymer, etc. With the properties being the typical density, Young’s Modulus X/Z, Yield and Ultimate Tensile Strength and other thermal and electrical properties.

I see that this is listed Material with the plan to make an open database at Material Database and the list of properties at Material properties.

I came up with these on the fly, and I still have to go through the listed ideas in the wiki to see if I can come up with something more. For now, I just wanted to make an introduction post.

Contact and Availability
I’m on Libera Chat as BlacklightMG. I’m also in the Discord server as BlacklightMG#4866, and I’m also in the Elmer and OpenFOAM servers. I’m on Twitter and have occassionaly mentioned FreeCAD, and the Twitter team was really responsive. But I’m not very technical in my socials, and I mostly post about gameplay and life. As for the forum, I’ll try to make it a habit to check in since I’m doing GSoC. I have a bunch of gmail accounts so I don’t notice emails that much.

Alongside this, I also have my startup to work on. But I’m only working on it 3 days a week, and the rest is my personal time. So I don’t think I’ll find it difficult to find adequate time for GSoC.

Here’s my GitHub profile: github.com/blacklightpy
Don’t worry about the 1700 contributions in the last year, 1662 of them are towards my Vault of Knowledge repo. I’m still a new open-source contributor and haven’t worked with any project before aside from submitting one or two markdown edits, and I’ve otherwise only submitted issues.

Quirks about me

  • I can be lazy, but I’m patient and I’ll always strive to finish my tasks. It’s usually not that I’m lazy, but I’m overloaded.


  • I like to think slowly and deeply when solving problems as opposed to being fast. I’ll often postpone the problem at hand till I finish the other stuff that take up my headspace so that I can think clearer.


  • Unless I’m sleeping or it requires thinking, I usually reply fast. I sometimes keep my Whatsapp phone away, but that shouldn’t be an issue since I keep a seperate phone for work. I’m also afraid of being too verbose, so I sometimes take more time to think and condense my thoughts than is required.


  • I’m very friendly.


  • I’m can be emotionally unstable at times and that’s one of the reasons I take time off. I’ve been working on this with meditating, keeping a routine and journalling. Sometimes I get carried away with work and I skip sleep, and that becomes a problem.

I know it’s a long post, but I wanted to introduce myself and I didn’t find a seperate section for that. Also, I’m here to stay for a long time, so a long intro doesn’t seem that bad. And phpBB is pretty compact so it seems very readable :smiley:.

I can assist on the ROS project, Have been away from the project for a while, but are starting to catch up on both FreeCAD and ROS now :smiley:

Welcome Blacklight! There are many interesting ideas there! uwestoehr is currently working on materials, so it might be interesting to chat with him if you’re willing to go in that direction. Developing a motor-based workflow/tutorial seems also very interesting. We could easily bring a KiCAD mentor together, if interesting. Since when we started under the BRL-CAD umbrella (where KiCAD is still now), making cross-project GSoC projects is something we always wanted

To anybody interested in mentoring: Please reach to me so I give you access to the GSoC platform!

I am sorry, I only fixed the bugs I found. I did this during a sponsored project which is now over. I don’t plan to work on Materials anymore since I think it suits FEM so far. Once we support new FEM features like acoustics, we will extend the Materials (e.g. to support the sped of sound as material property). But no major change is planned.

A general note: You cannot count on me this summer. Due to personal issues, I will not have much time for FreeCAD I assume. In every case I cannot mentor a GSoC student.

Hi yorik, I was away and forgot to take my laptop’s charger, so I couldn’t check in on the forum. Yes, I’m mostly interested in the development of motors. I still have to gather a good understanding about motors, but I think doing is the best way to go about it. It is something I’d like to see in FreeCAD and I’ll also want to maintain it post GSoC.

Apparently uwestoehr is no longer working on it and is too busy, but if possible I’ll take a look at it and try asking him some doubts. FEM is not my area of expertise, but is of interest to me, and I’m also interested in the addition of acoustics, for analyzing blade noise for example. But that probably won’t fit in the timeframe.

So motor design workflow and materials database seem like good points, and the choice will have to be made according to what’s a good fit for the timeframe and what would benefit the project more right now. I still have to think for more ideas, and gather a good understanding to work on the current ones.

There is plenty to look for (basically the wiki), and many here will be able to help. Besides Uwe, bernd is also a FEM and Materials master. Looking into the Git history of a particular module ( ex https://github.com/FreeCAD/FreeCAD/commits/master/src/Mod/Fem ) also helps finding knowledgeable people.

Also, it can be very good if you are not a FEM master prior to initiating such a project. Since this is mostly about documenting a process, finding information about what you need might become a very interesting part it.

I’d concentrate mainly on what seems like a good workflow to design a motor. Then, how that translates to FreeCAD, what works and what doesn’t, what you learn on the way will become very precious knowledge to be written down.

I’m interested in FreeCAD-BRLCAD integration project.
I have good foundation in math, programming and familiar with CAD as a user. I’m also familiar with C/C++, linux, CLI, Java, Python, git, cmake
But I’m new to open source and have limited experience working on large projects.
I spent a couple of weeks with brlcad source code and able be grasp it will. Also I’m very much interested and willing to learn computational geometry.
And I would like to know how hard is this project, and can a beginner complete it?

Nishanth yes and no. It is a difficult project because it involves studying and understanding a lot of code and concepts. But let that not stop you. The FreeCAD/BRL-CAD integration is something very dear to both FreeCAD and BRL-CAD developers, and we want very much for that kind of cross-project things to happen. So it could also be thrilling, you would have a lot of people looking at what you do, and also possibly mentoring from both projects, which also could be awesome

Basically: FreeCAD uses mainly one “engine” to produce and handle its geometry: OpenCasCade. But almost all the OpenCasCade (OCCT) functionality in FreeCAD is in a module (the Part module). The Part module is basically responsible to handle geometrical operations (creation and modification of shapes) and create the 3D visualization of those shapes in the FreeCAD 3D view. The base of FreeCAD itself is not tied to any particular geometry engine. It could use others than OCCT.

BRL-CAD, on its side, is a very powerful geometry engine. You can load enormous, complex multi-object models in BRL-CAD, with parts in different formats, etc. and perform very efficient batch operations there. BRL-CAD, however, does not have very powerful UI tools. So imagine how cool it could be to be able to open and manipulate BRL-CAD models in FreeCAD!

This is, as you can imagine, a huge amount of work.There is little chance to complete it in 3 months work. But, you could start working on it. It would be a lot of research and documentation work, mainly so others can work further on this later, like exploring the internals of BRL-CAD and understand (and document) how the document structure works, and how the engine can be used inside another project, understand how FreeCAD uses OCCT and produces coin3D representation, and imagine how all this could fit together. You would probably also test some ideas, write some ideas of how such a project could be structured, and if time permits throw out some preliminary code.

You should be prepared to do a lot of research, document and write about everything you find, and probably do some compiling of both projects and play with linking libraries of one into the other. You probably won’t produce a lot of “finished” code in the GSoC time slot, but you will have set very important bases for later. And who knows, there is a lot of interest and you stick to it afterwards :wink:

To sum it up, it’s much more a research project than a coding project.

To all interested GSoC students: If you are willing to submit a proposal for FreeCAD, please start early, and show us what ideas you have! You can submit a draft proposal on the GSoC website, ask us for reviewing, and keep working on it. So we can work together to make them good!

Thanks yorik for the detailed answer, I’m looking forward to make a good proposal and give this project a good start.

Nishanth I recommend to give BRL-CAD’s MOOSE library a try. It’s the whole BRL-CAD core in one library (.so/.dll) with a C++ wrapper API.

Build and install BRL-CAD first. Then build and install MOOSE. After doing so, the BRL-CAD installation isn’t needed any more. It can however be handy to have it.

There is an example in MOOSE, which demonstrates how to build programs with it. For a more complex example, there is the MOOSE port of BRL-CAD’s maybe next generation GUI arbalest.

hlw
yorik

last time you asked me the things i gonna explain you
please read my document
how can I do this thing
but in case you don’t find what you want please contact me anytime.
this is a demo representation of your question for free cad
1st page represents i can do this for the entire page in a much better way.
please go through this
https://colab.research.google.com/drive/1_Tyde6jHZ84F_RQy-0xat2AV8EAw9QHO?usp=sharing

and i also added the doc file where you can understand what i want to say.
but in case if anything you want to ask please discuss how better can perform for this task.

all the answer should attech 3 documents file please go through it.


in 1st file the information of whole the link is available in free cad i grap it by api scrapping.
2nd file is text one just a demo view of it where all the information of 1st page is available i should grap.
[/b]
i drop my idea here and I also mailed you please go through my document. in last of your mail you asked me two questions.

  1. Designing an online HTML output means: we have our documentation in markdown format. How do people read it online. Do we use the wiki, simply? Or do we pass the files through some static site generator?

ans):-According to me I can the following things

Using a wiki is time taking like opening again and again if they want to move from one place to another.wihtout lose of any data.
So basically the thing I can do is that I can 1st store the entire data of documentation by the using of (Machine Learning) Python Program after that the thing I can do is to create a self made API site the basic work of to provide the data in offline mode also without using the internet or by the internet as they want they can just open and search whatever the want all the information available on like a free cad site I can add the the information of the free cad website in that website and just scroll down and just in one click the data should be printed.


Defining what contributors should do while the wiki is in read-only mode means when we migrate the current wiki to a new system, it might take a while. How do we make sure current wiki contributors do not get bored and leave, how could we keep them informed and what do we suggest them to do?
ans) without disturbing of any information we can easily pass the information of one page to another and user can eaily and attractive manner get this information without wasting of extra time.


Define how dynamic contents such as FreeCAD API documentation can be extracted and added automatically to the documentation. FreeCAD has in-code documentation. How could we extract and join that documentation to the general, manually-written doc?

i should add answer with my demo


3rd file is a document file where I just explained the summary.
read and give feedback how can i much improve this one.
freecad.csv (5.2 KB)
myfile.txt (29.4 KB)
freecad.docx (623 KB)

this is just a demo view how can i plan and do.

definitely

Submitted a draft for the materials DB one. I’ll try to do the motor workflow one tomorrow. I was waiting to make a full description, but I guess I’ll file a draft early on as suggested.

Also, how do I go about contacting developers here? I found some support from IRC/Discord, but I couldn’t find you (Yorik), Uwe or Bernd in Discord. I suppose forum PMs are the way?