Open Source CAD and Open Science

Totally agree. I learned OpenSCAD when I joined the OpenFlexure project. You have to think about parts in a totally different way. For some things I find it is better, for others it is worse, but a total mental rewire it is for sure. The thought process has almost no similarities. If you try to do graphical CAD how you would OpenSCAD the result will be atrocious, and vice versa.

3 Likes

Couldn’t there be a way to keep those alternatives open and make them competitive with proprietary CAD software? I was thinking a lot about motivating universities to switch their budgets for software licenses to financing open-source. Maybe we could create a “coalition of the willing” or set up an open letter here in the GOSH community? If multiple organizations would move in that direction, this could be an opportunity to get the required sums together.

4 Likes

Having something like a coalition, or even one major player similar to what CERN did with KiCAD, would be amazing. I would argue that there’s a broader need for advocating to those groups for open source software as well, that’s something I know that @jcm80 and others think about on the institution side.

3 Likes

To give some context I build open source CAD tools for microfluidics as a part of my research. Check out (https://3DuF.org)

Some of the big things I’ve noticed (wrt your questions):

  1. Open source CAD can work but it’s hard to get engineers to use it because the existing commercial offerings like fusion360 blow tool like FreeCAD out of the park.
  2. The project I look at for microfluidics can definitely need open source cad tools because tools like fusion or any other mechanical design cad tool makes it miserably hard to create, share and tweak the designs of the devices.

The problems I’ve been facing:

  1. Building/Managing a community of open source contributors . Currently I have around 4-5 undergrads from Berkeley and BU contributing to the codebase but since they’re beginners, there’s a mentorship cost.
  2. Funding, tbh there isn’t any we have found. We tried CZI but our project isn’t big enough as per their metrics.
  3. (This might be more microfluidics specific) Running projects that will use both diy bio hackers and software devs to showcase what the tools can do for a given problem space. I haven’t found too many people who do microfluidics to actually code or be able to contribute much.
  4. User preferences and hate (oh boy !) - this has been a really jarring issue, most users we’ve been talking to pile on the hate if they find one small bug that annoys them. This is further made worse when the design interfaces and keyboard shortcuts are different from what they’re used to.
  5. Proprietary design formats and lack of libraries, this has been a real pain because it limits my ability to import fusion360 archives and solideorks parts. FreeCAD has been the only one so far that has a sensible-ish api for pulling the parametric design info from the files.
3 Likes

Mental rewiring is needed for definite in terms of switching between programmed cad and drawing based. I would love a cad program that merged both. In my experience (cad for robotics, automation, and general design work) sketching is much faster for initial prototyping than programming. However, I find duplication of objects or other more monotonous or versioning based tasks annoying without programmatic features (e.g. openscad).

One idea could be a program where graphical features that are drawn are shadowed by code thats editable allowing interoperability between the two approaches. Just a thought, this may be unrealistic in development terms as the two approaches are their own niches at this stage.

2 Likes

I’m also curious about merging of these approaches: direct manipulation and programmatic declarations. There is some interesting work on this by Ravi Chugh, though it focuses on drawing SVGs rather than CAD. I’ve also not found the prototype they develop to be very usable; very interesting but not that usable. For programmatic CAD there is Libfive which has some capability for direct manipulation.

2 Likes

Thank you to everyone for their replies. I started to reply to specific comments, but then thought it would be best if I just summarize what we have so far and then add some comments at the end. Please correct me if I’m missed any relevant comments or incorrectly transcribed what was written.

Community

  • There is friction in teaching a non-scientist CAD person what needs to be designed, so it is best if the tools are readily usable by the end user (a scientist).
  • FreeCAD adoption is challenging due to hostility from the community to newcomers with new ideas.
  • Moving between FreeCAD and OpenSCAD requires a large shift in mindset.
  • Building and managing a community of just 4-5 contributors can be a time drain, especially if the contributors need to be mentored.
  • Finding contributors at the intersection of the science and the CAD/code is difficult.
  • Users of open source software can be harsh and demanding. Small bugs, keyboard binding preferences, etc can all cause users to complain.
  • We should have a roadmap that creates a large enough “commons” codebase that we can reuse. Code debt is real problem if we want to keep these project alive long term.
  • A platform cooperative might be a useful organizational structure here.
  • It is also very important to allow the creation of a commons: I can share my model (make publicly available), search and import models. If I know that the tool connects me to an ecosystem of designers and allows me to easily build on their work I’d be more inclined to adopt it, even if not so sleek.
  • Another value dimension is accounting, use some type of a NRP (network resource planning) to record contributions to models, which allows you to build economic and social metrics on top.
  • If your tool doesn’t facilitate collaboration, remix it is not suitable for the open source mode of innovation.
  • The philosophy around the development of open source scientific instruments also applies here.

FOSS CAD Features

  • Topological naming stability is required so models do not break as they’re being altered.
  • Good assembly features (strong constraint system).
  • Mechanical drawing support with callouts for tolerances, parallelism, etc, and automated callouts for things like holes.
  • Leverage strengths of programmatic CAD and graphical CAD, possibly by sharing parameters between the two.
  • Sketching (graphical CAD) is much faster for initial prototyping than programming.
  • Duplication of objects, other more monotonous tasks, or versioning based tasks, is annoying without programmatic features (e.g. openscad).
  • Needs to allow synchronous or real time collaboration.
  • You can also use the machinery of Github for versioning and forking / merging and see how models interact with each others.

Funding

  • Funding has been hard to come by.
  • We really need huge investment in open source CAD for open hardware to be sustainable.
  • What about motivating universities to switch their budgets for software licenses to financing open-source? If multiple organizations would move in that direction, this could be an opportunity to get the required sums together.
  • Maybe we could create a “coalition of the willing” or set up an open letter here in the GOSH community?
  • Maybe a sponsorship for mechanical CAD like what CERN did with KiCAD.

Proprietary vs Open Source CAD

  • Proprietary alternatives like OnShape and Fusion360 are often favored, especially when very complex things are being designed.
  • Proprietary CAD always carries the risk of a change of license, buyout, lack of universal access to the tool, etc.
  • FreeCAD has improved, but has not been good enough for complex projects with a lot of precise assembly work.
  • Commercial offerings like Fusion360 blow FreeCAD out of the park.
  • FreeCAD seems to be improving in multiple areas, and has some developers who are being paid now.
  • Proprietary CAD file format lock-in and lack of the ability to share between software packages is a problem.
  • Proprietary software often has a lack of libraries.
  • FreeCAD has a sensible-ish api for pulling the parametric design info from the files.
  • If your open source CAD just allows individuals to work in a silo you’re very far from what the proprietary online CAD platforms offer, you’re playing a loosing game.

My Own Reponses

  • It seems like the discussion around creating a “coalition of the willing” or setting up an open letter here deserves its own thread.
  • It would be interesting to know the reasons why KiCAD attracted the support of CERN, whereas nothing similar has happened with any of the existing mechanical CAD projects. Is it lack of feature parity with closed source counterparts? Off-putting community? Just bad luck?
  • Is crowdfunding a thing in open science? I haven’t noticed Patreon, KickStarter or CrowdSupply being used for open science (and open science hardware), but I could have just missed it.
  • Lack of support for mechanical drawings is something I have come up against before. With the focus on digital desktop manufacturing makers seem less concerned than ever with drawings in my experience. In the past I’ve ended up exporting things to SVG or DXF and then finishing the drawings in external tools. Automatic callouts would be fantastic, even if they’re not perfect. As long as they give a good starting point I think they would be useful.
  • It would be interesting to see some sort of community hackathons, competitions, etc that pairs CAD and software developers with open science practitioners. But then you run into the challenge of the time required to teach people the skills they need to contribute.

One idea could be a program where graphical features that are drawn are shadowed by code that’s editable allowing interoperability between the two approaches.

That is essentially what Semblage does, and the goal with that project is to help address several of the technical issues raised in this discussion. Within the next alpha release or two I’m hoping to start doing videos and/or livestreams showing how to develop mechanical designs with Semblage. I’d like to share some of those here to get early feedback from this group.

6 Likes

Just to add something here. I think if we have a coalition. We should have a roadmap that creates a large enough “commons” codebase that we can reuse. Code debt is real problem if we want to keep these project alive long term. For instance, I’d be happy to contribute to library projects that solve some the issues I have with reading formats, etc.

Let me drop another keyword as suggesstion for funding and organization here: Platform cooperative - Wikipedia

My high level requirement for a CAD designed for open source development is to allow synchronous or real time collaboration. See Onshape for example. Wonder if such an application can be built on top of p2p or federated infrastructures to avoid centralization of resources.
It is also very important to allow the creation of a commons: I can share my model (make publicly available), search and import models.
From there, you have extra value dimensions that will incentivize people to use the CAD. If it is only for me to build a design I’ll go for the sleekest one, and proprietary software is notorious for intuitive UI. But if I know that the tool connects me to an ecosystem of designers and allows me to easily build on their work I’d be more inclined to adopt it, even if not so sleek.
Once you have things connected you can design other features that add value. For example, you can provide comparative metrics for models, or you can add the ability to form projects (clusters of models). You can also use the machinery of Github for versioning and forking / merging and see how models interact with each others. Another value dimension is accounting, use some type of a NRP (network resource planning) to record contributions to models, which allows you to build economic and social metrics on top.

In short, we need to understand that open source is about collaboration. If your open source CAD just allows individuals to work in a silo you’re very far from what the proprietary online CAD platforms offer, you’re playing a loosing game. A successful open source CAD software is an ecosystem service. In other words, it allows agents to form relations, share / aggregate, search and use, on top of its main function. That is because a tool is not just about what we do, but also about how we do. Since open source is all about collaboration, if your tool doesn’t facilitate collaboration, remix it is not suitable for the open source mode of innovation.

1 Like

We apply the same philosophy to the development of open source scientific instruments

Main characteristics of hardware deliverables

  • Open source - share design and permission for economic exploitation, build communities
  • Shareable - easy to find, use, transport, facilitates transactions among users, safety and security
  • Modular (perpetual and customizable) - see this link about a specific effort to define a standard for scientific parts.
  • Interoperable - use shared standards, allow combinations
  • Socializable - allow sharing of actions made through the intermediary of these deliverables
  • Ecological - sustainable
  • Ethical
  • Accessible - low cost, low assembly skills, local materials

Note the two dimensions of Shareable and Socializable. This speaks directly to the open science mode, which relies on collaboration and mutualization of processes and resources.

More here.

I have updated my summary above to include the latest comments.

First time here. It’s some time since I’ve last done any real science/research work but I still have friends working on that, and from my part I’m always interacting with a handful of universities FabLabs in my region. Some thoughts:

KiCAD x Generic CAD

My experience with KiCAD is very limited (I basically know whats it is and worked on projects where someone else used it), but one thing that I noticed is that most people are happy to just have a PCB that works. Some folks may be very particular about layout and aesthetics but functional tends to win, and that’s something that can be left for the computer to do. Generic purpose CAD on the other hand is a much more open pursuit.

About FreeCAD:

Most people are still under the impression that FreeCAD is way too inferior as compared to Fusion 360. That’s not true for the most part anymore. FreeCAD should get a major version renumber to reflect the accelerated maturity and help position itself as a much more mature project.

I’m often overwhelmed by the “multiple competing workbenches”. Options are good but too many options may be a problem. A better UI to navigate and select workbenches would be nice. Merging and deprecating should also be considered.

Topological naming is a problem, but the main problem for me as a newcomer was to understand how exactly I need to structure my work to avoid the worst cases. I believe this will still be useful even after RealThunder work is merged in the main branch.

Assemblies are very complex to do correctly. I’m thinking about it a lot. I started my career as a programmer and it seems to me that assemblies are a bit backward in the way they are put together. I mean: as a programmer we learn to think “top down”, but assemblies require some “bottom up” thinking to get right.

About OpenSCAD, CadQuery, CadHub, Semblage and the entire CodeCAD movement:

We saw over the years how the frontend Web development evolved. Today we have an interesting situation: prototyping is often done in a interactive design tool (Illustrator for standalone work, Figma for team-oriented work), but the final version is usually written as code, using programmer’s IDEs and stuff. Maybe we should follow the same path: do the sketching in a interactive environment, and later write the code to implement the parts.

4 Likes

First time here as well.

I know that I really like working in Fusion360 and Onshape and that I already find Solidworks outdated in terms of UI even though I started and was trained with Solidworks.

I think that Code based CAD are not the same as graphical CAD and never will be because as Julian mentionned in code based CAD you have to make your calculations in advance and really think about how to design your part where in graphical CAD in my experience I unfold my thoughts into the CAD software (after having made a sketch on paper off course) and rework them once I figured out the constraints that will limit me.

The biggest problem that I have with FreeCAD is that you cannot make any modifications in the creations while keeping your progress.
I have also experienced that the FreeCAD community is not very friendly regarding welcoming non coding (or people who do not want to code while 3D designing).

FreeCAD has indeed advanced a lot recently but it still remains really backwards in terms of user-friendliness, and I think functionalities.

Despite those disadvantages, I know that OpenSourceEcology is working exclusively with FreeCAD and that it’s quite a big undertaking, however, I am not sure they are on this forum.

1 Like

Hello!

Very nice thread.

Personally for CAD I use Blender with the precision drawing/modelling tools. Recently the release of CAD Sketcher made it very fast and intuitive

I heard about this the other day, that it should make it easier to work with Blender and Python API: EasyBPY (GitHub)

And BRL-CAD should be part of this thread as well.

Somewhat on this topic, and perhaps already mentioned, but one thing that I’ve been thinking about for next time. The Gosh council has funds to set up some programs, I think a really useful program for our community would be a bit of funding to go towards workshops about converting open projects that were made with closed source tools into entirely open projects.

For instance, I know I myself have made plenty of open designs that I whip together quickly with (evil) fusion 360, And it would be cool to have some dedicated time and funding sometime to go back through projects like that and recreate them with open CAD software.

1 Like

Count me in! Espcially in simple DIY electronics there are too many projects out there using either “hand-drawn” but open schematics, or are kinda closed, but easy to reverse engineer and make open using kicad.

Been doing a few here:

put the Franzis Bat-detector into kicad and working on translating to english form here:
https://www.elektronik-labor.de/Lernpakete/Fledermaus.html

or leaking other projects that were not open source (but based on some, closed later for product)… baaaaaaad:

1 Like

@hikinghack and @dusjagr, this workshop seems like a really good idea. I would be up for it.

I think we can probably increase the value of the workshop if we get some documentation people in to document the pain points and roadblocks that people face when trying to recreate models. Some of these will be related to every program working differently, but it is useful user feedback for projects. Any bugs or missing functionality that keep coming up could be something that the community could fund developers to work on. Funding the CAD development specific would be outside GOSH scope but would be well within scope of the Open Toolchain Foundation [Join us on Matrix!].

3 Likes

OpenSCAD, FreeCAD or Onshape.
OpenSCAD is particularly useful when what you want to do is naturally expressed using constructive solid geometry, and even more so if you want to share your work.
But OpenSCAD models only geometry, not operations. If you are thinking in terms of parts and operations, FreeCAD is what you want to use of the free alternatives.
FreeCAD has much richer features and traditional design, but I found it quirky and crash-prone, and sometimes the UI would get stuck and I have had to type python into the console to complete operations.
I have also tried Onshape in the browser, but found it unusably slow, and the dimensioning tool was fairly crude compared to what I was used to in FreeCAD.