Mailing list archives : pcb-rnd

ID:6267
From:rn...@igor2.repo.hu
Date:Sun, 31 Dec 2023 06:33:51 +0100 (CET)
Subject:[pcb-rnd] Ringdove 2023: summary
replies: 6268 from rn...@igor2.repo.hu
Dear Ringdove users,
 
it's end of the year, so it's time to look back at what Ringdove has 
achieved in 2023. If you have been following the releases, you won't find 
anything new in this mail. But I know many users use EDA in bursts: 
intensive use for a few months while designing a new project then hiatus 
for many months while working on other parts of the project. This summary 
should be useful especially for them.
 
Here's a list of the progress in Ringdove in 2023 (my favorites, 
subjective selection).
 
(^footnotes about off-topic/historical/non-technical details are on the 
bottom)
 
 
1. Ringdove EDA as a whole
 
With sch-rnd (and pcb-rnd and camv-rnd) reached stable, we now have a 
"complete" EDA suite: pcb-rnd no longer implicitly depends on 3rd party 
sch-editors. I no longer have the problem of "which sch editor to show to 
new users in tutorials".
 
It also means more stability for pcb-rnd long term: gEDA is fading out, 
but as we have the most important tools already (re-)implemented in 
Ringdove, we are not affected. (I mean gschem is effectively dead and 
probably very hard to install on new systems; lepton didn't have a 
commit in almost 3 months; pcb typically has very few commits with many 
months or sometimes years apart while gtk2 dependency is dragging it out 
from distros.)
 
Another important consequence is that we can finally implement suite-level 
features that were impossible before sch-rnd because gEDA refused to 
cooperate and other sch editors were not interested enough to implement 
them.^3
 
 
2. sch-rnd - the newcomer
 
The single most important thing in 2023 is sch-rnd release 1.0.x and the 
user testing (thanks!) and bugfixes so that sch-rnd is now really stable 
and production-usable. There are multiple users with production boards 
done with sch-rnd + pcb-rnd already.
 
Also important aspect is the tutorial video series we developed with 
Majenko. I think we now have a real solid offer of making it easy to learn 
an otherwise non-trivial tool. (If you are planning to use sch-rnd, I 
strongly recommend starting with the tutorial videos.)
 
Circuit simulation: ngspice support. A wide range of workflows available 
starting from the raw "export netlist and do the rest from hand written 
spice files with text editor" to "fully integrated GUI: single click, plot 
displayed within sch-rnd". I think this wide range of support, is 
something few EDA suites managed to achieve. Another such novelty is the 
"same sch for pcb and spice" approach. This includes: you don't have to 
decorate the drawing (or draw an extra testbench sheet) with random 
voltage/current sources and meters for simulation just to say "connect 
+3.3V to Vcc".
 
DNP/omit: a tiny thing, but demonstrates well what I mean by suite-level 
features. Add a dnp=1 attribute to a symbol in sch-rnd; get a clear 
visual indication of it in sch-rnd; do a forward annotation; get all 
footprints in pcb-rnd; the subcircuit coming from the dnp symbol now has a 
dnp=1 attribute automatically; export a bom from pcb-rnd and see the dnp 
subcircuit is not on the list. (The omit attribute is similar, but it 
omits the given component from the netlist output so the subcircuit 
doesn't even show up in pcb-rnd.)
 
 
3. pcb-rnd
 
gsch2pcb-rnd separation: now that we have sch-rnd, I could start getting 
rid of the remaining implicit/weak gEDA dependency in pcb-rnd. This 
doesn't mean we would stop supporting workfows from gschem or lepton-eda, 
it only means they are losing their historical special status and they are 
becoming only an n+1th alien netlist/sch workflow. This mostly affects the 
documentation and tutorials, but this also led to the long scheduled 
gsch2pcb-rnd separation. gsch2pcb was an ugly hack; I recommended using 
the import sch feature for many years, but still kept a gsch2pcb-rnd 
within pcb-rnd which by the end was essentially just a wrapper around the 
CLI import sch feature. In 2023 gsch2pcb-rnd got moved into a separate 
project and got archived (no future development planned). 
 
Back annotation upgrades: this was one of the areas where we could have a 
lot more years ago but lack of sch editor support held us back. With 
sch-rnd available, it was a small task to extend our pcb-rnd -> sch-rnd 
back annotation; now it handles almost every case I could imagine.
 
3d models: complete set of openscad models for the standard footprint lib. 
Developed by Erich. The main importance is that a new user can design 
their first few learning-curve boards with full 3d export support, which I 
think helps them realise they could easily do the 3d models for their 
inevitable custom footprint lib (that happens when they start to use 
pcb-rnd seriously). Having a full 3d model helps in complete product 
design workflow (e.g. enclosure).
 
 
4. camv-rnd
 
In our smallest and less developer-intensive Ringdove app, the main new 
feature is multi-select file load from GUI.
 
Thanks to librnd 4.x.x upgrades, we also got the same export features, 
including the familiar export dialog, that pcb-rnd and sch-rnd have.
 
The tab key now flips the view, just like in pcb-rnd.
 
 
5. librnd - the underrated part that does a _lot_
 
The most important news was the release of librnd 4.0.0 in February. This 
included the essential upgrades required for sch-rnd to move on.
 
Part of that is the multi-design support. Originally librnd was forked out 
from pcb-rnd, which was (and still is) a single-design app: you can edit 
only one board per pcb-rnd instance. Sch-rnd requires multiple sheets 
open, and this needs librnd understand how to handle multiple designs 
(sheets, boards, whatever).
 
Dynamic drawing area: again for historical (geda/pcb, pcb-rnd) reasons, 
librnd thought the drawing area always started at 0;0 and extended only in 
the positive direction and has to limit where you can draw. In sch-rnd I 
wanted to have "automatically extends in any direction your drawing 
extends". Since our coord type is signed integer, there's no reason why 
negative coords shouldn't work. With this upgrade, you can start drawing 
around 0;0 and extend very far in any direction. I believe our 
implementation is less hackish than gschem's (where they simply put the 
original starting point at some high value and 0;0 is hard limit).
 
New font engine. Historically the font engine was coming from pcb-rnd and 
in turn from geda/pcb. It had just enough code for what a typical PCB 
needs (printing refdes on silk mostly). Meanwhile in sch-rnd I figured ttf 
causes more problems than it solves so I decided to switch back to this 
simple pcb-rnd vector font. However, in sch-rnd we need a lot more so the 
font engine needed a large upgrade in librnd. The new font engine includes 
multiline text support, proper tab support, kerning tables, &entity; 
support (so we will be able to print ohm and micro), alignments, baseline. 
And it is backward compatible with the old engine so pcb-rnd will be able 
to use it too.
 
 
 
 
 
6. Closing remarks
 
2023 was a real important year in the life of Ringdove. I think it was 
comparable to 2016/2017 for pcb-rnd^1, with sch-rnd completing our initial 
EDA suite.
 
There is still a long way to go with sch-rnd, next step being support for 
hierarchic design in 2024, but I think we are on the good path, with an 
almost good timing^2.
 
I'd like to thank NLnet for the financial backing, various contributors on 
code, data, doc/tutorials and of course our great users who constantly 
test Ringdove and provide feedback and bugreports. Big thanks to those 
early users of sch-rnd who were struggling with annoying bugs during beta 
testing.
 
 
Best regards,
 
Igor2
 
 
 
 
 
 
Footnotes:
 
^1 that period was a very important turning point for pcb-rnd. That was 
when I finally decided pcb-rnd's future is definitely not in gEDA, stopped 
worrying whether gEDA/pcb could benefit from my patches or could ever 
catch up, so I could start working on major code cleanups and the new data 
model.
 
 
^2 In retrospect I think I should have started the intensive alpha version 
development of sch-rnd 2..3 years earlier instead of 2022. But well, 
allocating limited resources, keeping both pcb-rnd fresh and work on new 
tools is not that easy.
 
 
^3 This is certainly one of my mistakes/failures: between 2015 and 2021, 
following the gEDA spirit, I thought the way forward was to team up with 
other developers who work on sch editors. I was wrong. After gschem/lepton 
developers refused my offer on a coordinated cooperation, I seeked a bunch 
of other independent sch editor projects. We had partial success with 
xschem (but no break-through) and zero success with anyone else. I think I 
should have realised much earlier that the only way forward is to write 
our own. It's also an interesting (sociological) question why developers 
are so uninterested in strategic cooperations. I think this was different 
back in the ealry 2000s. The most trivial example is gschem and pcb: 
projects with very different roots and approaches being able to cooperate 
in a coordinated way to produce an usable EDA suite _together_. I think 
it's also interesting to see the slow decline of gEDA started about the 
time when this strategic cooperation gradually got replaced by the "I am 
only working on my part" mentality in the 2010s. I think nowdays 
developers generally underestimate the value of planning and coordination, 
overrate the "I do my project and publish it, the rest will just happen" 
myth and somehow expect features arcing over different tools to just pop 
out of thin air.
 
 
 

Reply subtree:
6267 [pcb-rnd] Ringdove 2023: summary from rn...@igor2.repo.hu
  6268 Re: [pcb-rnd] Ringdove 2023: summary from rn...@igor2.repo.hu