Team Work process for KiCad in a joint project on GitHub

We are a small team using KiCad for a project.
The project is stored on GitHub and we use GitHub Desktop to handle version control.

What is the best way to work together? We have tried having two developers working on the same schematic but this generates merge conflicts which are difficult to resolve, so now we try to have one working on the pcb while another works on footprints etc.

Is there a way to work on the same schematics or pcb without generating conflicts? Ideally without any special tools or services. I read somewhere that both versions of a schematic was reviewed by a user and then merged together by hand. How is that done on the same machine?

Grateful for any help.

See Pros and cons of using a VCS (git etc.) with KiCad. Basically, due to the nature of 2D (or 3D) graphics, reliable merge strategy is impossible within one file. Schematic can be split into hierarchical sheets. PCB would need “design blocks” which is in the wishlist but apparently in limbo.

KiCad does not have a built in method for multiple people working simultaneously on a project. At the moment it is even cumbersome to move a part of a schematic to another hierarchical sheet in the same project.
I’m not sure what happens if different people work on different schematic sheets of the same project. KiCad does some background magic to make it possible to use multiple instances of a hierarchical sheet in a project A schematic sheet is pretty much self contained, but I guess it will still create (smaller) merge conflicts.

There are some tools for creating bitmap images from schematics or PCB’s and comparing those. It’s far from ideal but may be useful.

You may be interested in the thread below. I believe it’s still in a preliminary state and I don’t know much about timescale or direction.

Maybe kicad V9 will have “Multi-user editing support”. You really need to merge each other’s work in real time, just like playing multi-user video games, so that you can immediately see some guy is moving the box you want to move and pick the phone… Git will only let you work on different files or take turns to work on the same files.

I can say with 100% confidence that it’s not gonna happen. Maybe within years, but not in v9 or 10. Even design blocks – which would be much more simple – aren’t in the immediate view. What you describe would need rewriting the engine in low level, with no benefit for average users, even most of the advanced users. On top of that it still would need some restrictions for editing like design blocks to prevent direct conflicts (picking up the phone doesn’t sound very advanced).

Does any EDA package have the feature you describe?

1 Like

Thanks for the input!

KiCad is certainly becoming a viable replacement for the major programs such as Altium with Git version control already included in V8 so I was hoping there were more teams working with KiCad just like us who had some good practices to share.

I found Flux.ai which had most of the features I was hoping for but only seemed suitable for smaller projects with a handful of parts before it got laggy. KiCad is on another level for sure.

At least “Mentor Xpedition” support this. This webpage(Chinese) is showing how to set it up.
xxxx:www.bilibili.com/read/cv15380241/
You need this when doing large project.

Mod edit: We can’t read it so I removed the live link but left enough for those curious to follow if they want.

Just wanted to reply to this thread as I am the maintainer of Ki365. I am currently working on bringing collaboration to engineering projects for OSS software (KiCad and FreeCAD at the moment).

I have been on large teams for electrical work before and I will say KiCad is currently lacking in that area. Git is really great for software development and hopefully electrical and mechanical design soon with Ki365.

The primary version control system of Ki365 is Git. My plan is that importing a repository as a mirror, a link, or a base repository in Ki365 will work out of the box. Then all the normal Git operations would work as well with easy visual diff merge for merge conflicts. Most of that work may or may not depend on other downstream projects (KiCad, KiCanvas, kicad-cli, etc).

I am currently getting ready to push a preliminary implementation of git project import and it will have the front end dynamically update and show the content to the user. Right now it is just fancy React placeholders.

I would say timeline and direction depend on community response/features, how much time I can spend on the project and how much support the project gets. I have already changed the overall direction of the project a couple times based on some people’s feedback here and other forums.

1 Like

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.