How to contribute to Libraries?


I plan to use LibrePCB to create my next board.
I need some extra components from existing libraries.
I know I can do my own local library. But how can I contribute to existing libraries ?

For example, I need some Atmel devices and a Microchip/Atmel library already exists.
How can I add my own components to this library and allow everyone to use my work and save time ?


Just find this in the contributing page of GitHub LibrePCB project :


Part Libraries : Fork an existing part library from and add or improve parts. If you want to create a new library, open a discussion here.


Thanks for bringing this up. We definitely need a library contribution guide.

I’ll start with a quick overview. This workflow currently assumes that you are familiar with git, GitHub and the command line.

  1. Fork the appropriate repository on GitHub:
  2. Make sure that the library is not already downloaded as a remote library. If it is, open the library editor to see the storage path and delete that directory in LibrePCB-Workspace/v0.1/libraries/remote/.
  3. Ensure that the directory LibrePCB-Workspace/v0.1/libraries/local/ exists
  4. Clone the forked library to your local library directory using git:
    $ git clone \
  5. In the local library directory, create a new branch:
    $ git checkout -b your-new-feature
  6. Edit the library using the library editor. Add new library elements according to the library conventions. If you edit any existing library elements, make sure to increment the version number.
  7. Commit the changes, push the branch to your GitHub fork
  8. Create a pull request on GitHub against the original repository and wait for a review.

I hope this helps! Let us know if you have any questions, we’ll try to help you along.


Thanks for this.
I will try that and let you know.

For ATmegaxx8PB devices (48/88/168/328), there’s 32-TQFP (-A) and 32-VQFN (-M) packages.

And in each one, there is 2 different operational ranges :

  • Industrial (-40°C to +85°C) which is -AU or -MU extension (ATmega48PB-AU for example)
  • Industrial (-40°C to +105°C) which is -AN or -MN extension (ATmega48PB-AN for example)

Should I do U and N variant for each one or just one per package (-AU for TQFP (or -A)) is ok ?

And after, there’s tape & reel with “R” !
(but here it is just packaging of the devices)


I don’t think we need variants for the operational ranges. Just use an x instead of the operational range code and leave away the packaging info:

  • Atmega48PB-Ax
  • Atmega48PB-Mx

Similarly, if there are packages with different surface finish variants without any functional difference, just use an x for that (or leave away the letter if it’s optional).

Do you agree, @ubruhin?

I’m game. I started a document in LibrePCB/dev/Library_manual and put in the steps that I use to fork and resync the github repos. I created a pull request so hopefully anyone can add to it as they see fit.

John Eaton

1 Like