How many man hours would FreeCAD need to reach feature parity with SolidWorks/SolidEdge?

Here's the place for discussion related to coding in FreeCAD, C++ or Python. Design, interfaces and structures.
mumbricht
Posts: 5
Joined: Fri Aug 14, 2020 11:39 am

How many man hours would FreeCAD need to reach feature parity with SolidWorks/SolidEdge?

Postby mumbricht » Fri Aug 14, 2020 11:49 am

I'm a startup CEO and we need CAD for our part and assembly designs. I'm a Linux and FOSS fanatic, but in its current state, FreeCAD is insufficient for our needs. I've bitten the bullet and decided to have our server Linux based, and our clients Windows based.

I would really like to go back to a full Linux engineering stack, but the only way for that to happen is for an enterprise level parametric CAD system to be made for Linux. FreeCAD works, it's fully parametric, but the interface is too clunky for us to use effectively. I think it also lacks a couple critical features (double-curve filets for wing fairings) that we need. (Full disclosure: my CAD skills are pretty rudimentary and I'm going off of what my staff is saying)

The question I have is, how much money would we have to dump on the FreeCAD team to make something that compares favorably to SolidEdge/SolidWorks?

As stated in the wiki, this is a completely volunteer project. My intuition would say that it's about .75 Million/yr to get the core design team to work fulltime + the admin staff required. That's the equivalent of ~40 Catia/NX licences. That makes it more than most companies spend on their CAD suite, but about a dozen companies pitching in their CAD budget would more than cover the costs. That said, I design aircraft, not software so I'm not familiar with the scope of this kind of project, or the particular difficulties of a parametric CAD software.

Anyone have a guess as to how realistic this idea is?
User avatar
Kunda1
Posts: 8772
Joined: Thu Jan 05, 2017 9:03 pm

Re: How many man hours would FreeCAD need to reach feature parity with SolidWorks/SolidEdge?

Postby Kunda1 » Fri Aug 14, 2020 1:07 pm

This will be a long answer to show the complexity involved to your 'give me the bottom line' question. I won't be answering with any figures or sums of $ but instead provide some context for other who can in this thread moving forward.

We should probably have a dedicated wiki page for this type of question as we've addressed it over the years. I can recall @abdullah giving a very fine assessment but can't seem to find it at the moment.

An aside, In general and quite nuanced, we aren't seeking feature parity. This is a known gripe in the opensource world
See the GIMP team's Pat David give a talk about this at SCaLE 2016
https://www.youtube.com/watch?v=JBmdbipkbrk

Although, I do grok you coming from a business perspective. So, FreeCAD is all volunteers as you understand. We have no official support or premium channel for companies. We are currently in the beginning process of forming an organization with the Software Conservancy which can potentially lead to the project being able to receive support through donations and grants internationally in a correct legal fashion.

There are ongoing efforts to improve FreeCAD on several fronts. I'll list several but will not go in to super depth.
  • The main core devs who code in their leisure and for fun. AFAIK they don't receive commercial funds to improve FC for a specific entity. @yorik has a patreon and other means of crowdfunding to support his efforts in the areas of his expertise (Architecture) but not limited to.
  • There are devs that are "becoming" core devs who are introducing functionality that will make FC a full CAD/CAM stack. @realthunder and his LinkStage3+Assembly3 branch introduces App::Link and a functioning Assembly workbench. His efforts are also improving the UI/UX of FreeCAD.
  • There are other Assembly solutions (Assembly2+ and Assembly4) that have different implementations to approach Assembly. These efforts arose out of a need for a functioning assembly workbench. The devs of these workbenches stepped up and made it happen. All current working assembly solutions (A2+, A3, A4) have an active userbase. Hopefully we unite all these approaches.
  • TechDraw workbench which evolved out of the now obsolete Drawing Dimensioning Workbench is feature rich but still has a ways to go. There is only one main dev for that workbench, @wandererfan
  • FEM/FEA workbench has one main dev, @bernd. It has a very active and ongoing development effort.
  • Same can be said for Path and Draft workbenches.
  • Then there are ongoing projects we call 'External Workbenches' and code snippets/macros, downloadable through the Addon Manager, of projects all in different states of completion and activity.
  • Other efforts that aren't accessible via the Addon Manager (mosty by activities in the forum) that are providing enhancement/fixes to the FreeCAD codebase or linking FreeCAD with other software solutions.
This is the complexity we are dealing with. Again, maybe this can help give some context to this thread moving forward.

An aside: Throwing a bunch of money on a project, especially an opensource project, does come with some challenges. So many cautionary tales of non-profits throwing money in to developing countries and bringing innovation with all the goodwill in the world only to see regions further fall in to disarray because the approach over-rode an inherent organization and ecosystem.

If you want to look at approaches that work, Google Summer of Code has had a high rate of success within FreeCAD (but not 100%).
Want to contribute back to FC? Checkout:
#lowhangingfruit | Use the Source, Luke. | How to Help FreeCAD | How to report FC bugs and features
vocx
Posts: 5206
Joined: Thu Oct 18, 2018 9:18 pm

Re: How many man hours would FreeCAD need to reach feature parity with SolidWorks/SolidEdge?

Postby vocx » Fri Aug 14, 2020 3:49 pm

mumbricht wrote:
Fri Aug 14, 2020 11:49 am
...I think it also lacks a couple critical features (double-curve filets for wing fairings) that we need. (Full disclosure: my CAD skills are pretty rudimentary and I'm going off of what my staff is saying)

The question I have is, how much money would we have to dump on the FreeCAD team to make something that compares favorably to SolidEdge/SolidWorks?
This is entirely subjective, so we need more information of what exactly you need. I am always surprised by the amount of people who post in this forum trying to design airplanes (wings) and boats (hulls). Where are all these millionaires coming from who seemingly need to design air- and watercraft from scratch?!

Truth is, if you read the entire thread, Discussion: FreeCAD is not ready for 1.0, you'll notice that many users claim that FreeCAD is already better than SolidWorks and other commercial programs. For their intended usage, like designing printed circuit board components, or doing structural static FEM analysis, FreeCAD is good enough, which means they don't have a lot of incentive to develop FreeCAD much further than what the current software offers.

So, what you need is to explain your requirements with a lot of detail; and this is a critical thing that is missing; many long time users and developers have a "feeling" for the general state and usefulness of the program, but none of us have a complete roadmap of what we want for the future. We want it to be "better", but there is no clear direction or milestones that dictates what needs to be developed at a certain point in time.

This is my main criticism with the other thread. As long as we don't have a clear direction, we will have to advance in small, relatively slow steps, to improve things. I, for example, have the general goal of "make the Python code better, more readable, more structured, fix bugs along the way, and write documentation"; but that's my personal objective, it's not really coordinated with others, and I don't deal with the core code that is written in C++.
As stated in the wiki, this is a completely volunteer project. My intuition would say that it's about .75 Million/yr to get the core design team to work fulltime + the admin staff required...
Maybe you'd like to explain the reasoning behind your cost calculation. I've stated in different posts that we need a full time person for coordination tasks. There are members here who seemingly spend a full day answering user questions; but there are relatively few people who do development in an organized fashion. Usually, we solve issues that we detect in the software, and expand the software with new tools when we see it is useful and not too hard to do so. But we need that person who is completely involved 8 hours per day in planning and building a strategy, or setting milestones, and coordinating the top volunteers.

How much would it cost to pay that person? Depends on where that person wants to live, and their personal expectations. You'll need to pay a lot for somebody living in Monaco ($100 K/year), and relatively little for somebody living in the Philippines ($15 K/year). If a developer in Germany lives comfortably on $50 K, with benefits and holidays, why would that person leave that job to work full time for FreeCAD? The incentive or passion needs to be high enough. I don't see a need to spend $750 K per year; that would be a very generous amount but I wouldn't know where to allocate that quantity. However, $100 K/year for two C++ and Python developers? That seems very reasonable.

Also, what happens if your desired feature (double-curve filets for wing fairings) is implemented within a month? Would you continue paying the rest of the year? This is also what I mentioned above; most people want the software to be good enough for themselves, and once their needs are covered, they don't have incentives for improving other parts.
Always add the important information to your posts if you need help. Also see Tutorials and Video tutorials.
To support the documentation effort, and code development, your donation is appreciated: liberapay.com/FreeCAD.
User avatar
apeltauer
Posts: 340
Joined: Fri Aug 11, 2017 2:19 pm

Re: How many man hours would FreeCAD need to reach feature parity with SolidWorks/SolidEdge?

Postby apeltauer » Fri Aug 14, 2020 3:50 pm

My two cents to this:
If you want to use FC in a business environment you first need to check what you can do today with the current state and then start a discussion what you are expecting what it should do. Then i think you get a clearer view what you have to invest for it. In our case, nearly all requirements are satisfied, so we are using FC in our business context.
Other thing is if you need some changes you are able to make them by fork the project. If you want to contribute your changes go ahead and share them.
And if you can arrange some man power to make the project better, this would be even better...
mumbricht
Posts: 5
Joined: Fri Aug 14, 2020 11:39 am

Re: How many man hours would FreeCAD need to reach feature parity with SolidWorks/SolidEdge?

Postby mumbricht » Fri Aug 14, 2020 4:28 pm

Thank you for your replies. I understand that the term "feature parity" is loaded with some baggage, and in my case I'm really using it as shorthand for "does what I need it to do, and what I expect other people need it to do" which is obviously a very subjective statement.

I'm going to address some of Vocx's questions:
vocx wrote:
Fri Aug 14, 2020 3:49 pm
...we need more information of what exactly you need. I am always surprised by the amount of people who post in this forum trying to design airplanes (wings) and boats (hulls). Where are all these millionaires coming from who seemingly need to design air- and watercraft from scratch?!
We're designing an electric racing aircraft -- from scratch -- for competition in Air Race E. We are using that competition as a research basis to develop DEP technology for application in a future electric general aviation aircraft and a hybrid business jet.

So I guess I'm one of those "millionaires who needs to develop aircraft from scratch".

We need a tool which can take preliminary design models from OpenVSP (.stp, .iges files) and slice up the surfaces for conversion into alierons (expand the trailing edge angle, mate the separated edge to a cylinder, and construct a hinge line) and other control surfaces. We need to treat the layers for different composite fiber orientations, and insert sandwich material. We need to design mechanical joints. We then need to generate an FEA mesh for structural analysis.

Finally, we need to take negatives of all these subcomponents, in order to mill molds for the composite layup.

I believe most of those aspects are feasible in FreeCAD.

The famous compound curvature is a question of wing and landing gear fairings which are fundamentally fillets with varying radius. This is a more complicated problem, but since it's relatively limited in scope, we can use 'artesanal' methods to construct it IRL without modelling it first. Future prototypes, however, will require properly CFD optimized fairings.
Maybe you'd like to explain the reasoning behind your cost calculation.
The core team is 5 people according to the wiki. As a rough estimate, I assume engineers to cost 500k per year, and add 1/2 an administrator (lawyer, accountant, etc) for each engineer, at the same rate. Hence, 750k per year. This is obviously a very rough estimate.
Also, what happens if your desired feature (double-curve filets for wing fairings) is implemented within a month? Would you continue paying the rest of the year? This is also what I mentioned above; most people want the software to be good enough for themselves, and once their needs are covered, they don't have incentives for improving other parts.
Like all FOSS software, there's a tragedy of the commons dilemma for everyone involved. All I can say is that commercial software to the level we need in the long term is 20k per seat, with 2-3k per year per seat in maintenance contracts. I would gladly pay the same for tech and feature support if it means that we can use Linux and I don't have to futz around with another license server.

One option that I'm considering is to simply hire a software engineer to cover our needs and contribute full time, either as a fork or as part of the main project. But then you have a core contributor who quite clearly has a conflict of interest.
openBrain
Posts: 4874
Joined: Fri Nov 09, 2018 5:38 pm

Re: How many man hours would FreeCAD need to reach feature parity with SolidWorks/SolidEdge?

Postby openBrain » Fri Aug 14, 2020 5:32 pm

mumbricht wrote:
Fri Aug 14, 2020 4:28 pm
One option that I'm considering is to simply hire a software engineer to cover our needs and contribute full time, either as a fork or as part of the main project. But then you have a core contributor who quite clearly has a conflict of interest.
I tend to think it's the way to go at the moment. I don't think FreeCAD is ready to become fully financed. Neither in its organization, nor in its mindset.
Hiring someone to code the missing features (or offer a bounty to do so) is IMO a good way, especially if the work is given back to FreeCAD code.
I see no conflict of interest in this. It should not prevent other developments to live aside.
Just one thing you should be aware : one of the main FreeCAD dev paradigm is that it uses a stock version of OpenCasCade (OCC) geometric kernel. If you need a specific feature, it could be that you encounter a limitation coming from OCC (and not from FreeCAD itself). At this time it could be a tough decision between maintaining your own OCC fork, or enter the development of it (IMO, it may take some time for pull requests to me merged).
User avatar
kkremitzki
Posts: 2168
Joined: Thu Mar 03, 2016 9:52 pm
Location: Texas

Re: How many man hours would FreeCAD need to reach feature parity with SolidWorks/SolidEdge?

Postby kkremitzki » Fri Aug 14, 2020 5:56 pm

Although it is difficult that we are in the midst of forming an organization that could receive financing in this way, don't forget that the core CAD kernel of FreeCAD, OpenCASCADE, is maintained by an actual company which can be researched/contacted at https://www.opencascade.com/. There has been a lot of good work maintaining our issue tracker so that problems we have which can be traced to upstream issues are categorized here: https://forum.freecadweb.org/viewtopic.php?f=10&t=20264

So, companies interested in supporting FreeCAD (and open source CAD in general) can use money right now to work with OpenCASCADE SAS to fix issues in the OpenCASCADE library.
Like my FreeCAD work? I'd appreciate any level of support via Patreon, Liberapay, or PayPal! Read more about what I do at my blog.
vocx
Posts: 5206
Joined: Thu Oct 18, 2018 9:18 pm

Re: How many man hours would FreeCAD need to reach feature parity with SolidWorks/SolidEdge?

Postby vocx » Fri Aug 14, 2020 7:05 pm

mumbricht wrote:
Fri Aug 14, 2020 4:28 pm
... I'm really using it as shorthand for "does what I need it to do, and what I expect other people need it to do" which is obviously a very subjective statement.
Correct. So this is what I mentioned before. For many users, FreeCAD is already better than commercial software, for their particular usage, of course. And it's gratis.
The core team is 5 people according to the wiki.
Where did you read this information exactly? Believe it or not, the wiki has a lot of information, but much of it is disorganized or obsolete.

FreeCAD has more than 5 people with repository merge rights, but even they aren't exactly establishing roadmaps and plans for future development. Somebody who has a global overview is needed. The current core team consists mostly of maintainers for specialized workbenches, which are more or less independent from each other; Jürgen, the original author is no longer active; another original author, Werner, handles the core aspects of the software, mostly Part and Mesh, the core C++ capabilities of FreeCAD; the third big one, Yorik, handles Draft and Arch workbenches, mostly Python code; sliptonic handles the Path workbench, mostly Python code; Bernd maintains the FEM workbench, mostly Python; Wandererfan develops TechDraw in C++; and Abdullah handles the Sketcher in C++. The only core developer is Werner, the other workbenches mostly build on top of these C++ components, so they can be treated independently.

For your case, you probably need improved solid modelling capabilities, so this would need to be developed in the core; but if you need Python tools that can be created with existing objects, that would be easier, and could be done by community members who are mostly Python developers (external workbenches).
One option that I'm considering is to simply hire a software engineer to cover our needs and contribute full time, either as a fork or as part of the main project. But then you have a core contributor who quite clearly has a conflict of interest.
I agree with others; this is probably the best course of action that you can take. If you hire a full time developer, you can service your own needs, while at the same time contribute general tools and fixes to the project. I don't think there would be a conflict of interest as long as you don't plan on rewriting big parts of the software; that would be time consuming and it would not be very helpful to you anyway; I think what you'd like to do is to extend and fix parts of the current software. Precisely, I was recently hired by a company that wanted to do that; they wanted to improve the Arch Workbench for their building calculations; that effort meant that I focused on a specific area of FreeCAD, not to fork it but to improve it in general so that it was helpful for their project. In my case, the project was cancelled almost immediately, so I'm no longer working for them.

So, if you would like to hire a developer to help you improve something you need to consider whether that is a long term commitment, or a short term commitment to fix a single bug, or create a single tool; the latter could be handled simply with a bounty. And as openBrain and kremitzki say, you also may need to talk to OpenCASCADE if the modelling problem is there and not in FreeCAD itself.
Last edited by vocx on Wed Sep 02, 2020 6:36 pm, edited 3 times in total.
Always add the important information to your posts if you need help. Also see Tutorials and Video tutorials.
To support the documentation effort, and code development, your donation is appreciated: liberapay.com/FreeCAD.
User avatar
saso
Posts: 1586
Joined: Fri May 16, 2014 1:14 pm
Contact:

Re: How many man hours would FreeCAD need to reach feature parity with SolidWorks/SolidEdge?

Postby saso » Sat Aug 15, 2020 10:04 am

vocx wrote:
Fri Aug 14, 2020 7:05 pm
One option that I'm considering is to simply hire a software engineer to cover our needs and contribute full time, either as a fork or as part of the main project. But then you have a core contributor who quite clearly has a conflict of interest.
I agree with others; this is probably the best course of action that you can take...
If one is interested in improving the functionality for their own needs then this can indeed be a good way to go, if one is however interested in improving the project as a whole then this is IMO the exact wrong thing to do, it is the "easy path" that we are choosing again and again, but also the path that more often then not brings us in the end one step forward and two steps back. What can such efforts give us? The fourth architectural design method? The fifth assembly workflow? The sixth Part container variant? The seventh surfacing workbench?... And none of it really working together?? If one is serious about improving FreeCAD as a project, then at least for some time all efforts should go in to consolidating this existing individual developments. Only someone that does not know and does not understand the different cad concepts and methods can say that FreeCAD is comparable or even better then commercial cad systems, this is complete nonsense and we need a more common will and support to put in the needed effort to change this.
Last edited by saso on Sat Aug 15, 2020 1:07 pm, edited 4 times in total.
User avatar
vanuan
Posts: 465
Joined: Wed Oct 24, 2018 9:49 pm

Re: How many man hours would FreeCAD need to reach feature parity with SolidWorks/SolidEdge?

Postby vanuan » Sat Aug 15, 2020 12:15 pm

saso wrote:
Sat Aug 15, 2020 10:04 am
If one is serious about improving FreeCAD as a project, then at least for some time all efforts should go in to consolidating this existing individual developments.
This brings us to the conclusion that the main issue of the FreeCAD project is a lack of full-time maintainers who have the authority to make decisions, have a common vision and can merge/review/reject improvements quickly.

Existing maintainers seem to have a full-time job in the construction industry. This is great since they know what the commercial products are missing apart from price. But this is also terrible since they don't have full-time experience in software development projects. I might be wrong, but that's the impression.

In open source projects, it's very rare that project members have professional experience in both the domain field (AEC, part engineering, 3D modeling) and software development. That's why not a lot of open source projects succeed.

In agile software development projects you have the following roles:
  • Product owner, who has a vision what should be done, which use cases the software product should solve, what are the priorities
  • Development team, who has skills to implement owner's vision in reality
  • Quality assurance team, who verify that implementation meets the quality criteria, forces developers to fix bugs before the implementation is released to stakeholders
  • Stakeholders - those who benefit from a software solution (business owners and end-users)
Let's check what we have.

Product owner? Strictly speaking, no. There are some projects: https://wiki.freecadweb.org/Development_roadmap but there's no indication which should go to which release. There's a bug tracker: https://wiki.freecadweb.org/Tracker But everything seem to be discussed on the forum anyway. And there are no clear user stories, no rationale described.

Development team? Kind of. There are a lot of contributors with various skill levels. But there appears to be no productive collaboration. There are no regular meetings, there's no common agenda.

Quality assurance? Not at all. Regressions are detected days and weeks after the code is merged. Some of them are not detected at all. CI tooling is limited and doesn't catch issues that are easily preventable.

Stakeholders? Those are mainly open source enthusiasts and curious users. I doubt that professional design/engineering studios use FreeCAD exclusively. Maybe only for some limited use cases.

So is there a solution? I'd propose this:
  • Quality assurance. Invest heavily in tooling and infrastructure. There should be heavy machines that could compile C++ code for a fast feedback. There should be unit tests that cover most of use cases and all edge cases. There should be code coverage tools that fail if there's not enough tests.
  • Stakeholders. Faster packaging and releasing. There should be a faster release cycle: stable versions every couple of months, beta versions every month, dev versions every week, canary versions daily
  • Development. Provide UI mock ups and diagrams to illustrate your ideas. Picture is worth a thousand words. I recommend Figma for UX, icons; Planttext for UML; Miro for architectural, conceptual and component diagrams. Set up a meeting schedule. Even if nobody shows up, you would have to prepare a meeting agenda for each meeting which is useful on its own.
  • Product owner. Define the scope of each workbench. What's in and out of each scope. Consolidate ideas and document the differences in a clear and concise form. Provide a decision framework: are you a benevolent dictator, a democrat or anarchist? Some decisions must be done, sooner or later. GTD model of governance is not scalable: you get many things done, but those would be incompatible. Somebody needs to mediate.
Some of these points can be done by hiring a dedicated software engineer. Some are impossible without infrastructure and project maintainers.