github-linguist / linguist

Language Savant. If your repository's language is being reported incorrectly, send us a pull request!
MIT License
12.36k stars 4.29k forks source link

Some suggestions of engineering formats/languages #6014

Open Mehver opened 2 years ago

Mehver commented 2 years ago

I'm a noob programmer, but I also a noob hardware developer šŸ¤Æ

Although there is also a lot of open source hardware in GitHub, many hardware engineers have no idea with linguist. This is probably why I keep getting unsupported hardware formats when editing .gitattributes. So now I list up some common engineering formats, hoping to get support.

It is worth mentioning that some common formats in hardware design already exist in languages.yml. Such as KiCAD Altium Designer Eagle Gerber Image Wavefront Object STL... Yes, none of them are programming languages, they are considered as data by default, and the identification of these file types must be manually increased in .gitattributes. But it still makes sense to expose these formats as languages, because it really helps hardware designers quickly find the items they need.

It's really important to differentiate these formats from design softwares with language statistics. Because like when a Python developers is looking for sorting algorithms, they wouldn't expect to find a repo written in Java. That's why I wrote an all-in-one .gitattributes and use it in all my hardware projects.

Those formats below are what I wish to add support for. They are similar to the existing ones, also files of circuit design software or files of 3D/2D design softwares:

1 LCEDA (a.k.a EasyEDA) -->怐Wikipedia怑<--

A free circuit design software. Similar to KiCAD, Eagle and Altium Designer.

Extension Search Results
.json (PCB file) keyword: editorVersion canvas shape https://github.com/search?q=extension%3Ajson+editorVersion+canvas+shape&type=Code 1301
.json (SCH file) keyword: editorVersion canvas schematics https://github.com/search?q=extension%3Ajson+editorVersion+canvas+schematics&type=Code 279
.eprj original format, the only https://github.com/search?q=extension%3Aeprj&type=Code 135
.epcb original format, the only https://github.com/search?q=extension%3Aepcb&type=Code 3
.esch original format, the only https://github.com/search?q=extension%3Aesch&type=Code 7
.elib not unique / /

2 Autodesk Fushion 360 -->怐Wikipedia怑<--

An industrial modeling design software that is very popular among hardware enthusiasts. It has a compositional relationship with Eagle.

Extension Search Results
.f3d original format, the only https://github.com/search?q=extension%3Af3d&type=Code 16656

3 Computer Aided Design (CAD) -->怐Wikipedia怑<--

Common format standard. The CAD file in the narrow sense refers to .dwg and .dxf format, which is the most suitable format for CAD packages. The most mainstream CAD package is AutoCAD.

Extension Search Results
.dwg https://github.com/search?q=extension%3Adwg&type=Code 73803
.dxf https://github.com/search?q=extension%3Adxf&type=Code 143039

4 Initial Graphics Exchange Specification (IGES) -->怐Wikipedia怑<--

Common format standard. Extensive CAD.

Extension Search Results
.iges https://github.com/search?q=extension%3Aiges&type=Code 2769
.igs https://github.com/search?q=extension%3Aigs&type=Code 8276

5 STEP -->怐Wikipedia怑<--

Common format standard. Also extensive CAD, ISO_10303-21.

Extension Search Results
.stp https://github.com/search?q=extension%3Astp&type=Code 203425
.step https://github.com/search?q=extension%3Astep&type=Code 283678
.stpnc https://github.com/search?q=extension%3Astpnc&type=Code 3
.p21 https://github.com/search?q=extension%3Ap21&type=Code 324
.210 https://github.com/search?q=extension%3A210&type=Code 4255
Mehver commented 2 years ago

I wish I could open PR to add these languages. However, I only understand the languages.yml file, but have no idea with Ruby.

charlieforward9 commented 8 months ago

I agree with this. It would be nice to have .stl and .f3d show up in the language stats.

DecimalTurn commented 4 months ago

@Mehver If you're having issues with setting up Ruby on your machine, you could always use the Codespace feature (see the button at the top of the README). Using the codespace, you'll be able to have a vitrual environement with all you need to run the scripts required to add a new language to Linguist.