A few weeks back I ranted on about free software electronic-CAD programs and Peter gave it some really long reply. I wanted to give it some more prominent space, so here it is:
I totally understand your frustration. I am a gEDA user since more than 15 years, and I’ve worked next to someone using KiCAD, but really I cheated and learned the most up-to-date stuff about KiCAD from Dave’s video blog.
I think you identify several important issues for open source software in general and perhaps KiCAD and gEDA in particular.
1. Why is everything so inconsistent?
1. Why isn’t there a button to …
1. Is KiCAD an anti-thesis to good user-interface design?
1. Am I the one idiot who does not get it?
1. Why does my mouse not do what I expect?
1. Why don’t I have the skills to make a PCB-CAD program myself?
The UI is inconsistent because many different people work on creating these applications without much if any orchestration or top-down guidance. This is extremely common in all open source projects. I think this is a point which Dave also doesn’t mention in his video blog, maybe because he is used to the reality of a commercial software producer where things work pretty much exactly the opposite – for good and bad!
I list this question first, because the key thing to remember about open source software is that even if you can not fix the source code to do what you want, you and every other user can provide incredibly valuable feedback about what you would like and how things can be improved.
So you actually do have the skills to help make a PCB-CAD program, because you know what you want it to work like! That’s all it takes.
I do not have experience from the KiCAD community, but I hope that they realize how incredibly valuable feedback like that from Dave in his first impressions video blogs and what you yourself write in this blog post is! If you contact them and they reject your feedback, then I urge you to file bug reports in their bug tracker system for things that you feel are bad. If they behave badly then they do not deserve your help and I would request that you come join gEDA and help make it amazing instead. 🙂
To me it as an outsider of the KiCAD project it is also obvious that there are things to improve. The same is of course equally true for gEDA where I am slightly more “on the inside” albeit not by much.
The key to successful open source software is that users like yourself who want to use the programs will also help out, to shape the programs into excellence. It’s easy to get tunnel vision as a developer, and the user perspective is really all that matters for any program!
2. Why cant a footprint be automatically linked to a certain element?
2. Why are there still (totally inconsistent) libraries and not one big database instead?
As you write, and as Dave points out, this requires a complex database, and there isn’t one either for gEDA or for KiCAD. There is support for linking elements to footprints in gEDA, as I understand also in KiCAD, but the simple reality is that designing this master database successfully requires a) a very specific software development skillset, and b) specific domain knowledge, ie. ideally a superset of every other existing solution, in order to avoid the mistakes done there.
Realistically, it will take many years, perhaps decades, before the open source toolchains have such a database. Once they do, I also expect that it will be abstracted so that it can be shared by both gEDA and KiCAD. Meanwhile we have to do extra work, sometimes workarounds, in order to achieve the exact output we want.
But I think a key point to remember here is that the fact that these tools are completely open is what makes it at all possible to do crazy things like write software to generate large repetitive footprints or elements.
No doubt the real solution is one big public database on the internet with a CC-BY license for the content.
Meanwhile, we can at least publish and share the symbols/elements and footprints that we have created amongst ourselves, in order to at least save some time.
3. Why is there an autorouter?
I think this is helpful sometimes. A board doesn’t have to be a PC mainboard for an autorouter to help. The real problem is of course that the vast majority of autorouter fans are beginners who do not understand the limits of the autorouter, but IMO that’s not a reason to leave the feature out.
All the best
Wow that is some comment, it is way more than I ever expected in a reply on this.
I gave it a nights rest and feel, that I have to elaborate a bit on how I got to be an OSS user and on how the usual process is, in my opinion a bit faulty, when it comes to bigger projects.
For me it was back in ’00 or ’01 when I first got an affordable and relatively fast internet connection (ISDN). I was using windows 98 (brrrrr) and win2k and mostly used my computer for gaming until I discovered things like chaosradio and off the hook. It was a life changing discovery: I learned about Linux and free software, I wanted to be a part of this. So I installed Debian on my secondary PC and – was disappointed: I was just not able to get anything running. It did not like my network and my graphics card. So the box basically just sat there for a year or so. I still wanted to use OSS but it and I just weren’t there. Then I got an internship at some hosting company and there was a Linux enthusiast who told me about Linux from scratch.
So I set a weekend aside and locked myself in. Armed with cola, crisp, a bottle of wine – in case of success and a bottle of vodka – in case of failure. In the end I toasted myself with some wine – the system ran like it should. I got the kernel compiled, I understood the concept of the curses library and even networking worked like a charm.
With this experience running Debian was not a problem anymore but I just wasn’t able to wrap my head around dselect and some other idiosyncrasies. But I stood strong and suffered for a couple of years until Ubuntu came along. Even tough it was far from the userfriendlyness it has today it still managed to fully pull me over to the Linux side of things and I was able to name windows my secondary OS from that point on. For 7 years now I run my daily tasks from Ubuntu and it is getting better every day (except for the unity desktop, that forces me to still use Ubuntu 10.04 LTS. But that’s another story).
So all in all OSS became really viable for me as a desktop OS when it became streamlined, when I found things, where I expected them, when I just could doubleclick on a .deb package and it would allow me to install right away, and not would have to go to the terminal and type: dpkg –install XXXX.deb. That was the moment. I am not saying, that everything has to be soooo easy but there is some kind of frustration threshold that makes things unnecessarily harder and keeps people like me at distance.
So after that, now back to free CAD programs
I recall trying out some program called pcb back in the day. I printed the whole manual and tried to make something out of it – nothing. I couldn’t make anything like a pcb design. By the way same thing with Eagle. I really don’t think the free Eagle version is good for anything. The half eurocard limit allows for some Arduino derivative at best. So I made my first pcbs with pen & paper and then transfered the layout with ink to the copper.
Only when I got to use Target I was able to do it. The package is full of somewhat half baked functions and crashed sometimes but it was intuitive enough to drag me through the learning period. And being far from perfect I am still using it despite many efforts on my side going OSS.
I tried KiCAD and gEDA and both prevented me from getting anywhere by their feel of working actively against me. I am not one to give up early and I try it every half a year but when I don’t come anywhere after 4 hours the frustration kicks in and I grab me a beer.
With KiCAD I would not know where to start on how to make it better except for a complete rewrite of the UI.
But I’ll take another run with gEDA as soon as I have some time. Like you I see a problem in general with OSS when a project does not have a direction giving authority. It often feels like the old saying “too many cooks spoil the broth”. Sometimes any decision is better than no decision. Maybe a solution to this could be some guy, that wants to go into management in his day-job and get some training managing an OSS project? All the big OSS projects have some kind of hierarchy (the kernel by Torvalds, RedHat by company structures and so on). Maybe this would spoil the free software spirit but I don’t think so. Be assured I won’t give up on free EDA programs.
Now with the database: Target has changed the paradigm here about two years ago. There is a local database with a lot of parts, but if it does not find it locally, it offers the option to search online. A chance to circumvent one big db could be, just like Debian or Ubuntu do, some distributed ftp servers (and for the guys who call “who’s paying for that?” I would offer some server) . This would also allow people to publish their custom designed parts easy and simple. I don’t want Libraries, I want simple files, one for every part incooperated in a searchable local database, that can get more online.
I see your point with the autorouter, but I would still say it is useless as long as the basics aren’t right. I think it is there (yet), because it poses a very interesting intellectual challenge. There is nothing bad about it, I would only love to see some more effort going into the UI design.
All in all it still feels like these tools come right out of the early 90ies maybe some interface designer could help a lot. Of course the programmers themselves would be willing to take the criticism and still put their great work into a “managed” project.
I’m still thinking about this whole issue and this won’t be the last thing about it.