Currently the user has to generate Gerber files manually and then needs to upload them to a PCB manufacturer service website. This is fine for many users, especially for those who are familiar with the Gerber format and the ordering process in general. But I think there are many hobbyists creating their first PCBs, who do not really know what steps are needed to order a PCB. I remember myself struggling with the whole order process when I created my first PCBs with Eagle a long time before studying electronics - it helped me a lot that PCB manufacturers natively supported Eagle project files
Thanks to the cooperation with Aisler, there is already a simpler way to order PCBs (export *.lppz and upload it to Aisler). However, most people probably don’t know Aisler yet. And although it’s simpler than exporting Gerber, it still involves some kind of file export and manually needs to be uploaded to a website. Therefore I think it would be quite helpful to somehow integrate the ordering process directly into LibrePCB. This would have several advantages:
- Especially for beginners, it’s way easier to get the PCB ordered. No knowledge is needed about the Gerber format or about what PCB manufacturers exist and which file formats they accept.
- Not only beginners, even engineers with knowledge about the order process might sometimes choose a simple order method if it reduces effort/time and the project is not very critical regarding reproducibility, price etc. (e.g. prototypes).
- With a cooperation between the used PCB manufacturer and LibrePCB, we might be able to increase our income with every PCB ordered through LibrePCB. This supports the development of LibrePCB, which in turn helps LibrePCB users since LibrePCB gets more and more powerful. Currently only a few people order PCBs at Aisler, so it doesn’t generate significant income for LibrePCB. The ability to order PCBs directly from within LibrePCB might lead to many more users ordering at a manufacturer which supports LibrePCB financially.
Community doesn’t like it
Maybe users could consider such a feature as too commercial for an OpenSource project (e.g. “advertising” for Aisler) My opinion: As explained above, creating more income is good for LibrePCB and its users since it helps to keep the LibrePCB development alive. And users who don’t like this feature, don’t need to use it (of course we will always provide the ability to export Gerber files as usual, which you can send to whatever PCB manufacturer you like).
Breaking changes in manufacturers API
If some day the cooperation between PCB manufacturers and LibrePCB changes (added more cooperations, stopped a cooperation, breaking change in manufacturer API, …), this feature might stop working in all existing LibrePCB releases.
IMHO this would be a nightmare and thus needs to be avoided. This means that the application itself should not contain any hardcoded information about the supported manufacturers and their API to order PCBs.
I’d suggest to implement such a feature in a very simple way:
- In the board editor, add a menu item File -> Order PCBs (or something like that).
- This menu item opens a window which contains some explanation how this feature works etc (e.g. privacy statement, since the project gets forwarded to a manufacturer), and a button like “Upload project & start order process”.
- The button uploads the project as a *.lppz through our own HTTPS API to our server (*).
- The API responds with an URL.
- LibrePCB opens that URL in the system’s default browser. The URL will point to a page to start the ordering process (e.g. might point directly to the PCB manufacturer website, but with the Gerber data already loaded).
(*) Actually the user can specify an arbitrary list of API servers in the workspace settings. The PCB ordering feature should check all available APIs whether they support this feature or not. If multiple APIs support the feature, the user should be able to choose through which API he wants to order the PCB.
This way we are very flexible regarding PCB manufacturer integration. Only the API server needs to be kept up to date with the supported manufacturers. If a manufacturer changes its own API, the LibrePCB application will continue to work since the fix needs to be done server side.
In addition, the feature is independent of what file format the PCB manufacturer expects. Since the whole project gets uploaded as a *.lppz, the server can convert it to any other format needed by the manufacturer (e.g. Aisler supports *.lppz natively so no conversion is needed, but other manufacturers might need Gerber files which could then be generated on our server).
In the end, this seems to be very similar to Fritzing Fab
Any thoughts about such a feature? Does it sound like a good or bad idea? Any improvement suggestion?