Naming devices in different packages

(following up to Long term feasibility of purely file-based libraries here to avoid sidetracking that thread)

My concept of MPNs (in relation to the LibrePCB Device) is like this:

  • A device is a collection of parts which share the same package and general function but differ in some intrinsic characteristic
    • Example: 0402 resistor
  • A part provides a specific functional specification. If I put this part on my design, to properly manage the supply chain problem, I expect to be able to have multiple sources that meet this specification.
    • Example: 0402 resistor, 1.27 kΩ, 1%, 1/16W
  • A part may have multiple MPNs from different manufacturers AND/OR the same manufacturer with different packaging types that meet the functional specification.
    • Example: CRCW04021K27FKED - Vishay

I think the last point is where my confusion comes from. In LibrePCB, it seems like you break down Device by manufacturer’s part series instead of breaking down Part by functional specification. MPN alternates are done per schematic instead of per device. As an engineer trying to create a manufacturable design, I care more about the functional specification. I explicitly don’t want to specify a specific manufacturer’s part series on my design, to the extent that a component is interchangeable between manufacturers (such as the case with commodity passive components, jellybean logic ICs, etc.). The current implementation is probably safer for circuit function (each design only calls out exactly which MPNs it can take) but pretty tedious if you want to support multiple resistor manufacturers.

If you had a specific spec you wanted to meet for an application (such as temperature coefficient), you could create a new part entry that captures this stringent spec. Some MPNs will be duplicated, but such is the world we live in.

In the OP’s case with a logic IC, I would propose (especially for a personal library) to use a primary/preferred manufacturer’s MPN with footprint to key the device, and add other manufacturer’s equivalents to the part list. In a world where LibrePCB supports MPNs like I imagine, you might add them as alternate MPNs of a single part if you really don’t care which one you order for your design, and continue to use the existing Part list for logic family variants as you are doing already. For example, if you would rather order TI by default, use all of their MPNs to name your device. This works well at my day job but I recognize it may not be correct for everyone.

Although I agree that 99% of parts are moving to proprietary/unique designs, I believe the model I am imagining can handle both of these cases equally.