Re: [Kicad-developers] Kicad 6 API

2020-07-15 Thread Tim Hawkins
Modularization is a key part to large-scale refactoring, if you have system
that can't be subdivided then that a good indicator that you have an
architectural problem.

One of the best refactoring patterns for large systems is the "Strangler
fig pattern", where you split out a unit of functionality as a seperate
module and refactor that.  In this case I'm speaking of modules nothing the
kicad sense of its bunch of seperate apps, but in the sense of a lot of
small subunits, somebody spoke above of a kicad.so library, but that is in
itself too large a chunk and things need to be a lot smaller than that.

I'm a 40 year veteran coder, c, c++, php, java, kotlin, and c#/dotnet core.
I have not been very active in OSS, maybe it's time that changed, and kicad
sounds like a good project to engage with, as it would engage with my
interests (PCBs, CNC, 3d printers etc, personal fabrication). I use fedora
Linux everywhere, I have all the tooling required.

Where can I find a good guide for getting started with the project?

On Thu, Jul 16, 2020, 07:10 Wayne Stambaugh  wrote:

> Hi Conrad,
>
> On 7/15/20 3:51 PM, Conrad Wood wrote:
> > On Wed, 2020-07-15 at 13:53 -0400, Mark Roszko wrote:
> >>> I also think it would enable independent software developers to
> >> build software on top of, or around kicad, further enhancing its
> >> value.
> >>
> >> They should be contributing to KiCad first ;)
> >> These plans for separation have been around for years, the problem is
> >> the amount of devs is limited and their time even more so. It is
> >> an open source volunteer effort after all.
> >
> > Isn't that a bit of a chicken-and-egg situation?
>
> Not necessarily.  Refactoring can be done incrementally over long
> periods of time.  It doesn't have to be an all or nothing effort.  This
> is pretty much how the Linux kernel development happens.
>
> >
> > I mean, it's fairly hard to start contributing to KiCad due to its
> > complexity. (at least that is my impression - but then I might just be
> > stupid :) )
> > IMHO, splitting it up would lower the entry barrier to new-comers.
>
> EDA applications are by their nature complex so I don't know how
> splitting up complex code would lower the barrier to entry.  I'm not
> suggesting that the KiCad code base couldn't be vastly improved but I
> cannot see how that will lower the barrier to entry for new developers.
>
> >
> > I'd be more than happy to contribute, but clearly I can't just "split
> > out bits into a library" on my own w/o discussion and consensus. That
> > _has_ to be a team effort, right?
>
> Any changes to the code structure would require discussion and consensus
> with the lead development team.  My guess any discussion that you could
> think of has already been discussed more than once.  It's generally a
> good idea to check the developer list mailing archives for previous
> discussions so we don't have to rehash the same discussion.
>
> >
> > I understand, that there never is "The Right Time" to do something like
> > it and I consider it very important not to add any extra workload on
> > already stretched people.
> >
> > Rather, with starting this discussion I hope to contribute  with my
> > limited means, specifically, finding a means to spread the workload a
> > bit more evenly, and at some point, I might be able to directly
> > contribute as well.
>
> I will reiterate Seth's comments about starting small.  It really is the
> most sensible path forward to becoming a member of the development team.
>
> Cheers,
>
> Wayne
>
>
> >
> > Also, for the sake of clarity, when I mentioned about on top of or
> > "around kicad" I was very much thinking of more open-source software,
> > not closed systems! Thus adding to the functionality of KiCad.
> >
> > Conrad
> >
> >
> >
> > ___
> > Mailing list: https://launchpad.net/~kicad-developers
> > Post to : kicad-developers@lists.launchpad.net
> > Unsubscribe : https://launchpad.net/~kicad-developers
> > More help   : https://help.launchpad.net/ListHelp
> >
>
> ___
> Mailing list: https://launchpad.net/~kicad-developers
> Post to : kicad-developers@lists.launchpad.net
> Unsubscribe : https://launchpad.net/~kicad-developers
> More help   : https://help.launchpad.net/ListHelp
>
___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] Kicad 6 API

2020-07-15 Thread Wayne Stambaugh
Hi Conrad,

On 7/15/20 3:51 PM, Conrad Wood wrote:
> On Wed, 2020-07-15 at 13:53 -0400, Mark Roszko wrote:
>>> I also think it would enable independent software developers to
>> build software on top of, or around kicad, further enhancing its
>> value.
>>
>> They should be contributing to KiCad first ;) 
>> These plans for separation have been around for years, the problem is
>> the amount of devs is limited and their time even more so. It is
>> an open source volunteer effort after all.
> 
> Isn't that a bit of a chicken-and-egg situation?

Not necessarily.  Refactoring can be done incrementally over long
periods of time.  It doesn't have to be an all or nothing effort.  This
is pretty much how the Linux kernel development happens.

> 
> I mean, it's fairly hard to start contributing to KiCad due to its
> complexity. (at least that is my impression - but then I might just be
> stupid :) )
> IMHO, splitting it up would lower the entry barrier to new-comers.

EDA applications are by their nature complex so I don't know how
splitting up complex code would lower the barrier to entry.  I'm not
suggesting that the KiCad code base couldn't be vastly improved but I
cannot see how that will lower the barrier to entry for new developers.

> 
> I'd be more than happy to contribute, but clearly I can't just "split
> out bits into a library" on my own w/o discussion and consensus. That
> _has_ to be a team effort, right?

Any changes to the code structure would require discussion and consensus
with the lead development team.  My guess any discussion that you could
think of has already been discussed more than once.  It's generally a
good idea to check the developer list mailing archives for previous
discussions so we don't have to rehash the same discussion.

> 
> I understand, that there never is "The Right Time" to do something like
> it and I consider it very important not to add any extra workload on
> already stretched people. 
> 
> Rather, with starting this discussion I hope to contribute  with my
> limited means, specifically, finding a means to spread the workload a
> bit more evenly, and at some point, I might be able to directly
> contribute as well.

I will reiterate Seth's comments about starting small.  It really is the
most sensible path forward to becoming a member of the development team.

Cheers,

Wayne


> 
> Also, for the sake of clarity, when I mentioned about on top of or
> "around kicad" I was very much thinking of more open-source software,
> not closed systems! Thus adding to the functionality of KiCad.
> 
> Conrad
>  
> 
> 
> ___
> Mailing list: https://launchpad.net/~kicad-developers
> Post to : kicad-developers@lists.launchpad.net
> Unsubscribe : https://launchpad.net/~kicad-developers
> More help   : https://help.launchpad.net/ListHelp
> 

___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] Kicad 6 API

2020-07-15 Thread Seth Hillbrand

On 2020-07-15 12:51, Conrad Wood wrote:

On Wed, 2020-07-15 at 13:53 -0400, Mark Roszko wrote:


They should be contributing to KiCad first ;)
These plans for separation have been around for years, the problem is
the amount of devs is limited and their time even more so. It is
an open source volunteer effort after all.


Isn't that a bit of a chicken-and-egg situation?

I mean, it's fairly hard to start contributing to KiCad due to its
complexity. (at least that is my impression - but then I might just be
stupid :) )
IMHO, splitting it up would lower the entry barrier to new-comers.

I'd be more than happy to contribute, but clearly I can't just "split
out bits into a library" on my own w/o discussion and consensus. That
_has_ to be a team effort, right?


The chicken/egg analogy is spot on.  Despite the complexity, we have 
both chickens and eggs.  This happens by changing small things at a 
time.


If you would like to contribute to KiCad, you should start small.  Pick 
an area of the program that you are interested in and find the bug 
reports relating to it.  Then figure out why it is broken and write a 
patch to fix it.


After you do a few of these and they are accepted, you will gain 
familiarity with how the codebase is meant to work.  At that point, you 
might look at some of the wishlist items in the tracker that relate to 
the area you have picked.


This will ease you into how the system works and ensures that your first 
patches are small enough that you can learn how the team works and what 
we expect in the code contributions.


We are never going to support folks doing fundamental/structural work 
who aren't established contributors.  It is counterproductive to the 
success of the project.  I hope that you will choose to begin 
contributing.  We will work with you to help you get started.  The 
smaller the first issue you tackle, the easier it will be for you.  We 
tag issues in our database with the label "starter" to identify those 
issues we think newcomers will have the easiest time addressing.


Best-
Seth

Seth Hillbrand
KiCad Services Corporation
https://www.kipro-pcb.com
+1 530 302 5483 | +1 212 603 9372

___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] Kicad 6 API

2020-07-15 Thread Conrad Wood
On Wed, 2020-07-15 at 13:53 -0400, Mark Roszko wrote:
> > I also think it would enable independent software developers to
> build software on top of, or around kicad, further enhancing its
> value.
> 
> They should be contributing to KiCad first ;) 
> These plans for separation have been around for years, the problem is
> the amount of devs is limited and their time even more so. It is
> an open source volunteer effort after all.

Isn't that a bit of a chicken-and-egg situation?

I mean, it's fairly hard to start contributing to KiCad due to its
complexity. (at least that is my impression - but then I might just be
stupid :) )
IMHO, splitting it up would lower the entry barrier to new-comers.

I'd be more than happy to contribute, but clearly I can't just "split
out bits into a library" on my own w/o discussion and consensus. That
_has_ to be a team effort, right?

I understand, that there never is "The Right Time" to do something like
it and I consider it very important not to add any extra workload on
already stretched people. 

Rather, with starting this discussion I hope to contribute  with my
limited means, specifically, finding a means to spread the workload a
bit more evenly, and at some point, I might be able to directly
contribute as well.

Also, for the sake of clarity, when I mentioned about on top of or
"around kicad" I was very much thinking of more open-source software,
not closed systems! Thus adding to the functionality of KiCad.

Conrad
 


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] Kicad 6 API

2020-07-15 Thread Ian McInerney
The core features of KiCad do not rely on GTK, or any specific toolkit
other than wxWidgets currently. GTK is only required if you want to use
KiCad on Linux machines, and it will use the native (Win32 and Appkit)
frameworks on the other operating systems [1]. The core code does have a
dependency on the core wxWidgets libraries for things like file IO though,
but that dependency is not concerning for this work.

KiCad is a complicated application, with a long history. Design changes
that are fundamental to the core code take time to implement and cannot be
done overnight. Couple that with the fact that the current set of active
developers is small (I believe we have ~10 lead developers, and around 5-10
other regular contributors), large changes like that will take a developer
away from other features that users want. Pausing KiCad releases for a very
long time to do the refactor of the backend code will not be helpful to
users who want features added during that release cycle and to use those
features in the near future. As such, we incrementally do it as we work in
areas, as it is needed for other new features, and as developers have time.
The current developer viewpoint is that we don't add new features or code
that will make this separation more difficult to achieve in the future, but
try to either introduce more separation or keep it at the same level with
new features. During each development cycle, small projects are done in the
beginning to introduce more separation, and we are trying to work towards
the point where that final separation can be achieved during a release
cycle, but it isn't going to be in version 6.

I will echo what has been said before: to get an understanding of the
current state of the KiCad codebase and what it will take to do a refactor
that accomplishes what you are suggesting, please look through the code and
experiment with it (fixing issues and implementing small new features is a
good way to do that). I have been in the codebase for around a year at this
point, and even I still don't understand some aspects of it.

-Ian

[1] Technically you could use any of the ports of wx on the platforms they
support (e.g. wxGTK on windows), but we only will provide support for the
native port running on the machine.



On Wed, Jul 15, 2020 at 5:26 PM Conrad Wood 
wrote:

> I looked at the SWIG stuff some months ago (because I'm keen on Golang
> APIs). My SWIG-fu was nowhere near as good to figure out to compile
> anything but the python bindings (and even that was non-trivial IMHO)
>
> I think it would be much easier (as in trivial) if there be a clean
> split between UI (and dependencies) and non UI.
>
> If there were a library (kicad.so) with the relevant functions, then it
> would be quite trivial to create (and maintain) Bindings. The GUI ought
> to use the library as well, but ideally the library should not depend
> on any GTK of any sort.
>
> If that split were as clean as I imagine it, it would even be easy to
> create additional functionality, such as (kicad-diff.so) or (kicad-
> tools.so) which the GUI could choose to use or not. Maybe splitting out
> kicad-eeschema.so and kicad-pcbnew etc makes sense too.
>
> This would make it much easier to allow maintainers to focus on one
> area and become the "domain expert" there. Hopefully, this would also
> release some pressure on the current (lead) developers, I imagine.
>
> I also think it would enable independent software developers to build
> software on top of, or around kicad, further enhancing its value.
>
> That's another reason why I think it might be useful to think and
> document a little about the architecture and the components of future
> Kicad releases and the long-term evolution.
>
>
>
>
> On Wed, 2020-07-15 at 08:00 -0700, Seth Hillbrand wrote:
> > Our main focus is stabilizing the Python API.  If there is a
> > motivated developer who steps up to contribute and maintain (fix
> > bugs) an alternate language binding, we could consider additional
> > support in the main tree.  For right now, that is not on our list of
> > features for v6.
> > Best-
> > Seth
> >
> > Seth Hillbrand
> > Lead Developer
> > +1-530-302-5483‬
> > Davis, CA
> > www.kipro-pcb.comi...@kipro-pcb.com
> >
> >
> > On 2020-07-13 21:00, Tim Hawkins wrote:
> > > Would it be possible to consider using swig to create the Python
> > > Bindings, so that it will be easy to create bindings for other
> > > languages than just Python, Java, Kotlin or Rust would be of
> > > interest to me.
> > >
> > > On Tue, Jul 14, 2020 at 1:06 AM Jon Evans 
> > > wrote:
> > > > Hi Conrad,
> > > >
> > > > We are working towards removing all the UI dependencies (already
> > > > the
> > > > latest state-of-the-art is way better than the 5.1 branch in this
> > > > regard).  We are also working towards a more stable Python API.
> > > >
> > > > One of the goals of this work is to enable some of the features
> > > > you
> > > > mentioned (automated generation of outputs, etc).

Re: [Kicad-developers] Kicad 6 API

2020-07-15 Thread Jon Evans
Also, the separation of UI from the rest of code, like any big
refactoring, is not something that is practical to first plan in its
entirety and then execute all at once, as other software teams have
learned many times[1].  It is a goal that we proceed towards over
time.

It is not in the interest of any KiCad user if the development team
stops implementing any new features or bugfixes for a year or more
just to accomplish some massive refactoring.  So, we do the
refactoring along with introducing new features, and gradually.

We already have a number of domain experts who work on KiCad, and we
welcome others to get involved!  The best way to understand KiCad's
architecture and the direction it is moving in is to start making code
contributions and follow along with the contributions from others.

[1] https://www.joelonsoftware.com/2000/04/06/things-you-should-never-do-part-i/

-Jon

On Wed, Jul 15, 2020 at 2:04 PM Mark Roszko  wrote:
>
> > I also think it would enable independent software developers to build 
> > software on top of, or around kicad, further enhancing its value.
>
> They should be contributing to KiCad first ;)
> These plans for separation have been around for years, the problem is the 
> amount of devs is limited and their time even more so. It is an open source 
> volunteer effort after all.
>
> On Wed, Jul 15, 2020 at 12:26 PM Conrad Wood  wrote:
>>
>> I looked at the SWIG stuff some months ago (because I'm keen on Golang
>> APIs). My SWIG-fu was nowhere near as good to figure out to compile
>> anything but the python bindings (and even that was non-trivial IMHO)
>>
>> I think it would be much easier (as in trivial) if there be a clean
>> split between UI (and dependencies) and non UI.
>>
>> If there were a library (kicad.so) with the relevant functions, then it
>> would be quite trivial to create (and maintain) Bindings. The GUI ought
>> to use the library as well, but ideally the library should not depend
>> on any GTK of any sort.
>>
>> If that split were as clean as I imagine it, it would even be easy to
>> create additional functionality, such as (kicad-diff.so) or (kicad-
>> tools.so) which the GUI could choose to use or not. Maybe splitting out
>> kicad-eeschema.so and kicad-pcbnew etc makes sense too.
>>
>> This would make it much easier to allow maintainers to focus on one
>> area and become the "domain expert" there. Hopefully, this would also
>> release some pressure on the current (lead) developers, I imagine.
>>
>> I also think it would enable independent software developers to build
>> software on top of, or around kicad, further enhancing its value.
>>
>> That's another reason why I think it might be useful to think and
>> document a little about the architecture and the components of future
>> Kicad releases and the long-term evolution.
>>
>>
>>
>>
>> On Wed, 2020-07-15 at 08:00 -0700, Seth Hillbrand wrote:
>> > Our main focus is stabilizing the Python API.  If there is a
>> > motivated developer who steps up to contribute and maintain (fix
>> > bugs) an alternate language binding, we could consider additional
>> > support in the main tree.  For right now, that is not on our list of
>> > features for v6.
>> > Best-
>> > Seth
>> >
>> > Seth Hillbrand
>> > Lead Developer
>> > +1-530-302-5483‬
>> > Davis, CA
>> > www.kipro-pcb.comi...@kipro-pcb.com
>> >
>> >
>> > On 2020-07-13 21:00, Tim Hawkins wrote:
>> > > Would it be possible to consider using swig to create the Python
>> > > Bindings, so that it will be easy to create bindings for other
>> > > languages than just Python, Java, Kotlin or Rust would be of
>> > > interest to me.
>> > >
>> > > On Tue, Jul 14, 2020 at 1:06 AM Jon Evans 
>> > > wrote:
>> > > > Hi Conrad,
>> > > >
>> > > > We are working towards removing all the UI dependencies (already
>> > > > the
>> > > > latest state-of-the-art is way better than the 5.1 branch in this
>> > > > regard).  We are also working towards a more stable Python API.
>> > > >
>> > > > One of the goals of this work is to enable some of the features
>> > > > you
>> > > > mentioned (automated generation of outputs, etc).
>> > > >
>> > > >
>> > > > On Mon, Jul 13, 2020 at 11:06 AM Conrad Wood <
>> > > > launch...@conradwood.net> wrote:
>> > > > > > > I've seen various 'hacks' out there to provide a graphical
>> > > > 'diff'.
>> > > > > > > I
>> > > > > > > would like to see the API either provide means to do a diff
>> > > > on two
>> > > > > > > commits of the same repository, graphical or otherwise, in
>> > > > such a
>> > > > > > > way
>> > > > > > > that it can be integrated into a web-based process.
>> > > > > > > (with "diff" I mean a method to see where and what changes
>> > > > were
>> > > > > > > made in
>> > > > > > > two versions by a person not trained to do PCB design. -
>> > > > this is
>> > > > > > > mostly
>> > > > > > > to review changes and spot unintended modifications)
>> > > >
>> > > > https://gitlab.com/kicad/code/kicad/-/issues/3865
>> > > > 

Re: [Kicad-developers] Kicad 6 API

2020-07-15 Thread Mark Roszko
> I also think it would enable independent software developers to build
software on top of, or around kicad, further enhancing its value.

They should be contributing to KiCad first ;)
These plans for separation have been around for years, the problem is the
amount of devs is limited and their time even more so. It is an open source
volunteer effort after all.

On Wed, Jul 15, 2020 at 12:26 PM Conrad Wood 
wrote:

> I looked at the SWIG stuff some months ago (because I'm keen on Golang
> APIs). My SWIG-fu was nowhere near as good to figure out to compile
> anything but the python bindings (and even that was non-trivial IMHO)
>
> I think it would be much easier (as in trivial) if there be a clean
> split between UI (and dependencies) and non UI.
>
> If there were a library (kicad.so) with the relevant functions, then it
> would be quite trivial to create (and maintain) Bindings. The GUI ought
> to use the library as well, but ideally the library should not depend
> on any GTK of any sort.
>
> If that split were as clean as I imagine it, it would even be easy to
> create additional functionality, such as (kicad-diff.so) or (kicad-
> tools.so) which the GUI could choose to use or not. Maybe splitting out
> kicad-eeschema.so and kicad-pcbnew etc makes sense too.
>
> This would make it much easier to allow maintainers to focus on one
> area and become the "domain expert" there. Hopefully, this would also
> release some pressure on the current (lead) developers, I imagine.
>
> I also think it would enable independent software developers to build
> software on top of, or around kicad, further enhancing its value.
>
> That's another reason why I think it might be useful to think and
> document a little about the architecture and the components of future
> Kicad releases and the long-term evolution.
>
>
>
>
> On Wed, 2020-07-15 at 08:00 -0700, Seth Hillbrand wrote:
> > Our main focus is stabilizing the Python API.  If there is a
> > motivated developer who steps up to contribute and maintain (fix
> > bugs) an alternate language binding, we could consider additional
> > support in the main tree.  For right now, that is not on our list of
> > features for v6.
> > Best-
> > Seth
> >
> > Seth Hillbrand
> > Lead Developer
> > +1-530-302-5483‬
> > Davis, CA
> > www.kipro-pcb.comi...@kipro-pcb.com
> >
> >
> > On 2020-07-13 21:00, Tim Hawkins wrote:
> > > Would it be possible to consider using swig to create the Python
> > > Bindings, so that it will be easy to create bindings for other
> > > languages than just Python, Java, Kotlin or Rust would be of
> > > interest to me.
> > >
> > > On Tue, Jul 14, 2020 at 1:06 AM Jon Evans 
> > > wrote:
> > > > Hi Conrad,
> > > >
> > > > We are working towards removing all the UI dependencies (already
> > > > the
> > > > latest state-of-the-art is way better than the 5.1 branch in this
> > > > regard).  We are also working towards a more stable Python API.
> > > >
> > > > One of the goals of this work is to enable some of the features
> > > > you
> > > > mentioned (automated generation of outputs, etc).
> > > >
> > > >
> > > > On Mon, Jul 13, 2020 at 11:06 AM Conrad Wood <
> > > > launch...@conradwood.net> wrote:
> > > > > > > I've seen various 'hacks' out there to provide a graphical
> > > > 'diff'.
> > > > > > > I
> > > > > > > would like to see the API either provide means to do a diff
> > > > on two
> > > > > > > commits of the same repository, graphical or otherwise, in
> > > > such a
> > > > > > > way
> > > > > > > that it can be integrated into a web-based process.
> > > > > > > (with "diff" I mean a method to see where and what changes
> > > > were
> > > > > > > made in
> > > > > > > two versions by a person not trained to do PCB design. -
> > > > this is
> > > > > > > mostly
> > > > > > > to review changes and spot unintended modifications)
> > > >
> > > > https://gitlab.com/kicad/code/kicad/-/issues/3865
> > > > https://gitlab.com/kicad/code/kicad/-/issues/2151
> > > >
> > > > This wish doesn't actually have much to do with code that is tied
> > > > to
> > > > the UI, it is just a fairly big project that nobody has started
> > > > on.
> > > >
> > > > > > > On bigger/complex boards, there are often 'sections' which
> > > > are
> > > > > > > handled
> > > > > > > by exports. for example, radio vs memory/cpu vs
> > > > powersupply. It
> > > > > > > would
> > > > > > > absolutely awesome if we can progress KiCad to support such
> > > > teams.
> > > > > > > In
> > > > > > > my mind, I am thinking of a KiCad server which serves
> > > > clients and
> > > > > > > sections can be 'locked' and worked on simultaneously.
> > > > > > > Simultaneously I
> > > > > > > mean, with changes being propagated to each KiCad Client in
> > > > real-
> > > > > > > time.
> > > >
> > > > I'm familiar with this functionality but I don't think anyone has
> > > > yet
> > > > put serious thought into it for KiCad yet (I don't think there's
> > > > an
> > > > open issue tracking it, nor a spec or any 

Re: [Kicad-developers] Kicad 6 API

2020-07-15 Thread Conrad Wood
I looked at the SWIG stuff some months ago (because I'm keen on Golang
APIs). My SWIG-fu was nowhere near as good to figure out to compile
anything but the python bindings (and even that was non-trivial IMHO)

I think it would be much easier (as in trivial) if there be a clean
split between UI (and dependencies) and non UI.

If there were a library (kicad.so) with the relevant functions, then it
would be quite trivial to create (and maintain) Bindings. The GUI ought
to use the library as well, but ideally the library should not depend
on any GTK of any sort.

If that split were as clean as I imagine it, it would even be easy to
create additional functionality, such as (kicad-diff.so) or (kicad-
tools.so) which the GUI could choose to use or not. Maybe splitting out
kicad-eeschema.so and kicad-pcbnew etc makes sense too.

This would make it much easier to allow maintainers to focus on one
area and become the "domain expert" there. Hopefully, this would also
release some pressure on the current (lead) developers, I imagine.

I also think it would enable independent software developers to build
software on top of, or around kicad, further enhancing its value.

That's another reason why I think it might be useful to think and
document a little about the architecture and the components of future
Kicad releases and the long-term evolution.




On Wed, 2020-07-15 at 08:00 -0700, Seth Hillbrand wrote:
> Our main focus is stabilizing the Python API.  If there is a
> motivated developer who steps up to contribute and maintain (fix
> bugs) an alternate language binding, we could consider additional
> support in the main tree.  For right now, that is not on our list of
> features for v6.
> Best-
> Seth
>  
> Seth Hillbrand
> Lead Developer
> +1-530-302-5483‬
> Davis, CA
> www.kipro-pcb.comi...@kipro-pcb.com
> 
> 
> On 2020-07-13 21:00, Tim Hawkins wrote:
> > Would it be possible to consider using swig to create the Python
> > Bindings, so that it will be easy to create bindings for other
> > languages than just Python, Java, Kotlin or Rust would be of
> > interest to me. 
> > 
> > On Tue, Jul 14, 2020 at 1:06 AM Jon Evans 
> > wrote:
> > > Hi Conrad,
> > > 
> > > We are working towards removing all the UI dependencies (already
> > > the
> > > latest state-of-the-art is way better than the 5.1 branch in this
> > > regard).  We are also working towards a more stable Python API.
> > > 
> > > One of the goals of this work is to enable some of the features
> > > you
> > > mentioned (automated generation of outputs, etc).
> > > 
> > > 
> > > On Mon, Jul 13, 2020 at 11:06 AM Conrad Wood <
> > > launch...@conradwood.net> wrote:
> > > > > > I've seen various 'hacks' out there to provide a graphical
> > > 'diff'.
> > > > > > I
> > > > > > would like to see the API either provide means to do a diff
> > > on two
> > > > > > commits of the same repository, graphical or otherwise, in
> > > such a
> > > > > > way
> > > > > > that it can be integrated into a web-based process.
> > > > > > (with "diff" I mean a method to see where and what changes
> > > were
> > > > > > made in
> > > > > > two versions by a person not trained to do PCB design. -
> > > this is
> > > > > > mostly
> > > > > > to review changes and spot unintended modifications)
> > > 
> > > https://gitlab.com/kicad/code/kicad/-/issues/3865
> > > https://gitlab.com/kicad/code/kicad/-/issues/2151
> > > 
> > > This wish doesn't actually have much to do with code that is tied
> > > to
> > > the UI, it is just a fairly big project that nobody has started
> > > on.
> > > 
> > > > > > On bigger/complex boards, there are often 'sections' which
> > > are
> > > > > > handled
> > > > > > by exports. for example, radio vs memory/cpu vs
> > > powersupply. It
> > > > > > would
> > > > > > absolutely awesome if we can progress KiCad to support such
> > > teams.
> > > > > > In
> > > > > > my mind, I am thinking of a KiCad server which serves
> > > clients and
> > > > > > sections can be 'locked' and worked on simultaneously.
> > > > > > Simultaneously I
> > > > > > mean, with changes being propagated to each KiCad Client in
> > > real-
> > > > > > time.
> > > 
> > > I'm familiar with this functionality but I don't think anyone has
> > > yet
> > > put serious thought into it for KiCad yet (I don't think there's
> > > an
> > > open issue tracking it, nor a spec or any kind of roadmap).
> > > 
> > > Perhaps the best way to start would be to make some more formal
> > > detail
> > > of the requirements (in the form of a wishlist issue on GitLab)
> > > and we
> > > can start figuring out the technical challenges.
> > > 
> > > > I am quite aware that this is a lot of changes. I don't suggest
> > > that we
> > > > do everything at once. What I'd like to see though, is that
> > > there is a
> > > > long term view of where we want to take APIs and the
> > > GUI/Library split
> > > > (currently not even certain if that is the planned approach).
> > > 
> > > The current planned 

Re: [Kicad-developers] Kicad 6 API

2020-07-15 Thread Seth Hillbrand
Our main focus is stabilizing the Python API.  If there is a motivated
developer who steps up to contribute and maintain (fix bugs) an
alternate language binding, we could consider additional support in the
main tree.  For right now, that is not on our list of features for v6. 

Best-
Seth

KiCad Services Corporation 

Seth Hillbrand

Lead Developer

+1-530-302-5483‬ [1]

Davis, CA

www.kipro-pcb.com [2]i...@kipro-pcb.com

https://twitter.com/KiProEDA [3]
https://www.linkedin.com/company/kicad [4]

On 2020-07-13 21:00, Tim Hawkins wrote:

> Would it be possible to consider using swig to create the Python Bindings, so 
> that it will be easy to create bindings for other languages than just Python, 
> Java, Kotlin or Rust would be of interest to me.  
> 
> On Tue, Jul 14, 2020 at 1:06 AM Jon Evans  wrote: 
> 
>> Hi Conrad,
>> 
>> We are working towards removing all the UI dependencies (already the
>> latest state-of-the-art is way better than the 5.1 branch in this
>> regard).  We are also working towards a more stable Python API.
>> 
>> One of the goals of this work is to enable some of the features you
>> mentioned (automated generation of outputs, etc).
>> 
>> On Mon, Jul 13, 2020 at 11:06 AM Conrad Wood  
>> wrote:
> I've seen various 'hacks' out there to provide a graphical 'diff'.
> I
> would like to see the API either provide means to do a diff on two
> commits of the same repository, graphical or otherwise, in such a
> way
> that it can be integrated into a web-based process.
> (with "diff" I mean a method to see where and what changes were
> made in
> two versions by a person not trained to do PCB design. - this is
> mostly
> to review changes and spot unintended modifications)
>> 
>> https://gitlab.com/kicad/code/kicad/-/issues/3865
>> https://gitlab.com/kicad/code/kicad/-/issues/2151
>> 
>> This wish doesn't actually have much to do with code that is tied to
>> the UI, it is just a fairly big project that nobody has started on.
>> 
> On bigger/complex boards, there are often 'sections' which are
> handled
> by exports. for example, radio vs memory/cpu vs powersupply. It
> would
> absolutely awesome if we can progress KiCad to support such teams.
> In
> my mind, I am thinking of a KiCad server which serves clients and
> sections can be 'locked' and worked on simultaneously.
> Simultaneously I
> mean, with changes being propagated to each KiCad Client in real-
> time.
>> 
>> I'm familiar with this functionality but I don't think anyone has yet
>> put serious thought into it for KiCad yet (I don't think there's an
>> open issue tracking it, nor a spec or any kind of roadmap).
>> 
>> Perhaps the best way to start would be to make some more formal detail
>> of the requirements (in the form of a wishlist issue on GitLab) and we
>> can start figuring out the technical challenges.
>> 
>>> I am quite aware that this is a lot of changes. I don't suggest that we
>>> do everything at once. What I'd like to see though, is that there is a
>>> long term view of where we want to take APIs and the GUI/Library split
>>> (currently not even certain if that is the planned approach).
>> 
>> The current planned approach is to ensure clean separation between the
>> UI and the rest of the code, and to expose a stable API via Python for
>> people to extend and automate KiCad with.
>> 
>>> 
>>> a) what is the decision making process for KiCad-Dev for such long-term
>>> changes?
>> 
>> Long-term plans need buy-in from the lead developer team (and Wayne,
>> as project lead, is final arbiter of things where we can't reach
>> consensus).
>> 
>> This mailing list is a reasonable place to discuss things (especially
>> general things) before any decision is made.  Discussing specific
>> ideas on a GitLab issue related to the idea is also good.
>> 
>>> b) how does KiCad-Dev deal with large-ish changes that may span
>>> multiple releases or reach further in the future than, say, a feature
>>> request or a bug report?
>> 
>> We use roadmaps, and since the move to GitLab also the Epics feature
>> of that tool, to track large sets of changes that span multiple
>> releases.
>> 
>>> c) How can I help? :)
>> 
>> If you are interested in contributing code, my recommendation is to
>> start small and submit some patches for existing issues while you get
>> familiar with KiCad's architecture.
>> 
>> Understanding the current architecture is important to be able to
>> contribute to planning any future architecture changes.
>> 
>> There is a list of issues tagged "starter" that means one of the
>> developers thought this issue might be more approachable to someone
>> new to the codebase:
>> 
>> https://gitlab.com/kicad/code/kicad/-/issues?scope=all=%E2%9C%93=opened_name[]=starter
>> 
>> Hope this helps!
>> 
>> Best,
>> Jon
>> 
>>