Fritzing Is Back, And This Time It’s Written In JavaScript!

Fritzing has been stuck in the mud for just over a year now. There were no updates for many months, and members of the community wondered what was going on. Now, things might be turning around: Fritzing is being rebooted by community members, and there’s a roadmap of upcoming features.

The biggest takeaway from the GitHub discussion is that there simply aren’t enough developers for Fritzing. Fritzing is written in C++ and Qt, and there simply aren’t enough skilled devs to work on it. Future versions of Fritzing will be written in JavaScript.

Other developments in store for Fritzing include clearing out the number of open issues, making a new alpha, generally clean up the entire codebase, and prepare for a release. To that end, there’s also the Freetzing community to rebase the entire project with an emphasis on modularity.

Yes, Fritzing died a terrible death due to legal and funding issues. That still doesn’t mean Fritzing isn’t a valuable tool, though. With these new developments, and entirely new generation of hardware makers can dip their toes into the world of hardware development the easy way, and an entirely new generation of Open Source developers can work on making Fritzing the best tool it can be. There’s never been a better time to get started in Fritzing.

55 thoughts on “Fritzing Is Back, And This Time It’s Written In JavaScript!

  1. Err, from the most recent updates to the very ticket the article linked to…

    > We were able to find developers proficient in C++ and QT, so Fritzing will stick to these technologies.

    I think Javascript is off the table.

    1. Thank god. Not everything and their mom should be written in JS. Qt makes desktop software development very, very easy and C++(11/14/17) is not such a bad language.

      1. +1
        If they want to lower the barrier they should document there(?) code. Good documentation is often lacking at FOSS (doxygen-generated list of functions are not usefull if you want a global overview of how something has been put together/works).

      1. I think the problem is not C++ and Qt, but the fact that Fritzing is a really old project, being developed by several generations of students. There is a lot of technical debt in there, and cleaning all that up (or ignoring it all and trying to just get things to work) takes a lot of effort.

  2. Considering our current choices for FOSS PCB CAD include KiCad, which just leaves traces behind when you move a part on the board, among dozens of other UI oddities, LibrePCB that isn’t complete yet(But looks promising), and gEDA that doesn’t seem much easier than KiCad… I’m willing to give Fritzing a chance.

    1. I’d suspect if you’ve used KiCAD, LibrePCB and gEDA, Fritzing will not satisfy you in regards of functionality (unless you just want to shove an Arduino and WS2812 onto the virtual breadboard and be done). I’d rather let Fritzing die and put the effort in KiCAD to make it more user-friendly.

      1. Despite trying really hard to use all three, and also Altium and Eagle, I have to admit that I haven’t been able to achieve anything like what I have been able to do with Fritzing effortlessly. I guess it’s a question of what you are used to and what you are building. The rigid workflow is extremely painful, and the process of finding components and matching them to footprints is simply ridiculous.

        The only problem I have with Fritzing are its bugs, that often are a huge pain to work around. Hopefully that will continue to improve.

      2. For drawing simple pictures of an esp module plus some external pieces Fritzing makes/made sense. If it runs. What it didn’t do on my systems for 1 or 2 years now… :-(
        Maybe there is an alternative for such simple pseudo realistic views.

        1. Windows? I’ve found fritzing still wants to write to its program folder and your roaming profile.
          Installing it outside of the ‘program files’ folders, like in the root of a drive, fixes the first.
          Roaming profiles on UNC paths is still a problem without a simple fix.

        2. You likely need to clear the user database directories. On linux they are


          move both of them aside (as your sketches if any are in them) and Fritzing will recreate them. You also need to wait while the parts database does an update from github. Interrupting this update because you think Fritzing has stalled is the most common cause of this problem. If that doesn’t work, feel free to ask in the Fritzing forums and we will try and help further.

      3. I think that would require a fork, or a lot of time. As I understand it KiCad is basically the Vim of PCBs, not really “unfriendly” just completely different from everything else and unappealing to GUI types.

        I suspect a lot of people like KiCad as it is.

        Blender was like that till the latest beta, and it took a really long time for the UI improvements to happen.

      1. How about there be options for what to do with traces connected to parts that are moving? There are many options ‘highlight them for me’, ‘delete them’, ‘reroute them’, ‘do nothing’, probably more as well.

          1. This is just completely false. OrCAD and Altium both support this, off the top of my head.
            It’s an option you can turn on and off (sometimes called rubber-banding if you want to look it up). You can drag a component and it will do its best to keep the traces attached, using the design rules you set up to make sure they keep minimum clearances and whatnot.

          2. KiCad in the legacy render used to allow dragging still attached traces, and then it was a simple matter of straightening up traces etc… for simple parts like resistors etc..

            That isn’t super useful but I was used to it working that way…. and they have talked about adding back support for intelligent routing of dragged parts but it is a complex task. KiCad already has a few DRC based routing options so the type of routing mentioned below would probably be possible.

            What is closer to the truth is no serious design tool would require you to manually place traces for a moved part every time… that’s a waste of time in many cases when it can be done automatically as the hard part of routing is likely already done.

        1. That isn’t that hard… select part> press U (single track) or I (all connected) to select tracks > filter selection to traces delete.

          When moving a part you probably don’t want to convert entire nets to ratsnest as that would likely undo large amounts of perfectly good work in many cases.

          To select on the immediately connected track you’d press u to select the entire net i

      2. Eagle has them stay connected “rubberband” style, which makes a lot of sense if you’re moving something along the axis of the traces connected to it. It’s not a terribly big deal but it’s an example of how KiCad isn’t like other tools.

    2. These are VERY different use cases.
      Those tools mentioned are for schatic capture and PCB design.
      Fritzing is a documentation tool. Trying to make it do things other than that I’d just…. Sigh.

      1. I love those comment from people who never noticed that there are more than just the first tab in Fritzing.

        Fritzing is a circuit design tool, and it lets you design for your breadboard, for your vero-board, and of course also for your PCB.

    1. mspaint for printed circuit boards. It does have an autorouter though, and support for surface mount packages if you absolutely must. Where it shines is making the first pcb for beginners who know how a circuit works but want to get away from stripboards and breadboards.

      1. Where it shines is a number of areas, actually:

        It is one of the few tools available out there that let you design for your vero-board or other prototyping boards, not only showing you the footprint of the components, but also their real size.

        It’s one of two PCB design tools that let you start with designing the PCB, figuring out which GPIO pins of the microcontroller would be the easiest to route in your particular situation, and once you have that, *then* finishing the rest of the schematic. It’s useful for when the schematic is really trivial (say, just display and buttons connected to a MCU), but the shape and layout of the board matters. Most PCB CAD tools out there force a very rigid process, forcing you to pre-commit, and making it very difficult to change later.

        It’s great for making all those more artistic PCBs, like badge add-ons and such, because you don’t have to jump through hoops and use three different scripts and a manual process to get the PCB (or any other part) shaped exactly as you want. You simply import an SVG file and you are done — it uses SVG internally for everything, so there is no loss.

        Lastly, it lets you make those breadboard connection diagrams, but that is really of marginal usefulness. On the plus side, because companies like Adafruit use it for that, you get a lot of parts done for it for free, so there is that.

        1. Unlike the traditional CAD (e.g. KiCad) that forces a complicated forward annotation/backward annotation between schematic/layout, there are program(s) like Eagle CAD let you add/change the schematic and have instant feedback on the layout.

    1. Hackaday has featured Fritzing articles at least a dozen times already, including more than a couple of tutorials. At this point I don’t really think this particular tool needs any more introduction than KiCad or Eagle. Plus the first link in the post takes you to the project’s github repo, where the Readme file is just one click away.

  3. I am not so sure that JS is a much better implementation.
    I also already saw the project 3 months ago. They so far have not released anything and i just hope, that it will somehow soon come to fruition.
    Also needs more developers behind it.
    I myself could only help out with some python c, c++ but never js.

    1. As mentioned in one of the comments, the headline is a bit misleading. In fact, the Freetzing guys have opted to focus their effort on a JS-based parts editor (which needs to be rewritten anyways) whereas the Fritzing core will be retained in C++ and C. So have a look at the following issue or talk to Kjell if you want to get involved. I think it would be highly appreciated.

      Disclaimer: I’m Felix from AISLER, and we have facilitated Kjell becoming a maintainer of Fritzing.

  4. >Fritzing is written in C++ and Qt, and there simply aren’t enough skilled devs to work on it.

    How is this supposed to be a good thing again? I don’t think JS is totally a bad language, but we should excuse laziness like this. I can only hope it isn’t just another web app with something like a 68 MB electron wrapper.

  5. Python would have been a better choice of language–unless they have plans to wall it in.

    No, I am comfortable about the needless existence of Arduino online app, either.

  6. Qt is a beautiful environment to use. I started using it about 8 years ago because I wanted to write programs for Windows and Linux. If you already know C++ it’s very easy to get started, you don’t need to be an expert because Qt hides a lot of the ugly stuff. There’s a free version. Libraries to do just about anything are included and the Internet is loaded with help on any topic. If they can’t do Fritzing in Qt they should just give up the project.

    1. Reusing designs between languages is often a fool’s errand, it’s more important to understand the functionality you’re trying to reproduce than the way it was written. Of course if there’s insufficient documentation the functionality might not be well understood either!

  7. Fritzing is useful for quick JLCPCB board designs but lacks the tools for simple cutouts a v-slots, then again there is always another way to solve it as the last batch of pcb (ignoring obvious design errors) came out quite nice.
    I tried Eagle and deleted it, it is just too complicated, and kicad……… well oneday I may have the time to invest in it.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.