Hello Lukas,
Today I was once again looking for a replacement for KICAD and came across your Horizon and read through the documentation. And here your idea that library management is the crucial pivotal point in an EDA program immediately caught my eye. This is the main reason why I am looking for an alternative to KICAD, because it is extremely complicated and not intuitively solved. Most of the work in creating schematics is spent on creating or searching for symbols or footprints, the rest is rather the smaller part.
In particular, the idea of creating a central repository on Github is really good. Anyone can simply put a tested "part" there and it is then available to the general public. Once there is a community of users who use the program, they will embrace the idea enthusiastically and the collection will swell rapidly because everyone has the problem that it takes up far too much time.
I then installed the programme to try it out. The first impression is good. Nice logical presentation, the programme reacts quickly, etc.
But now comes the big "but".
The documentation is completely inadequate. First of all, you explain some basic ideas much too abstractly. I can't do anything with the Powernet thing, for example. What is that supposed to be good for? Well, the program grumbles when I want to connect two netlists just like that. But what practical relevance does this have, what advantages can I derive from it? To which connections does the power net refer, only to ground or also to +Vcc and -Vss or is it generally good for splitting into subnets. I don't want to waste my time with the question: what did the artist mean by that? This is always best done with the help of examples.
The lack of concrete examples is consistent throughout the manual. An example of this is the chapter on creating "parts". Instead of just general explanations, an additional concrete example would be very helpful. How do I create, say, a quadruple OpAmp. With screenshots and explanations such as what changes when gate and unit are trivial, as with a resistor. I tried to create a part LTC2057, but couldn't figure out what to do in which order. If something is not intuitive, it must be in the manual!
But there also seem to be logical breaks in your library concept. Let's take the simple components like resistors etc. You seem to have the idea that the definition of a resistor includes parts, manufacturer, ohmic value, maximum power and footprint. This completely misses the point in practice. Just think how many parts come together if you iterate over all manufacturers, values according to E192 etc.. The disk space on GitHub may quickly reach its limits.
The concept does not fit. For an EDA, the value of a resistor and the manufacturer are completely irrelevant, but not the symbol and the footprint. The former are purely declarative attributes that have no place in a library. There, the connection resistor-symbol-footprint is sufficient. The latter are project-specific and have to be added on the fly in the schematic editor or wherever else it makes sense. And for this you can provide a few attributes that are generally valid for all components, e.g. manufacturer, series, order number, component designation (e.g. R14, not editable), value, power, comment (free text), all of which are sensibly preassigned with "" or "unknown" and which have a specific meaning in the schematic editor, component printout and component list. For this, these attributes must then be stored in files in the project directory and not in the pool.
In any case, no one will use a program that first has to create a complete part for a simple resistor or pick it out of millions of entries. The rest may be as good as it wants, but that is a knockout criterion.
Your program seems to have really good facilities and ideas, but if you also want to succeed, you would have to change your priorities:
1. a most carefully prepared documentation. I know this is the unloved child of every programmer (I've been programming all my professional life, so I know what I'm talking about). But without it, you won't get a community around this program.
2. look at your program from the point of view of a user who doesn't care about the internals and beauties of your code, and whose only goal is to get a finished board with the help of a very user-friendly program, and with as little time and mouse clicks as possible. This can be achieved by using the program intensively as a user.
3. You can implement all extensions and refinements later, but first it is important to create a solid basis all around.
As it is now, I won't want to use it, but I would be really happy if you could bring the thing to a successful end.
Best regards
Dieter