kicad-developers team mailing list archive
-
kicad-developers team
-
Mailing list archive
-
Message #44443
Re: Placing real components out of a database instead of: "Automatic assignment of footprint with a database"
Nobody is suggesting that we bundle any database engine.
If your company doesn't want to use MySQL, and they want to use this
feature, I would suggest Postgres or MariaDB :)
On Sat, Aug 29, 2020 at 9:52 AM Mark Roszko <mark.roszko@xxxxxxxxx> wrote:
> > Surely there must be an open source impl of an ODBC interface on a CSV
> file?
>
> Yep they do. On Windows, Microsoft actually installs their "Microsoft Text
> Driver" with MS Office which allows ODBC to CSV files.
>
>
> >Although I’m not sure of the desire to avoid MySQL. It’s remarkably easy
> to set up an instance (or auto-deploy one with an app).
>
> My company has an outright ban policy on oracle (including network level).
> We aren't the only ones too. Oracle intentionally baits users (corporate
> ones specifically) into license violations and is basically a company with
> more lawyers than engineers. MySQL as such is affected/infested by Oracle.
>
> Other than that, bundling a database engine is incredibly messy and a
> world of packaging hell from conflicts, IT policy, MS Group policy, etc.
> Not worth bundling.
>
>
>
> On Sat, Aug 29, 2020 at 9:22 AM Jeff Young <jeff@xxxxxxxxx> wrote:
>
>> Surely there must be an open source impl of an ODBC interface on a CSV
>> file?
>>
>> Although I’m not sure of the desire to avoid MySQL. It’s remarkably easy
>> to set up an instance (or auto-deploy one with an app).
>>
>> Apologies if we’ve already talked about that; I’ll confess to not having
>> followed this thread 100%….
>>
>> On 29 Aug 2020, at 14:11, Wayne Stambaugh <stambaughw@xxxxxxxxx> wrote:
>>
>> I would most likely reject any solution that was tied to a particular
>> database. All this would do is open up a Pandora's box of complaints as
>> to why we didn't use database A over database B. ODBC is the most
>> flexible solution that I am aware of and allows users to choose their
>> preferred database.
>>
>> Cheers,
>>
>> Wayne
>>
>> On 8/29/20 8:29 AM, Jon Evans wrote:
>>
>> Putting aside the fact that I think this feature isn't really aimed at
>> hobbyists, I would not be opposed to people wanting to extend it beyond
>> ODBC but that comes with extra complexity that must be handled.
>>
>> With ODBC, KiCad just needs to know about the interface to retrieve the
>> data.
>>
>> With a CSV file, KiCad actually needs to read that file in and keep it
>> in memory. Watch for modifications on disk, or else lock it
>> exclusively. Things like that.
>>
>> I'm not sure I really see the advantage of a CSV-backed "database" over
>> the existing KiCad library system, if we're talking about a single user.
>>
>> -Jon
>>
>> On Sat, Aug 29, 2020 at 8:19 AM Mark Roszko <mark.roszko@xxxxxxxxx
>> <mailto:mark.roszko@xxxxxxxxx <mark.roszko@xxxxxxxxx>>> wrote:
>>
>> Sqlite was a quick&dirty way to test if my ideas would work.
>>
>> There are ODBC wrappers for SQLite........
>>
>> I mean libreoffice would do for the management.
>>
>> Yes, and you know what you would use? Not CSV files.
>> LibreOffice Base / Microsoft Access.
>> This is the office suite database that's basically SQLite and there
>> are ODBC wrappers as well :D
>>
>> Also, why would a hobbyist fire up a sql database when a CSV file
>>
>> would be sufficient? I mean libreoffice would do for the management.
>>
>> KiCad's uses aren't limited to hobbyists...
>> And, you assume there aren't hobbyists like me who will gladly take
>> that ODBC link and spin up an frontend in a few hours to the whole
>> system :D
>>
>>
>> On Sat, Aug 29, 2020 at 4:22 AM Johann Wilhelm
>> <johann.wilhelm@wilhelm.consulting> wrote:
>>
>> Hi there!
>>
>> Well, then my comment was not completely wrong.
>>
>> Sqlite was a quick&dirty way to test if my ideas would work. For
>> my future productive system I really want to use a mix of
>> couchdb and maybe postgres. i.e. a JSON document storage for the
>> component information and sql for inventory management.
>>
>> So ODBC would not work well for me.
>>
>> Also, why would a hobbyist fire up a sql database when a CSV
>> file would be sufficient? I mean libreoffice would do for the
>> management.
>>
>> Additionally, I'd suggest looking at the BOM creation. There,
>> external programs are called.
>>
>> So why not define a dataformat (xml, json, csv,...) and just
>> call an external app or read from a file/uri?
>>
>> Anyways, I would volunteer for implementing some alternatives
>> (read from file/uri and output of executable) to the ODBC
>> interface if someone guides me through the KiCad procedures.
>>
>> Regards,
>> Johann
>>
>>
>> Jon Evans <jon@xxxxxxxxxxxxx <mailto:jon@xxxxxxxxxxxxx
>> <jon@xxxxxxxxxxxxx>>> schrieb
>> am Fr., 28. Aug. 2020, 19:54:
>>
>> My idea is to make it possible for KiCad to talk to an
>> external database.
>> The database itself (and its schema) will not be defined as
>> part of this spec, and will not be part of KiCad.
>>
>> The only requirement is that you have some columns in your
>> schema that KiCad understands (for example, to point to the
>> right symbols and footprints in the KiCad libraries).
>> The planned interface to connect to the database is ODBC.
>> This would in theory allow using sqlite to create a database
>> as a file on disk, although I anticipate that most users
>> will be using something like MariaDB or Postgres.
>>
>> There has been some discussion of supporting talking to web
>> interfaces via some REST API, or even talking to arbitrary
>> interfaces via Python scripting, but that discussion should
>> stay separate.
>> The original thread was about getting component information
>> out of a database and I just wanted to let people know that
>> I am working on this.
>>
>> People are welcome to also discuss the ideas of getting
>> component information from a web API or from some Python
>> script.
>> But, I am not working on that right now, and there hasn't
>> even been a conversation started on what that spec would
>> look like.
>>
>> Best,
>> Jon
>>
>> On Fri, Aug 28, 2020 at 1:42 PM Johann Wilhelm
>> <johann.wilhelm@wilhelm.consulting> wrote:
>>
>> Hi Jon,
>>
>> Well, you're idea was to define a database or at least a
>> database schema if I understood this correctly:
>>
>> What I plan on implementing is not a "full" database
>> management system, but
>>
>> rather an interface to grab info out of a database,
>> just like you say.
>>
>> The only difference is, there are no plans to store
>> actual symbols or
>>
>> footprints in the database.
>>
>> The symbols and footprints will still be stored in
>> "normal" KiCad library
>>
>> files; the database will just contain "pointers"
>> telling KiCad which symbol
>>
>> to use (and what library it can be found in).
>>
>>
>>
>> I was pointing toward a specification of a data
>> format.So either read the data from a file or
>> webinterface (that's why I used URI).
>> My script-set currently gives me that information via
>> http://localhost:8000/API/Component/getMatchWisdom
>>
>> Others would maybe like to save a file in ~/.KiCad (so
>> the URI would be file://~/.KiCad)
>>
>> If "database"/"database interface" would include
>> something which could read from files and/or web
>> resources, well, never mind my comment :)
>>
>> With "global parameter" I mean something which could be
>> part of a .pro file.
>>
>> Regards,
>> Johann
>>
>>
>> Am Fr., 28. Aug. 2020 um 19:04 Uhr schrieb Jon Evans
>> <jon@xxxxxxxxxxxxx <mailto:jon@xxxxxxxxxxxxx
>> <jon@xxxxxxxxxxxxx>>>:
>>
>> Hi Johann,
>>
>> I am not sure exactly what you are arguing against.
>> I don't see any difference between what you are
>> looking for and what is in my spec.
>> I am not sure what you mean by "global URI
>> parameter" but the part picker will be able to
>> filter using any of the external data present.
>>
>> Best,
>> Jon
>>
>> On Fri, Aug 28, 2020 at 12:56 PM Johann Wilhelm
>> <johann.wilhelm@wilhelm.consulting> wrote:
>>
>> Hi everyone!
>>
>> I'm new here in the mailing list but I'm
>> currently building my own electronics business
>> around KiCad which I use and love for years now.
>>
>> I spent the last weeks, trying to tie together
>> procurement, PCB design, and fabrication in a
>> single script-set.
>> Just to have it mentioned - before getting
>> self-employed, I worked for 10 years in the
>> electronics industry in a huge enterprise.
>> So I had some strict requirements for my tooling
>> and I have some very strong opinions on how my
>> perfect workflow should look like :)
>>
>> I'm very sorry but I need to say: PLEASE, don't
>> just throw a part database at the community!
>> Why? Because everyone has different
>> approaches how to do procurement and inventory
>> management!
>> It's ok (and actually good!) if you try to come
>> up with something but PLEASE, go for a defined
>> filter interface!
>>
>> What I would suggest implementing - actually, I
>> have plans to implement it myself in mid-term -
>> is a simple checkbox in the component dialog
>> named "Apply Parts Filter" and a global URI
>> parameter that provides the filter (or better:
>> the source of "wisdom" used by the filter).
>> Maybe another parameter defining the default for
>> the checkbox would be nice as well...
>>
>> I think even a simple CSV with columns for
>> Symbol, Footprint, and Value could provide
>> sufficient information for effective
>> filtering/adaption of the symbol-tree.
>>
>> A CSV like this:
>>
>>
>>
>> "Audio:TLV320AIC23BPW", "TLV320AIC23BPW", "Package_SO:TSSOP-28_4.4x9.7mm_P0.65mm"
>>
>> "Device:R_Small", "1k", "Resistor_SMD:R_0805_2012Metric"
>> "Device:R*", "12k4",
>> "Resistor_SMD:R_0805_2012Metric"
>>
>> "Device:R*", "12k4", "Resistor_SMD:R_1206_3216Metric"
>>
>> "Device:R*", "10R", "Resistor_SMD:R_0805_2012Metric"
>>
>>
>> should result in a component tree like this:
>>
>> Audio
>>
>> TLV320AIC23BPW <-- this symbol has a
>> matching default footprint and value
>>
>> Device
>>
>> R <-- this symbol is included in the
>> CSV data
>>
>> 12k4 <-- a value of 12k4 would
>> match Device:R and a corresponding
>> symbol is added by the filter
>>
>> Resistor_SMD:R_0805_2012Metric
>> <--- both footprints would
>> match Device:R 12k4 so the
>> filter adds both symbols with
>> the footprint and values fields
>> complemented
>> Resistor_SMD:R_0805_2012Metric
>> <--- ....
>>
>> 10R
>>
>> Resistor_SMD:R_0805_2012Metric
>>
>> R_Small
>>
>> 1k <-- 1k only matches
>> Device:R_Small
>>
>> Resistor_SMD:R_0805_2012Metric
>>
>> 12k4
>>
>> Resistor_SMD:R_0805_2012Metric
>> Resistor_SMD:R_0805_2012Metric
>>
>> 10R
>>
>> Resistor_SMD:R_0805_2012Metric
>>
>>
>> So the filter should add all symbols referenced
>> in the CSV.
>> If a symbol has no matching footprint and/or
>> value => "create" them on fly
>>
>> With this, you can use the whole symbol library
>> or the existing parts in your inventory.
>> The best of both worlds!
>>
>> Regards,
>> Johann
>>
>>
>> Am Fr., 28. Aug. 2020 um 16:38 Uhr schrieb Brian
>> <lotharyx@xxxxxxxxx <mailto:lotharyx@xxxxxxxxx
>> <lotharyx@xxxxxxxxx>>>:
>>
>> Just want to add my +1 for the interface
>> approach. I am glad to hear that is the
>> intent (I’ve not had time to read the
>> proposal). With such an interface, as has
>> been pointed out already,
>> data-source-specific implementations should
>> be relatively straightforward, and then I
>> don’t have to potentially throw away my
>> years of privately curated data or figure
>> out how to cram it into some alternate
>> schema. All I would need to do is write the
>> code to answer the questions presented by
>> the interface.
>>
>> Hopefully in the next few days I’ll be able
>> to read Jon’s draft spec and comment from a
>> better-informed position.
>>
>> Cheers,
>> -Brian
>>
>> On Aug 28, 2020, at 9:43 AM, Jon Evans
>> <jon@xxxxxxxxxxxxx
>> <mailto:jon@xxxxxxxxxxxxx <jon@xxxxxxxxxxxxx>>>
>> wrote:
>>
>>
>> Hi Clemens,
>>
>> On Fri, Aug 28, 2020 at 9:34 AM Clemens
>> Koller <cko@xxxxxxxxx
>> <mailto:cko@xxxxxxxxx <cko@xxxxxxxxx>>> wrote:
>>
>> Hello!
>>
>> This is related to the previous
>> thread: "Automatic assignment of
>> footprint with a database"
>>
>> I would generally prefer assemble real
>> components on a real PCB right from
>> the beginning instead of first placing
>> generic components and then assign
>> footprints + manufacturers + types + x
>> manually. This seems extra work for
>> each component which could possibly be
>> avoided.
>>
>>
>> Me too!
>>
>>
>> So, regarding on the Kicad codebase, I
>> would very likely not recomment to
>> embed a full component management /
>> database system, since this might vary
>> from site to site and even from
>> project/assembly house to
>> project/house. But it would be great
>> to be able to have an interface to
>> grab a component out of a database and
>> Kicad grabs all desired / a selection
>> of individual columns out of the
>> database as needed.
>> This might include the actual
>> footprints stored in the database as well.
>>
>>
>> What I plan on implementing is not a
>> "full" database management system, but
>> rather an interface to grab info out of a
>> database, just like you say.
>> The only difference is, there are no plans
>> to store actual symbols or footprints in
>> the database.
>> The symbols and footprints will still be
>> stored in "normal" KiCad library files;
>> the database will just contain "pointers"
>> telling KiCad which symbol to use (and
>> what library it can be found in).
>>
>> BTW, the example schema in your email
>> looks very familiar to me. This is the
>> kind of data source that can be used with
>> the feature I am talking about: just add
>> columns to the schema for tracking which
>> KiCad symbol and footprint(s) should be
>> used for a part.
>>
>> Regarding the advanced features you
>> mention, some of them sound like they
>> would be handled by a PLM tool.
>> Some of the PLM tools I have worked with
>> can interface to external databases for
>> managing this kind of component library
>> for an EDA or mechanical CAD tool.
>>
>> Best,
>> Jon
>> _______________________________________________
>> Mailing list:
>> https://launchpad.net/~kicad-developers
>> Post to :
>> kicad-developers@xxxxxxxxxxxxxxxxxxx
>> <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx
>> <kicad-developers@xxxxxxxxxxxxxxxxxxx>>
>> Unsubscribe :
>> https://launchpad.net/~kicad-developers
>> More help :
>> https://help.launchpad.net/ListHelp
>>
>> _______________________________________________
>> Mailing list:
>> https://launchpad.net/~kicad-developers
>> Post to :
>> kicad-developers@xxxxxxxxxxxxxxxxxxx
>> <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx
>> <kicad-developers@xxxxxxxxxxxxxxxxxxx>>
>> Unsubscribe :
>> https://launchpad.net/~kicad-developers
>> More help :
>> https://help.launchpad.net/ListHelp
>>
>> _______________________________________________
>> Mailing list:
>> https://launchpad.net/~kicad-developers
>> Post to :
>> kicad-developers@xxxxxxxxxxxxxxxxxxx
>> <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx
>> <kicad-developers@xxxxxxxxxxxxxxxxxxx>>
>> Unsubscribe :
>> https://launchpad.net/~kicad-developers
>> More help : https://help.launchpad.net/ListHelp
>>
>> _______________________________________________
>> Mailing list: https://launchpad.net/~kicad-developers
>> Post to : kicad-developers@xxxxxxxxxxxxxxxxxxx
>> <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx
>> <kicad-developers@xxxxxxxxxxxxxxxxxxx>>
>> Unsubscribe : https://launchpad.net/~kicad-developers
>> More help : https://help.launchpad.net/ListHelp
>>
>>
>>
>> --
>> Mark
>>
>>
>> _______________________________________________
>> Mailing list: https://launchpad.net/~kicad-developers
>> Post to : kicad-developers@xxxxxxxxxxxxxxxxxxx
>> Unsubscribe : https://launchpad.net/~kicad-developers
>> More help : https://help.launchpad.net/ListHelp
>>
>>
>> _______________________________________________
>> Mailing list: https://launchpad.net/~kicad-developers
>> Post to : kicad-developers@xxxxxxxxxxxxxxxxxxx
>> Unsubscribe : https://launchpad.net/~kicad-developers
>> More help : https://help.launchpad.net/ListHelp
>>
>>
>> _______________________________________________
>> Mailing list: https://launchpad.net/~kicad-developers
>> Post to : kicad-developers@xxxxxxxxxxxxxxxxxxx
>> Unsubscribe : https://launchpad.net/~kicad-developers
>> More help : https://help.launchpad.net/ListHelp
>>
>
>
> --
> Mark
> _______________________________________________
> Mailing list: https://launchpad.net/~kicad-developers
> Post to : kicad-developers@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~kicad-developers
> More help : https://help.launchpad.net/ListHelp
>
References
-
Re: Placing real components out of a database instead of: "Automatic assignment of footprint with a database"
From: Jon Evans, 2020-08-28
-
Re: Placing real components out of a database instead of: "Automatic assignment of footprint with a database"
From: Brian, 2020-08-28
-
Re: Placing real components out of a database instead of: "Automatic assignment of footprint with a database"
From: Johann Wilhelm, 2020-08-28
-
Re: Placing real components out of a database instead of: "Automatic assignment of footprint with a database"
From: Jon Evans, 2020-08-28
-
Re: Placing real components out of a database instead of: "Automatic assignment of footprint with a database"
From: Johann Wilhelm, 2020-08-28
-
Re: Placing real components out of a database instead of: "Automatic assignment of footprint with a database"
From: Jon Evans, 2020-08-28
-
Re: Placing real components out of a database instead of: "Automatic assignment of footprint with a database"
From: Johann Wilhelm, 2020-08-29
-
Re: Placing real components out of a database instead of: "Automatic assignment of footprint with a database"
From: Mark Roszko, 2020-08-29
-
Re: Placing real components out of a database instead of: "Automatic assignment of footprint with a database"
From: Jon Evans, 2020-08-29
-
Re: Placing real components out of a database instead of: "Automatic assignment of footprint with a database"
From: Wayne Stambaugh, 2020-08-29
-
Re: Placing real components out of a database instead of: "Automatic assignment of footprint with a database"
From: Jeff Young, 2020-08-29
-
Re: Placing real components out of a database instead of: "Automatic assignment of footprint with a database"
From: Mark Roszko, 2020-08-29