If you're drawing your footprints for the common packages to a manufacturer's drawings, you're wasting your time. (Unless you're in high-volume manufacturing.) You should be using the JEDEC package reference documents, which most manufacturers are compliant with. (But not all! Never blindly trust without verification.) As an example, you could copy the manufacturer's recommendations (or use IPC/PCB Library Expert when land patterns are not provided) to draw up the following "SO-8" packages:
- TI D (R-PDSO-G8)
- NXP SOT96-1
- ADI R-8
- LTC S8
- Intersil M8.15
- Fairchild M08A
- Maxim S8-fifteendifferentmoreorlessidenticalsuffixes (have I mentioned lately that I hate Maxim?)
However, all of the above explicitly state compliance with JEDEC standard MS-012-AA (except LTC, who are compliant if you check the drawings yourself). So you could instead draw
one MS-012-AA SO-8 footprint, take the time to verify it thoroughly, and be
done. Which do you think has a greater chance of happening: you making half a dozen almost-identical footprints flawlessly, or a major manufacturer delivering parts so far out of spec that they won't solder to a standard footprint?
And, honestly, if your process is so sensitive that the differences between the manufacturers' different footprints is making a noticeable difference in your yield, you probably have something wrong anyway. Most of those drawings above have
identical basic dimensions and vary only in their tolerancing -- not to mention that there's a decent chance the parts are all coming off the same packaging subcontractor's production line -- so if you can actually tell the difference, you really should figure out what's happening and fix it.
(This cost-benefit analysis does, of course, break down for very high-volume manufacturing. But if you're doing that, you should have the resources to test
everything and be discussing things in detail with your assembly people.)
Once you've settled on a single standardized footprint, you still have to deal with making sure it gets correctly assigned to the right parts. I use Altium database libraries, and found that I could set up the database to do most of the work for me. I set up a single packages table with manufacturer package code as a primary key, and fill in all relevant package-specific information in that table. That includes the manufacturer name, common name, dimensions, applicable JEDEC standard, and the reference to the footprint location in my PCB libraries. I then reference this table by a foreign key in the actual parts tables, so all I have to do is fill in the manufacturer code there and, once I've got that package code entered correctly
once, the database automatically returns the package information with the part data when Altium queries the database. The information is stored in only one place, making it easy to get right and easy to update later if it's not (or no longer) right. This system took a while to set up but it's invaluable when dealing with things like the thicket of single-gate logic packages.