Hacker News new | past | comments | ask | show | jobs | submit login
Horizon – a free and open source electronic PCB design package (horizon-eda.org)
238 points by guiambros 5 months ago | hide | past | favorite | 103 comments

The PCB EDA space really needs some competition. Kicad is really getting there, it "just" needs some UI improvements (Automation of the Schematic->Netlist->pcbnew flow would be nice) and also some of the big boy features like signal integrity and heat etc.

Altium is probably the only clean PCB experience at the moment, and even that sits at 10% CPU on my machine with an empty schematic and no PCB open. The more esoteric tools like Mentor and Cadence's tools (and presumably Keysight's offerings although I can't get a student license through my university * ) are powerful but quite difficult to use working alone in the sense that schematic capture is quite slow because you need to (if I'm not doing something wrong) source your own library or make your own - not really competing with Kicad as such.

* The student license options these companies have are absolutely insane. You'd think they don't want people to learn to use their software. Altium's site doesn't work with non-american email addresses, Mentor doesn't include any RF/Thermal/Mixed-Signal simulation addons i.e. the only reason to learn to use it over kicad, Cadence took about 2 weeks to respond and ended up publishing a Photo of my student license with my name on their website if you know where to look (Indexed by number)

As an absolute beginner learning how to design PCBs and simple circuits for hobby projects - I have to say while KiCAD is getting there, it really still has a learning-curve of a sheer cliff. The interface and workflow seem arbitrary and unnecessary complex for what should be a relatively straightforward process. I realize this tool is far more powerful than I'll ever need but it really does feel like I'm in way over my head most times. While it "Just" needs some UI improvements, those are non trivial for me.

Electrical engineers are willing to put up with so much more it seems.

>Electrical engineers are willing to put up with so much more it seems.

In general, IMHO. EAGLE, a golden-standard proprietary EDA tool, while still being quite a bit ahead of KiCad on the UX front, features no fewer pitfalls and completely unintuitive controls.

YMMV. I started learning on Eagle and switched to Kicad. It's correct that library handling and pcbnew/eeschema interaction is a little weird, but just for laying out things I always found Eagle's user interface to be obtuse and idiosyncratic, whereas Kicad was quite natural in comparison.

The elephant in the room is back annotation. No one who has used EAGLE professionally will (or at least should) ever be happy with a package that doesn't keep the PCB and schematic synchronized automatically without user assistance or interaction.

I've heard the KiCAD people are working towards this goal. If they pull it off, it'll be a game-changer. I'm definitely rooting for them.

I had a similar experience, but I’m skeptical that it’s because KiCAD is wildly “better”. In the interim, I’d learned more (this is “just” a hobby) and the second tool tried benefited from that learning and Chris G’s excellent “getting to Blinky” video series because YouTube was now really a thing.

Describing KiCAD’s UI as “quite natural” could only be true with the “in comparison” qualifier, IMO.

I still do not understand how EAGLE attained its 'golden-standard' status. Out of the cheap or OSS EDA tools (DipTrace, g-EDA, KiCAD, Eagle)* I thought it had the most difficult learning curve. My best assumption is that it is riding on historical momentum.

* Although not really in the list, last year Cadence was selling OrCAD for something like $430. Hopefully we get more < $500 USD offerings.

I possess a license of this OrCAD, it is exremely limiting (in terms of Constrains at least). KiCAD is even more feature rich in this case, and free. :-)

> golden standard?

In what way? I've never heard of anyone doing "serious" (like sense FPGA routing etc.) In eagle

For simple projects, EasyEDA is basic but simple to use and free. Nice feature is that sending your boards to JLCPCB is a click away as well as ordering some parts from LCSC as they are all the same company and many components are already defined.

Although, like any other EDA, you really need to check the footprints or make your own.

Not all EDA software is like that. I had a similar "sheer cliff" experience to you with Kicad. If you aren't already an EDA expert don't even bother.

I suggest trying DesignSpark PCB. It's not open source, and Windows-only (though I suspect it would run perfectly under Wine). But unlike Eagle, Kicad, gEDA, etc. it has a vaguely sane interface (it's still has a weird zoom though) and beginners can actually use it to design real PCBs.

A year and a half ago we abandoned using Cadence and Altium in favour of KiCAD. Extremely high cost of licensing was a reason, but not the only one. Our first steps with KiCAD were hard and tiresome, my engineers even tried to sabotage the work a couple of times. But now as we got used to KiCAD I'm pretty much happy with this decision. KiCAD's GUI needs rework, also its net naming convension is flowed (try to re-annotate the whole project an you most likely will lose your PCB design because of incompatible net names). Yet, if you understand what is going on under the hood you can work around the issues. Since we switched to KiCAD we have been able to successfully design (and test) a couple of complicated PCBs with DDR3 and 0.4mm pitch BGAs. In this regard, I would be happy to see more ppl starting open source EDA projects. A decent Gerber editing tool is a need!

How recent was that DDR3 design? Last time I checked length tunning on kicad was a nightmare to get to work properly.

If they’ve improved it I might give it a chance

If you want good length tuning, look no further than Horizon EDA ;) https://horizon-eda.readthedocs.io/en/latest/feature-overvie...

> Automation of the Schematic->Netlist->pcbnew flow would be nice

Recent versions have an "Update PCB from schematic" option which works very well.

You'd think they don't want people to learn to use their software.

I feel like they work on the same principle as Adobe: pirate our software when you're learning, so you get used to it, then pay for it/ask your company to pay for it when you're working. I clearly remember one of the top Google recommended searches for "Altium" was "Altium full crack download"...

Except Adobe had fairly affordable student licenses too, and lots of ways of getting them. (E.g. signing up for Photoshop evening classes for a few weeks could qualify you to get one)

KiCad just drags stuff from very old days.

The concept of having split tools for schematic and pcb just doesn’t cut it any more. Nowadays most companies have transitioned or are transitioning to do layout inhouse, because modern products are so integrated that the “old ways”, doing sch inhouse and sending it to a company for layout has become very cumbersome.

IMO one of the key things for any new EDA package is making a wise choice on how to store their files. Being able to script stuff that works on your files is becoming a necessity, and packages like Altium can’t compete with that easily because they use binary files for the most important (sch and pcb). For me at least, storing info as textfiles is a must to consider a switch, because the biggest issue with Altium is how bad it interacts with tools like git.

for small projects, this schematic/layout duality is really quite cumbersome. I really don't mind the warts in the layout section, there isn't that much to go wrong...but the parts management - making a crappy symbol, making a crappy footprint, making sure those are aligned...dealing with the ridiculous library notion. what a waste of time.

but kicad at least has an approachable format. so I wrote some crappy tooling to at least generate symbol and layout from a single description. and I could theoretically write a front end and leverage things like Gerber generation.

I don't understand why we don't have vendor supplied footprints in a tool-neutral textual format yet. I know people have tried - who are the contenders?

> it "just" needs some UI improvements

Yes unfortunately the develops are not receptive to improving this. They feel that any attempt to make it more intuitive or easy to use is dumbing it down. Disappointing.

Who is refusing to work on it? The issue tracker shows lots of UI improvement activity.

Is there work being done on the project that you feel should be prioritized below certain UI changes?

You’ll never get those add-ons in a free package, as it takes institutional knowledge and full-time work to develop it, which cost $$.

Cadence, Keysight, etc. provide the licenses to universities, not individual students, but they are pretty easy to get. Sounds like you need to work the channels through a professor.

Easier said than done when you're studying physics rather than EE, and during lockdown. I've got the software now, it just took a ridiculously long amount of time for them to give me a generic text file. Altium didn't work at all so I definitely didn't borrow a friends .edu email wink wink.

The Keysight website doesn't actually have a list of universities in its software program so I didn't bother checking whether I could apply.

> You’ll never get those add-ons in a free package, as it takes institutional knowledge and full-time work to develop it, which cost $$.

Given the amount of malware (sorry - I mean license management) the software comes with its their own fault if a team of one student manages to design their own motherboard or similar. Realistically I just wanted to play with some CAD software.

> provide the licenses to universities,

Not for free usually.

I’ve never heard of the big vendors charging universities. They usually bend over backwards to get their software installed.

Have you tried CST?


Would love to see more features supporting RF. Obviously the dream would be a 2D or 2.1D mesh/simulate built in, but would settle for less.

An easy starting point is better import/export of layouts. Designing an antenna in my RF-specific CAD suite is great, but when I actually have to build the thing, all I get is DXFs. Converting DXF to gerbers is a mess in KiCAD. Same goes if I want to reverse the pipe and simulate my layout.

Staying in the OSS realm, QUCS (open source ADS equivalent) has RF circuit simulation, just needs some help implementing auto-layout. This would make it trivial to e.g. optimize a simple transmission line circuit, and have it fabbed. That'd be huge for opening up simple microwave circuits to the DIY/"hacker" community.

Ok but I think this really should be a separate application. Let's stick with the Unix philosophy and have many tools that do one task well.

Ugh, no. I have been using RF CAD since HP MDS. You’ll end up with a convoluted mess like ADS, where the EM package is now a separate application from the main package. I ditched it 20 years ago; good riddance.

The Microwave Office guys knew this 25 years ago, which is why it’s so much better than ADS. It is all tightly integrated and object oriented.

Absolutely! As long as those tools can communicate with each other à la unix pipes

Why limit with OS specific tools? Why not just communicate via markup files?

Who said anything about limiting to OS specific tools? I just referred to unix pipes as that is why the unix philosophy works. I wasn't suggesting unix pipes are used for this, there just needs to be a way for these tools to communicate if they're split.

As much as I do like KiCAD, and use it professionally, the UX at times is literally a comical design-by-committee dumpster fire.

I gave this a spin, and it's so refreshingly the opposite of that.

My main barrier to using it for my next project is this - am I going to get 100 hours into a project then hit a brick wall and have to port back over to KiCAD. If I had some confidence around this I think it'd give it a shot.

A gallery on the website of projects completed with it would probably do the trick.

Seriously pleased this project is a thing. In 2020 there isn't really an excuse to be using software with such a poor UI/UX as KiCAD

Sorry replying to my own comment here, but this needs to be said. THANK YOU KiCAD developers. Yes it has issues but I am very grateful, comments above aside.

I'd like to pile on here and say that, for all its issues, KiCAD is an extremely valuable and important tool in the EDA space. Hobbyist PCB making at this scale simply would not be possible without it.

That said, I am very happy to see new entrants, like Horizon. I watched a presentation by the author in the 2018 FOSDEM and it looked like a great idea even back then, I'm going to try it for my next project to see how it has progressed.

Wayne Stambaugh, the KiCAD project lead, was in that presentation, and they're very much aware of the problems KiCAD has. They're working in that direction, as KiCAD 5 no longer requires you to export/import the netlist, I believe (I'm not sure because I reflexively always do it anyway).

One of the first questions they had towards the Horizon developer was "why make a new tool instead of contributing to KiCAD?", and the answer, IIRC, was "It was easier to make my own", which sounds reasonable given the amount of innovation that went into Horizon and the constraints a project as widespread as KiCAD would have, regarding backwards compatibility etc.

Author here, ask me anything.

I am a KiCad user, should I switch to Horizon and why? From the docs it seems like your main selling point is a better library, why not just make a better library for KiCad?

As written in https://horizon-eda.readthedocs.io/en/latest/why-another-eda... changing the way how a PCB design tool handles libraries would certainly require a complete rewrite as the library structure permeates the entire codebase.

Starting from scratch also allowed me to trivially implement features that KiCad is missing, such as proper panelisation: https://blog.horizon-eda.org/progress/2020/04/05/progress-20...

Does it support:

Differential pair routing

Pin swapping... ie a differential pair where the pins can be reversed

Pin agnostic routing, ie a MCU or FPGA where it doesn't matter which pin is used

Incremental part placement, unlike kicad where all the footprints get dumped on the board in a big mess at the start

These are things that bother me most in kicad (it does have diff pair routing)

Thanks - looking forward to taking it for a spin

> Differential pair routing

Yes, uses KiCad's push&shove router

> Pin swapping... ie a differential pair where the pins can be reversed

Not really, but swapping P/N in a diffpair is as easy as selecting nets in the schematic and using the "swap nets" tools.

> Pin agnostic routing, ie a MCU or FPGA where it doesn't matter which pin is used

Not really, but you can draw the connections in the board editor and backannotate them into the schematic: https://horizon-eda.readthedocs.io/en/latest/backannotation....

> Incremental part placement, unlike kicad where all the footprints get dumped on the board in a big mess at the start

Yes, there's list showing all currently unplaced packages: https://imgur.com/ZrvRw46

Back-annotation and library management are the two places where KiCad really falls down for me (the user interface is janky but works once you get used to the warts) so this looks really interesting.

How tightly integrated are the schematic editor and layout editor? Are they two separate programs like KiCad or can you eg. delete a component from the schematic and have it automatically removed from the PCB (but without nuking ALL non-schematic components from the PCB).

Definitely gonna give this one a try.

You have to click a "Update netlist" Button first otherwise this won't happen. However if you select something in the schematic editor, the selection is highlighted in the board view and vice versa.

How is this different from LibrePCB and why you have not joined forces together?

I only got to know about LibrePCB at the end of 2016 after several months of development on Horizon EDA. While there are some similarities such as the use of UUIDs and strong link between schematic and netlist, there are major architectural differences such as Horizon EDA using raw OpenGL vs QTSceneGraph(?) and Gtkmm vs QT.

As far as I can tell, the development models also differ significantly: The LibrePCB devs seem to be focused on doing things the right way the first time such as having a proper operation-based undo/redo stack whereas horizon just stores a copy of the whole schematic/board for undo/redo. They also seem to focus more on simplicity for beginners rather than more advanced features such as length tuning and advanced design rules.

Putting development effort where I like enabled me do to the board for my master thesis https://github.com/carrotIndustries/x-band-tx/ (4 Layers, differential pairs, length-matched traces) in Horizon EDA only after about 2 years after the initial beginning of development.

I still remember introducing you to Urban, the main LibrePCB developer, at FOSDEM after meeting you at 33c3 (was it 33c3?) the same year. It was fun listening to the two of you talking about your design decisions, where you came up with almost identical solutions (UUIDs for library elements for example) and where you went different paths.

We also talked about ways to increase collaboration between the two tools. A few ways I could see is:

* Router: Extracting the KiCad router into a separate repository / library so it can be used and developed by the different projects.

* Gerber Compatible Stroke fonts: Would be nice to have one font specification and implementation to be used for PCBs. LibrePCB started the FontoBene (https://github.com/fontobene) project to do just this, but currently LibrePCB is the only user of it.

* Regular exchange of ideas and domain specific problems / challenges and solutions. This already happened a few times at c3 and FOSDEM.

A few questions -

1. Does the schematic editor support multi-page schematics? Kicad's hierarchical-block approach always feels needlessly clunky to me.

2. Does the PCB editor support planes and copper pours?

3. Does the PCB editor have anything to help estimate a line/diffpair's characteristic impedance?

1. Yes it does, has even a Annotation mode to add sheet increments for part numbers (e.g. R101, R102, etc for the first sheet, R201, R202, etc for the second sheet). Pasting between sheets works, having multiple gatesn (e.g. of a hex inverter) spread out over multiple sheets works as well.

2. yes, including global or per-net rules for thermal relief, spacing etc. It warns you if nets have not been recalculated on Fabrication output. Adding them is simply: draw a polygon, right-click and "Add Plane", there you have to select any names net.

3. there is length tuning built in, but quite frankly I never had to use it, so I don't know if that is what you're looking for

re 1 and 2: awesome! I'm excited and will be trying out Horizon my next design.

re 3: I was more thinking about the plane spacing. Like say I'm making a board where I want to carry a high-speed clock signal. If it's single-ended, chances are the transmitter has a 50-ohm output impedance, and the receiver has a 50-ohm input impedance.To get the cleanest signal, I want my trace to have a 50-ohm _characteristic_ impedance (which is a function of the trace-width, distance to the closest plane layer, and PCB substrate's chemical properties).

Trying to model it accurately is a huge pain in the ass, and probably not worth attempting. But it could be nice to have a rule-checker that says something like "for your PCB dielectric constant of 4.7 with 10mil spacing to the nearest plane, your trace should be 18mil wide to get the desired impedance".

There are a bunch of these calculators out there - but it would be super cool to do some rudimentary constraints as DRC!

A few questions from an Altium user:

1. Does Horizon support an equivalent to the 'Variant Manager?' This is something that will allow variance of build outputs (different component populations, different schematic text, etc).

2. In the docs it seems to mention submitting parts to the default pool. If people submit parts to the pool are there style guides somewhere? (line widths, US vs EU resistor symbols, etc)

3. Looking at a random SMD footprint (SOT-363) it looks like the paste window is equal to the pads. Is there a way to set paste mask expansion like is done in Altium? (Automatically offset paste window from pad by some amount)

> 1. Does Horizon support an equivalent to the 'Variant Manager?'

No, but there's been some discussion on it: https://github.com/horizon-eda/horizon/pull/347#issuecomment...

> 2. In the docs it seems to mention submitting parts to the default pool. If people submit parts to the pool are there style guides somewhere?

There's https://github.com/horizon-eda/horizon-pool-convention, but that's still work in progress.

> 3. Is there a way to set paste mask expansion like is done in Altium?

Yes, you can set it globally in the board.

Just installed it and tried it:

    1. Opening up your first project is not straightforward. Instead of just opening with a blank project and letting you add a resistor, the app asks a lot of rather irritating and irrelevant questions (who cares who the "author" is at creation time, and couldn't it guess anyways?) that could be better decided later. Worst offense: the "create" button is grayed. As in: nope, you won't be able to use me until you answer all the useless trivia.

    2. Horizon seems to cling to the "main window launches sub-apps" paradigm (much like kicad). This is a rather confusing UX workflow. At the very least, it clutters up your desktop. Why can't all sub-app live under one roof ? I mean even gimp has finally given up on the broken multiple top window idea ages ago.

    3. Couldn't find any standard old-timey thru-hole parts in the default "pool": 2N2222, 2N3904 standard, LEDs. Not fashionable these days for serious work, but still very much in demand by the hobby crowd. 

    4. To place a part, it looks like you have to select the *exact* component you need right away. Why? . Why can't I just place a generic NPN in the diagram and then refine what part it'll actually be later on ?

    5. The part browser : why so many search boxes ? I want a Google-style single search box that's smart enough to match what I'm saying to a given part. Finding a part shouldn't be like entering an SQL statement. Fuzzy matcher please.

    6. Right-click on a component: a mile long menu, no "part properties" entry. When I finally locate the "change symbol" entry (in a sub-menu), it sends you to a subtly different UI than the part browser.

    7. No navigation buttons in sight. Where's "Frame All", "Frame component"

    8. Components are hard (near impossible) to just grab-and-move
I'll have to play with it more, but the initial interaction with the UX is kinda icky.

[edit]: forgot to mention installation. On ubuntu, this was not exactly straightforward. Choice between installing a binary through flatpak (non-standard thing I don't have) or building from scratch (there went 30mn of my day). Almost made me open the windows laptop that's specifically reserved for running win-only crapware.

As a longtime horizon user (at least relative to the time this project exists), some of the points you mentioned are definitly on the radar:

- Navigation Buttons: I proposed a solution here: https://github.com/horizon-eda/horizon/issues/119#issuecomme... This is part of the effort to add icons and toolbars to things that right now are reachable behind the spacebar menu

- Many TH (as well as audio/synthesizer-related) parts can be found in the work branch of my fork of the offical pool: https://github.com/atoav/horizon-pool/tree/work The offical library/pool only includes parts that have been checked by four eyes, so many parts are still open as Pull requests: https://github.com/horizon-eda/horizon-pool/pulls

As for the other points:

- on 1: Starting projects: for me it is only entering a project title and selecting a path, which is reasonable unless you are the type who wants to decide things like these in the end on saving.

- on 2: While I also like single window concepts better (with panes like Blender), I think having schematic, board and pool/library editors in seperate windows is kinda reasonable.

- on 4: You actually can. You are not forced to use existing parts if you use "Place component"

- on 6: Given how the whole thing works, such a thing like "Part properties" doesn't really make sense. In Horizon everything you place on the schematic is either a generic unit (E.g. "Two-terminal resistor") where you can enter a value or a existing part mapped to this generic unit (e.g. a "ERJ-6ENF2003"). This is (on purpose) different from how other EDA-tools do it, but in practise it works quite well. The point on the different assign window is something I'd like to have changed as well : )

- on 8: if you want to move something you have to use the move tool which you invoke by pressing the m key. You can also move things with the arrow keys.

Generally the UX paradigm of horizon is very much built around single key shortcuts or key sequences. And if you don't know the keys just press the spacebar and search for the command and it will tell you right there.

As for now the experience for power users is very fluid, but when it comes to installation, onboarding etc. the whole thing could use a lot of improvement (and are gladly beeing worked on).

I installed the software in a Windows 10 VM to try it out and it fails pretty early with a message that says:

Glib::Error: No GL implementation is available.

Couldn't find much to help me out figure out how to fix that issue, I assume it's some missing dependency but... where do I go from here?

Gtk's and horizon's OpenGL requirements (3.3 core profile + extensions) likely aren't met by whatever graphics adapter your VM implementation provides.

that helps, I checked and Parallels 15 only supports OpenGL 3.2. I think it would be a good idea to maybe improve the error message, or put a check in the installer.

Thanks for your work, as it currently stands I can't use it but I appreciate it exists nonetheless (I'm on a Mac).

That seems a little excessive.

It is, but I also understand where the author is coming from. OpenGL 3.2/3.3 with the introduction of the Core Profile is where I remember the OpenGL API getting seriously more ergonomic - no screwing around with GLEW to load extensions for basic functionality, etc.

Similarly, gtkmm is so much cleaner than Qt as a modern C++ library with none of the preprocessor / codegen quirks. Unfortunately it limits the platform reach, because GTK isn't really polished anywhere except Linux.

I raise a toast to the obsession with clean code and clean design. Sometimes "works on my machine" is the counter to "worse is better." At the same time, it's pretty inconvenient for me to use the software. Oh well.

It runs on my native windows 10 machine

Nice work! The world badly needs a FOSS EDA program that isn't insane.

Any plans for Mac downloads? And also, does its component model separate out schematic symbols and pin assignment (like DesignSpark PCB and I assume others) or are they inseparable (like KicadPCB)?

Horizon probaly has the most flexible and modular library concept there I ever saw. You can reuse things, inherit from things etc.

This is a good summery (with a nice graphic of the structure of an example part): https://horizon-eda.readthedocs.io/en/latest/pool-why.html

Wow... documentation?! This looks so much better than Kicad.

Great. Here's one:

When producing a placement file for a PCB, can component part numbers be exported ? Neither Cadence, nor KiCAD stores components in their PCB files, only footprints, so part numbers cannot be easily accessed.

Why aren't there Linux builds? I'd love to try it out but this immediately makes it impossible for me.

Very nice, thanks! Is that linked somewhere? I didn't see anything on GitHub.

I have never done PCB design, but my projects are taking me that direction.

Why should I learn Horizon vs Kicad first, or vise versa?

pro Horizon:

- library management that makes sense (though is a bit more complex than KiCad's)

- clean and modern UI

- fast-paced development (if there's a suggestion, that makes sense to me, I'll implement it)

pro KiCad:

- large library of parts

- has been around for a long time, so for every problem you may encounter, there's likely a forum post or so that describes a solution/workaround

- larger community

I wish they had git or something built into KiCad, specially to update parts and be able to find libraries, instead having to search for them online and downloading and extracting and adding to two places in the software.

They sort of do, the official KiCAD part libraries are actually hosted on Github https://kicad.github.io/. A lot of distributions kinda mess this up by distributing static snapshots, but I usually clone the Git repo and then direct KiCAD to that. The base libraries cover a ton of parts, and I then keep all my self-drawn or individually downloaded parts in a separate library.

It's still a pretty clunky workflow but it gets the job done. I really wish it was possible to have a point and click interface in the GUI for downloading individual new parts akin to a Linux package manager, but this is probably difficult to manage since there is no centralized distribution point for parts that are outside of the official libraries.

This is my biggest gripe with KiCAD. No matter what I do, my libraries end up messy.

Another thing I wish they had. something to help pick the right sizes, for stuff like capacitors.

Tangent: I'm about to start learning EDA and what I really want is a data format for my designs. Something that I can write my own code to generate and manipulate as well as using standard GUI tools.

Is there any "data first" EDA package? Something more "docbook" and less "Microsoft Word"?

At KiCon 2019 there was a presentation on SKiDL which allows you to describe circuits in Python. You can then output a netlist for use in KiCAD's PCB tool (or potentially other EDA tools). I have not tried to use it personally.



Yes gEDA is what you want! Each component of gEDA (schematic, layout, etc) works on text files which you can script up easily.

I've heard of people generating designs via scripts in gEDA.


As someone who's pretty naive about EDA software, how does this compare to KiCad or Eagle?

I haven't used any of these before, but this LibrePCB talk explains why they wanted an alternative: https://www.youtube.com/watch?v=vu-h5y6tK34

Horizon docs have this explanation: https://horizon-eda.readthedocs.io/en/latest/why-another-eda...

Same question -- I've been using Kicad on personal and light-duty professional projects for about 5 years (yeah, Altium is the real deal, but when you're making a small run of prototypes for a university lab, sometimes you use the tools you have). It definitely has some rough edges, but it's also got a very established ecosystem, so I feel like Horizon will have to be a massive improvement to compete.

I use horizon for more than a year now and have quite a few pcbs from it in production. What made me pick up horizon was mostly Autodesk's aquisiton of Eagle and kicads messy library concept.

Horizon misses nothing (for me) now and has a beautifully efficent UX compared to Eagle and KiCAD. Their library concept is also well thought through, so I don't have the feeling I am wasting my time when I am contributing parts.

The downsides are:

- you still have to create many parts yourself (but parts, packages, etc are json and generating them can help a lot)

- horizon supports only newer OpenGL versions, so if your machine is old it might not run

Other than that I'd take it over all the others every day (and I do).

I've been using Kicad for the same workloads as you, and Altium + Cadence for heavier ones over the years, and I must say they hit the nail on the head here with their comments about KiCad: https://horizon-eda.readthedocs.io/en/latest/why-another-eda...

I'll have to find a simple project to test this out on though, because as you say, It needs to be a huge improvement on KiCad to warrant a switch.

Thank you for linking to this. That's a pretty compelling story he's telling, I'll have to give it a go if I can find a low-pressure project to experiment on it with!

Some rough edges? Kicad has a lot of rough edges, and some of the biggest have to do with footprint libraries & sharing, which is the key piece of momentum in this space. Meanwhile, that's something horizon does very, very well. I could see horizon overtaking kicad.

It looks like they focused more on a streamlined parts manager, which to be honest is a weak point with kicad. In kicad you need to manage the symbols, layout, and manufacturing info all separately.

What about LibrePCB?

I'd like to ask the same question above.

For another open-source EDA effort, see also: https://librepcb.org/

Having tried Eagle and KiCad I am enthusiastic about any new free PCB design package, as it offers up the hope of a usable PCB design package. Eagle and KiCad are both UI disaster areas that make GIMP look usable.

Agreed. That's exactly why I've been using https://upverter.com Sure it's not as feature rich, but I found the interface much easier to get a hang of that for my small TTL and 6502 projects it's been great. I'd much rather put time contributing to the component library than dealing with a bad UI.

KiCad is great, but it's a bit like Vim in that you need to learn how to use it before it becomes enjoyable and efficient.

Looks good. Installed it and will try it this week! Thanks for sharing.

I was about to start learning KiCad, but I think I'll explore this first.

I've been using Altium for years professionally and would love to see a FOSS project unseat it. My own efforts to advocate staffing a few FTE to work on KiCad didn't get very far.

There are some things about it which drive me nuts and which could easily be done better in an open tool:

- The UI is extremely slow. Clicking on a component often causes the entire app to pause for 1-10 seconds while it loads all of the part parameters and redraws panels.

- It doesn't handle large libraries gracefully. We have something around 30000 parts and the library compiler crashes more often than it succeeds. The Altium sales folks have attempted to get us to switch to vaults but can't explain to us what the data store is, what the concurrency model is, why it's not further lock-in, and why it should be more performant.

- Better geometry importers and exporters. Getting fancy RF geometries in and out is a huge pain. For one thing, Altium's DXF parser renders at a fixed resolution. So if you have some very small feature it will often get turned into a line or a dot. And even if not, it'll be coarse.

- Never do anything in the UI thread that isn't strictly responding to user input.

There are some things it's mediocre and it would be somewhat difficult to implement better in an open tool:

- Really good understanding of mechanical mates. Basically Solidworks-grade constraints for putting things together.

- Tight interconnectedness between schematic and layout rules, and a really powerful and expressive language for writing rules. Altium's rules language is simultaneously constraining and often lacks coverage for obvious cases. As an example, there's no way to do same-net gap analysis. You can make unmanufacturable spaces between two traces of the same net all day long and the design rule checker would never care.

Some stuff Altium pretends to do but doesn't, and it would be fiendishly difficult to do a good job in a FOSS tool:

- Physics modeling. I want to know how much coupling I'll have between nets. I want to see discontinuities in transmission lines. I want to know what will radiate and absorb and how. Basically I want to be able to have my CAD tool also be Ansys HFSS with varying degrees of fidelity.

- Real schematic hierarchy. The schematic compiler is chock full of bugs that it's dangerous to rely on hierarchy and also dangerous not to. I want to draw schematics with the same type of composition and repetition that I use to write software.

Then there's stuff that Altium doesn't even pretend to do and someone totally should write an EDA tool that does.

- Useful diff of schematics and layouts. I want to be better able to tell where I might have made an unintended change.

- Real time collaboration. Google Sheets but schematics and layouts. I want to be able to drop in on my layout artists' work and be able to point things out or share in the burden.

Lately in my office there have been lots of new people coming from places that use Cadence and they're slowly trying to get us to switch over. I haven't figured out what about it is supposed to be superior.

Any chance of macOS support?

It can be built on mac OS and starts but isn't really usable due to OpenGL issues: https://github.com/horizon-eda/horizon/pull/290#issuecomment...

Title should contain "written in C++" (as this also happens all the time with Rust).

Downloaded, installed, got repositories, created a test project. Finally open it, new schematic, selected a resistor to put on schema. Damn thing too big, tried to zoom out, failed. Then tried to move it, failed as well. Unintuitive, not in the mood to learn its quirks so I just uninstall it.

Scroll wheel and middle mouse button, as commonly used in most software. Home button reframes the view.

In my commonly used software I click on damn things, little boxes appear on corners and I can just drag them in/out to decrease/increase the size. Or if 3D software I have 3 more lines to rotate/roll for each axis. That's my commonly used software.

EDA is a type of CAD software, there's a bit more to it than "baby's first schematic editor".

Things are going to be different and if that's what's making you quit the software I have to imagine you wouldn't even be using it anyway and you just thought it looked cool despite not being an actual EDA user.

I would not call CorelDraw, AutoCAD, OrCAD "baby". Those are the "babies" that implement what I said above. This one here can learn a thing or 2

Onboarding users more easily was the idea. I think having icons with tooltips that include shortcuts is of similar importance and something like a “First steps“ Project where it just tells you about navigation and the spacebar menu.

I myself would probably not assume that because there is no explicit button it cannot be done ( I'd rather try the usual thing like spacebar drag, middle mousebutton, etc).

However I understand that this might depend on your background and your willingness to learn the damn thing, which is why lowering the entry bar is worth it imo.

CorelDraw and AutoCAD aren't EDA software.

Individually resizable schematic symbols are not typically needed. I think that feature would baffle experienced EDA users, and trip up new users. You almost certainly want symbols of a fixed size, drawn on a zoomable canvas.

I understand. In fact I even before thought that this might be a problem, so I mentioned adding buttons for scroll and pan (Blender-style) in a github issue as well, because I thought it might help users like you with onboarding.

The maintainer seemed to be open to the idea and noted it down for later. So maybe it will be there in the next release : )

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact