Author Topic: [CrowdLaborFunding] PCB CAD tool idea  (Read 11873 times)

0 Members and 1 Guest are viewing this topic.

Offline blueskullTopic starter

  • Supporter
  • ****
  • !
  • Posts: 367
  • Country: cn
  • BA7LKP
[CrowdLaborFunding] PCB CAD tool idea
« on: January 19, 2019, 08:58:41 am »
It may be a stupid idea, and I know there will be KiCAD fans and gEDA fans jumping out. Just to give (myself) a heads up.

I'm thinking if we (active EEVBlog users collectively) can work on a low cost, cross platform CAD tool with VERY BASIC features but very good expandability.
There are tons of threads complaining commercial CAD tool price, OSS CAD tool hard-to-use, and the BS MSFT does to Windows thus the willing to move away.

Based on my understanding, most OSS tools are designed to be new. They are mostly coded by university kids and researchers, looking for publications.
Thus, instead of polishing simple features, they prefer advanced features.

What I'm thinking is can we work on a PCB CAD tool that is very simple, with no new tech nor innovations, but very easy to use and migrate from existing CAD tool.
To be exact, an Altium Designer clone with same graphics, look'n'feel, and keyboard binding, without any advanced features.

I'm looking for the following feature set:

1. Schematic editing -- no ERC, no simulation, no back-annotation. Just one-way netlisting and BOM generation.
2. PCB editing -- no glossing, no hugging/walkover, just hugging, no SI/PI/PDN, no simulation, no DDR routing, no ridig-flex, no autorouting. Just basic editing, length matching and exporting.
3. Librarian -- no multiple footprint, no online database, no supplier mgmt, no nothing. Just a simple SCH and PCB primitive editor and linking between them.
4. Expansion -- all interface of internal modules should be accessible through DLL interface for expanding. This allows advanced features to be developed and maintained separately.

Due to the cross platform nature, I believe C++/wxWidgets is the best combination.
C#/WinForms looks too archaic on non-Windows platforms. C#/gtk or C#/wx.NET is hard to install for non geek users on macOS and Linux.
Python is equally hard to install when wxWidgets comes to the play. Python/Tk looks older than me.

I don't want to waste too much time on this. 10k LoC is what I can tolerate at most. Therefore, no C. I don't want to waste my life on writing linked lists.
Java was never in the picture. If I mess with Java, I would better off using WinForms.

Again, no EDA, just CAD. KISS. The goal is a cloned version of Protel 99 SE that runs on any OS.

A permissive GPL open source license will be chosen. I want the ecosystem to be self-sustaining by attracting people to write paid modules dynamically linked to the main program.

Code gurus here, what are your opinions on this topic?
 

Offline awallin

  • Frequent Contributor
  • **
  • Posts: 694
Re: [CrowdLaborFunding] PCB CAD tool idea
« Reply #1 on: January 19, 2019, 10:25:28 am »
random thoughts:
  • this is a tough project to get off the ground - need a capable programmer to hack together a working prototype as a weekend (or two) effort..
  • what examples of working crowd-funding open source (gpl) are out there? in reality you probably need 100-200 hours from one or two very capable c++ programmers to get it off the ground..
  • git is a good idea for symbol/footprint libs - some of the problems kicad currently has could be improved
  • execution is key - there are probably a dozen of these gEDA/kicad clones which are just in the planning stage forever..

good luck  8)
 

Offline nctnico

  • Super Contributor
  • ***
  • Posts: 26907
  • Country: nl
    • NCT Developments
Re: [CrowdLaborFunding] PCB CAD tool idea
« Reply #2 on: January 19, 2019, 12:17:45 pm »
This has been done a lot of times before already. IMHO you better put your effort into KiCad or Geda (more specific: PCB-rnd). Both do exactly what you describe. I sense the problem is more likely that you don't want to learn how to use these tools and want to invent your own. Chances are very high that you end up with a new kind of KiCad which also has a learning curve for most people.

BTW what it missing from your list is to have a component database which links a symbol, footprint, value and order number together into a component. This allows to create bills of materials automatically which saves a lot of error prone manual work. AFAIK KiCad still doesn't have that but it is what turns a hobby tool into something which is suitable for professional use. I can do without differentail pair routing but I can't do with a component database.
« Last Edit: January 19, 2019, 12:21:12 pm by nctnico »
There are small lies, big lies and then there is what is on the screen of your oscilloscope.
 

Online ataradov

  • Super Contributor
  • ***
  • Posts: 11260
  • Country: us
    • Personal site
Re: [CrowdLaborFunding] PCB CAD tool idea
« Reply #3 on: January 19, 2019, 07:04:18 pm »
This is an excellent idea, and I'm actually working on something like this in the background. I have some very good ideas on hoe to drastically improve manual routing process. But that's a long term project going on the background of everything else.

I doubt that 10k LoC is realistic. I would estimate 5-10x that amount at the minimum.

But the main reason I'm not doing this in the open and try to attract other people is this:
Quote
To be exact, an Altium Designer clone with same graphics, look'n'feel, and keyboard binding, without any advanced features.
I hate Altium UI. I know it is a matter of a personal preference, but that's a big problem for a collaboration like that. For me personally Eagle is the closest to idea UI. It has some things that I don't like, but the general direction is there for me.

There are some other workflow choices that I want to see in a tool like this, but they will likely to be disliked by others.
Alex
 

Offline radioactive

  • Regular Contributor
  • *
  • Posts: 173
  • Country: us
Re: [CrowdLaborFunding] PCB CAD tool idea
« Reply #4 on: January 19, 2019, 07:37:40 pm »
This project seems to be off to a nice clean start:  https://librepcb.org/

It doesn't appear to be ready for anything very complex yet, but something to keep an eye on... or maybe work on?
 
The following users thanked this post: blueskull

Offline Lukas

  • Frequent Contributor
  • **
  • Posts: 412
  • Country: de
    • carrotIndustries.net
Re: [CrowdLaborFunding] PCB CAD tool idea
« Reply #5 on: January 19, 2019, 09:46:40 pm »
As the main developer of http://github.com/carrotIndustries/horizon/ (see also https://www.eevblog.com/forum/eda/new-work-in-progress-eda-package!/) I think I'm qualified to comment on this topic.


Quote
I don't want to waste too much time on this. 10k LoC is what I can tolerate at most
Won't cut it. Horizon had more than double that 1.5 years ago.

Quote
Based on my understanding, most OSS tools are designed to be new. They are mostly coded by university kids and researchers, looking for publications.
My motivation for starting something new has been the fact that no existing OSS EDA tools met my requirements for an EDA tool of the 21st century, in particular regarding parts management.

Quote
BTW what it missing from your list is to have a component database which links a symbol, footprint, value and order number together into a component. This allows to create bills of materials automatically which saves a lot of error prone manual work.
My thoughts. Horizon tries to do that well.

To any naysayers that that project won't go anywhere: I did the moderately complex board for my master thesis entirely in horizon EDA: https://github.com/carrotIndustries/x-band-tx
 
The following users thanked this post: blueskull, radioactive

Offline awallin

  • Frequent Contributor
  • **
  • Posts: 694
Re: [CrowdLaborFunding] PCB CAD tool idea
« Reply #6 on: January 21, 2019, 05:32:41 am »
wow this is turning into a good list of KiCad/gEDA alternatives  :-+
 

Offline Kasper

  • Frequent Contributor
  • **
  • Posts: 742
  • Country: ca
Re: [CrowdLaborFunding] PCB CAD tool idea
« Reply #7 on: January 21, 2019, 07:49:55 am »
If you have length matching, you'll be more advanced than circuit studio ;)

I think there are a lot of people that would like a simple, easy to use and low cost CAD and making it similar to altium would be helpful for anyone who aspires to work for a company that uses altium.

I don't have much to offer aside from feature requests:
1: gerber import.

2: panelize with ability to route into the panel rails for this:
EEVblog #552 - DFM Automated PCB Panel Testing

Those are also features that circuit studio is lacking.
 

Offline krish2487

  • Frequent Contributor
  • **
  • Posts: 500
  • Country: dk
Re: [CrowdLaborFunding] PCB CAD tool idea
« Reply #8 on: January 21, 2019, 09:49:12 am »
Well,
I am not qualified to speak about this in any manner.


but here is my 2 cents,
Looking at the replies to the thread, I see different objective requirements for different people, different subjective preferences for different users.
This alone will drag the project in multiple different directions at the same time.
That is precisely what happened with kicad, before CERN took over.
Many users felt their requirements were not taken care of, the developers felt that the users did not know how to use their tool or have the correct workflow.


I am not trying to rain on anyones parade here, but instead of starting a new project wouldnt it be better to stick with a known devil  like kicad or altium?
If god made us in his image,
and we are this stupid
then....
 

Offline apurvdate

  • Contributor
  • Posts: 43
  • Country: in
Re: [CrowdLaborFunding] PCB CAD tool idea
« Reply #9 on: January 21, 2019, 11:49:18 am »
i'm just someone who uses kicad for hobby projects ( like 555 astable :D ) and absolutely i've no idea hows the kicad internals work..
but here are my thoughts.. you want a bare minimum cad.. why not create a stripped down version of kicad itself? compatible with kicad symbols & footprints.. with ui modifications you desire..
 

Online ataradov

  • Super Contributor
  • ***
  • Posts: 11260
  • Country: us
    • Personal site
Re: [CrowdLaborFunding] PCB CAD tool idea
« Reply #10 on: January 21, 2019, 05:09:02 pm »
why not create a stripped down version of kicad itself? compatible with kicad symbols & footprints.. with ui modifications you desire..
Its code base is huge, even setting up the environment to build it from the source code takes considerable amount of time. This is typical for a big project, but it is hard to take that and strip it down.

Part of the problem is all the dependencies that start to come in as you implement more features. Want Eagle export - include an XML parser, want board outline import from CADs - include a DXF reader. You can implement some of that stuff in a lean targeted way, but at some point things will start getting out of hand.

So the key to a small EDA is to keep features low, which may not be something everyone wants. I personally prefer small code base, which is easy to maintain and modify, even if some features are lacking.
Alex
 

Online SiliconWizard

  • Super Contributor
  • ***
  • Posts: 14476
  • Country: fr
Re: [CrowdLaborFunding] PCB CAD tool idea
« Reply #11 on: January 21, 2019, 07:46:28 pm »
why not create a stripped down version of kicad itself? compatible with kicad symbols & footprints.. with ui modifications you desire..

Lukas' Horizon actually uses KiCad's router AFAIK (which is only a small chunk of KiCad's source code).

Modifying KiCad's UI is awfully difficult, just look at how KiCad developers have been fighting with this for years. It's not just because they don't want to.

Developing a CAD tool is incredibly difficult, often underestimated and the probability of having approximately one opinion by user is very high. Three of the reasons why many such projects have started and died.

I'm impressed by Lukas' work here, even though I don't quite agree with all of his choices (but see right above...)

Designing such a CAD sofware so that the UI is completely separate (and thus easily modified) from the core functionalities sounds like a great idea. Unfortunately, CAD tools' functionalities are often so intricate with their UIs that it's very, very difficult to design them this way. Many developers starting such projects tend to concentrate on the UI first (mostly because this is often what they have the most definite ideas on, and also because it's a more immediate reward), which is a mistake IMO. So for those still willing to try, my advice would be to work on the architecture and modularity and get that right before writing a single line of UI code.
 
The following users thanked this post: janoc

Online ataradov

  • Super Contributor
  • ***
  • Posts: 11260
  • Country: us
    • Personal site
Re: [CrowdLaborFunding] PCB CAD tool idea
« Reply #12 on: January 21, 2019, 07:50:20 pm »
So for those still willing to try, my advice would be to work on the architecture and modularity and get that right before writing a single line of UI code.
I was trying to think along those lines, but it is hard. Once you've got basics defined, you need to see things work to proceed with further design decisions. And the GUI is a natural way to provide inputs to such back end. So even if it is not a final GUI, you are forced to do something. And in that case you might as well stay close to the final ideas.

I doubt it is possible to define CAD backend in abstraction of the UI.
Alex
 

Offline nctnico

  • Super Contributor
  • ***
  • Posts: 26907
  • Country: nl
    • NCT Developments
Re: [CrowdLaborFunding] PCB CAD tool idea
« Reply #13 on: January 21, 2019, 10:10:19 pm »
Probably you have to write 3 CAD programs from scratch. The first 2 will be rubbish and the third one will be useful because by then you understand what workflow works.
There are small lies, big lies and then there is what is on the screen of your oscilloscope.
 

Offline langwadt

  • Super Contributor
  • ***
  • Posts: 4427
  • Country: dk
Re: [CrowdLaborFunding] PCB CAD tool idea
« Reply #14 on: January 21, 2019, 10:26:14 pm »
BTW what it missing from your list is to have a component database which links a symbol, footprint, value and order number together into a component. This allows to create bills of materials automatically which saves a lot of error prone manual work. AFAIK KiCad still doesn't have that but it is what turns a hobby tool into something which is suitable for professional use. I can do without differentail pair routing but I can't do with a component database.

yes, something like Orcad CIS
 

Offline janoc

  • Super Contributor
  • ***
  • Posts: 3785
  • Country: de
Re: [CrowdLaborFunding] PCB CAD tool idea
« Reply #15 on: January 21, 2019, 11:14:49 pm »
I doubt it is possible to define CAD backend in abstraction of the UI.

It certainly is - e.g. OpenCASCADE (originally by Matra, then open sourced CAD kernel used by e.g. FreeCAD among others) or OpenSCAD. CAD works with geometric entities - lines, points, surfaces, solids, etc. The way you enter those doesn't matter, the backend/kernel really doesn't care whether they were loaded from a file or someone has entered them using a mouse.

However, I fully agree with what SiliconWizard said above. Writing a CAD program (any type of CAD) is incredibly difficult. UI is probably the easiest part, in fact. The "fun" starts once you get into the geometry, whether it is length-matching traces on a PCB or solving complicated constraint systems in a contemporary mechanical CAD.

Heck, even something as "pedestrian" as rendering good looking fonts is heck of a job - you need to deal with Unicode, with vector fonts (TrueType is not very useful for exporting Gerbers, for ex. - that's why the CAD tools use those funny looking fonts), various language and locale specific things, special symbols ... It becomes a nightmare pretty quick and you can't just offload it to a library (such as Harfbuzz) easily.

Focusing on the UI is also a sure fire way to doom the project early - you will have as many "UI designers" as you will have project contributors and unless there is one person who can put their foot down and have a final say how things are going to work, the result will be an inconsistent mess. And if there is such person, expect flamewars, fights, temper tantrums and people leaving the project in anger. The realities of any open source project beyond a certain size (> ~2-3 contributors). Just look at projects such as Gnome where a small clique decided to redesign the UI in a certain way or to push a certain design philosophy years ago. The fights and personal animosities are going on to this day, even though the software in question is long dead. Or the infamous systemd that works like a red rag for a bull for many people.

Are you prepared to deal with that?

Also unless you are a superhuman with infinite time and money (so no need for a "real" job, etc.), don't expect that you will be able to pull a project like this off alone. You will only burn yourself out in a few months while the competition with larger teams (whether OSS and certainly the commercial ones too) will be running circles around you.

I would strongly suggest to anyone who wants to work on something like this to not fragment the manpower available even more and to join one of the existing projects instead. It is better to bite the bullet and accept that not everything can be as you would like to have it but have at least one working and (semi-)usable tool than to have 20 dead one-man projects all over Github where the authors abandoned them as soon as they discovered that CAD is much more than making sure the menus and toolbars are arranged in their preferred way. Or that in order to be usable, they would have to write a lot of rather "unsexy" code that they aren't interested in - e.g. library management or data import/export.
« Last Edit: January 21, 2019, 11:24:04 pm by janoc »
 

Offline BrianHG

  • Super Contributor
  • ***
  • Posts: 7738
  • Country: ca
Re: [CrowdLaborFunding] PCB CAD tool idea
« Reply #16 on: January 22, 2019, 12:38:18 am »
Seriously, just take KiCad's source code engine and just re-do the entire GUI.  I'm sure if the rendering does something you don't visually like, you can also manipulate that easily as well.  For the cad graphics engine, they already done most of the work.  If you want actual Protel compatibility, just save your Protel PCBs and schematics in ASCII mode and decode that format.  I've done this in the past and made a Protel library component generator (it took a .pdf data sheet's pinout screen capture and made the IC's pins with names and IO directions automatically (this save so much time as multiple 240/480/and larger ICs became rampant in my designs, cut out errors too)) as the ASCII format for components took only around a day to figure out.  Same for PCB and Schematics.  They have so few objects in there with so few setting, always saved in order, you can even make your own Protel translator from an ASCII save to an alternate format if you like.

The 1 thing I don't like about KiCad, though I am not an expert, is the lack of negative power planes.  (The feature may be hidden in layer setup and I just missed it...)


I also know the frustration of trying to learn how to even function or flow in a new cad environment.  Trying to understand an learn how the programmers intended their tool to be used instead of how I am used to working in my old tools.  It can drive me up a wall as I yell WHY the hell did they do it like that??????  And not understanding that the cad did the same function I wanted in a completely different way as it takes me 10x longer to force that tool to operate the Protel way, only to discover over a year later all the bloody time, all I had to do was press 'CTL-Left Click' instead of 'Shift-Space'....
« Last Edit: January 22, 2019, 12:53:28 am by BrianHG »
 

Offline langwadt

  • Super Contributor
  • ***
  • Posts: 4427
  • Country: dk
Re: [CrowdLaborFunding] PCB CAD tool idea
« Reply #17 on: January 22, 2019, 04:59:53 pm »

The 1 thing I don't like about KiCad, though I am not an expert, is the lack of negative power planes.  (The feature may be hidden in layer setup and I just missed it...)


apart from being easier to do with tape which hasn't mattered in decades, why do you want negative planes?
 

Offline nctnico

  • Super Contributor
  • ***
  • Posts: 26907
  • Country: nl
    • NCT Developments
Re: [CrowdLaborFunding] PCB CAD tool idea
« Reply #18 on: January 22, 2019, 08:26:55 pm »

The 1 thing I don't like about KiCad, though I am not an expert, is the lack of negative power planes.  (The feature may be hidden in layer setup and I just missed it...)

apart from being easier to do with tape which hasn't mattered in decades, why do you want negative planes?
I don't really see the point either. Most ground and power planes will need cut-outs anyway (at the power entry plug for example).
There are small lies, big lies and then there is what is on the screen of your oscilloscope.
 

Offline mrpackethead

  • Super Contributor
  • ***
  • Posts: 2845
  • Country: nz
  • D Size Cell
Re: [CrowdLaborFunding] PCB CAD tool idea
« Reply #19 on: January 22, 2019, 10:20:16 pm »

The 1 thing I don't like about KiCad, though I am not an expert, is the lack of negative power planes.  (The feature may be hidden in layer setup and I just missed it...)


apart from being easier to do with tape which hasn't mattered in decades, why do you want negative planes?

Because you can see through them.
On a quest to find increasingly complicated ways to blink things
 
The following users thanked this post: BrianHG

Offline BrianHG

  • Super Contributor
  • ***
  • Posts: 7738
  • Country: ca
Re: [CrowdLaborFunding] PCB CAD tool idea
« Reply #20 on: January 22, 2019, 11:31:45 pm »

The 1 thing I don't like about KiCad, though I am not an expert, is the lack of negative power planes.  (The feature may be hidden in layer setup and I just missed it...)


apart from being easier to do with tape which hasn't mattered in decades, why do you want negative planes?

Because you can see through them.
Pic#1 = Poly Fill.
Pic#2 & Pic#3 = True Ground Plane.
See first 2 images in post...
https://www.eevblog.com/forum/eda/you-get-more-copper-between-padsvias-using-a-true-power-plane-instead-polyfill/msg1524124/#msg1524124
 

Offline nctnico

  • Super Contributor
  • ***
  • Posts: 26907
  • Country: nl
    • NCT Developments
Re: [CrowdLaborFunding] PCB CAD tool idea
« Reply #21 on: January 23, 2019, 05:26:13 pm »

The 1 thing I don't like about KiCad, though I am not an expert, is the lack of negative power planes.  (The feature may be hidden in layer setup and I just missed it...)


apart from being easier to do with tape which hasn't mattered in decades, why do you want negative planes?
Because you can see through them.
You can use semi-transparent layers and/or disable the layers you are not interested in.

@BrianHG: that old story about a bug / user error again  :palm:
There are small lies, big lies and then there is what is on the screen of your oscilloscope.
 

Offline klmbk

  • Contributor
  • Posts: 19
  • Country: 00
Re: [CrowdLaborFunding] PCB CAD tool idea
« Reply #22 on: January 23, 2019, 11:39:14 pm »
I've pondered this too, just for fun. But I'm mostly OK with the interface and most of the concepts in KiCad 5, at least for my quite basic stuff. But I've only ever used KiCad and OrCAD.
What would make sense to me is to have KiCad's workflow for layout organized more around a design rules engine at its core, like, as I understand in Altium design rules are pretty central, also in OrCAD.

How I'd go about it is to take a release version of KiCad (probably because I mostly only know KiCad) and take the geometric, routing, export, and maybe even drawing engine of it and wrap it with a logic and database system. SWI Prolog is probably a good example for such system. A design rule engine built upon that, in conjunction with a new GUI, would drive the KiCad core.  I guess I'd also prefer a single integrated application, like Altium, no separate apps for schematic and layout, so the GUI could be similar to Altium's.  I'd rather not code the GUI in C++. In principle something like Common Lisp would be cool where you can live code, i.e. redefine code of your running program while it's running, to be able to iterate faster.
 

Online Doctorandus_P

  • Super Contributor
  • ***
  • Posts: 3360
  • Country: nl
Re: [CrowdLaborFunding] PCB CAD tool idea
« Reply #23 on: January 24, 2019, 02:13:30 am »
Opening this thread with stating that you have a stupid idea has dicouraged me from reading past the first sentence of this thread.
 
The following users thanked this post: Warhawk

Online ataradov

  • Super Contributor
  • ***
  • Posts: 11260
  • Country: us
    • Personal site
Re: [CrowdLaborFunding] PCB CAD tool idea
« Reply #24 on: January 24, 2019, 02:15:16 am »
Yet you felt compelled to post something without reading. Keep us informed.
Alex
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf