Skip to content

FidoCadJ/FidoCadJ

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

FidoCadJ

Version License Java Platform

An easy-to-use electronic schematic capture and PCB design tool

๐ŸŒ Website โ€ข ๐Ÿ“– Documentation โ€ข ๐Ÿ› Report Bug โ€ข ๐Ÿ’ก Request Feature


๐Ÿ“‘ Table of Contents


๐ŸŽฏ About FidoCadJ

What is FidoCadJ?

FidoCadJ is a modern, multiplatform electronic design automation (EDA) software with a vast library of electrical symbols and footprints (both through-hole and SMD). It serves as an easy-to-use editor for creating electrical schematics and printed circuit board layouts.

Origins: FidoCadJ is the successor to the original FidoCAD, a popular vector graphic editor that gained widespread adoption in the Italian Usenet community during the late 1990s. The original software used a compact text-based file format, perfect for sharing in newsgroups and forums.

Modern Evolution: FidoCadJ brings the simplicity of FidoCAD into the modern era with:

  • Full UTF-8 text support
  • Advanced features and professional output
  • Internationalization
  • Sleek, anti-aliased user interface
  • Multiple export formats (PDF, EPS, PGF for LaTeX, SVG, PNG, JPG)

Note: FidoCadJ is a graphical drawing tool without netlist functionality. This provides maximum flexibility as a vector drawing application but does not include circuit simulation capabilities.

โœจ Key Features

  • ๐Ÿ“ Extensive library of electrical components and footprints
  • ๐ŸŽจ Multiple export formats (PDF, EPS, SVG, PNG, JPG, PGF)
  • ๐ŸŒ Multilingual interface (English, French, Italian, Spanish, German, Chinese, Dutch, Japanese, Greek, Czech)
  • ๐Ÿ“ฑ Cross-platform compatibility
  • ๐Ÿ”ง Simple mechanical drawing capabilities
  • ๐ŸŽฏ Easy to learn and use

๐Ÿ“š Community Libraries

FidoCadJ comes with a built-in library of components, but the community has created many additional libraries to extend its capabilities! You can download specialized libraries for various purposes:

๐Ÿ”— Browse and Download Community Libraries

These community-contributed libraries include:

  • Additional electronic components
  • Specialized symbols and footprints
  • Industry-specific elements
  • Custom mechanical parts
  • And much more!

Simply download the library files and import them into FidoCadJ to expand your component collection.

๐Ÿ’ป Supported Platforms

Platform Requirements
Windows Windows 7, 8, 10, 11 with Java 9+
Linux All major distributions with Java 9+
macOS macOS 10.8+ with Java 9+
Android Android 4.0+

๐Ÿš€ Getting Started

Installation

Windows

Download FidoCadJ_Windows.msi from the releases page and run the installer. Launch FidoCadJ from the Start menu.

macOS

  1. Download FidoCadJ_MacOSX.dmg from the releases page
  2. Open the DMG file and drag FidoCadJ to your Applications folder

๐Ÿ“ Note: The application bundle is self-sufficient and includes everything needed to run. You don't need to install Java separately.

โš ๏ธ macOS Gatekeeper Issue:

Recent macOS versions may show a very misleading error when trying to run FidoCadJ:

"FidoCadJ.app is damaged and can't be opened. You should move it to the Trash."

This is NOT true! The application is not damaged. This is a security feature that prevents running apps from unidentified developers. The error message is misleading and doesn't explain the real issue.

What's happening:

  • macOS activates the "quarantine" extended attribute on downloaded files
  • The system refuses to run software with this attribute
  • On some Macs (like M1/M2), you may be asked to install Rosetta first

Example of the error (macOS Ventura 13.3):

macOS Gatekeeper Error

Solution - Follow these steps:

  1. Remove the quarantine attribute: Open Terminal and type:

    xattr -c /Applications/FidoCadJ.app

    (If you haven't moved it to Applications yet, use the actual path to the file)

    โš ๏ธ You need admin access and may need to authorize Terminal.app to modify files

  2. Right-click on FidoCadJ.app and select "Open" (don't double-click)

  3. Confirm when the system asks if you really want to run the software downloaded from an untrusted source

Need help? See Issue #198 for discussion and alternative solutions.

๐Ÿ’ก If you know a way to solve this without using Terminal, please share it in the GitHub issue!

Linux

Method 1: Using the JAR file

java -jar fidocadj.jar

Method 2: Build from source

make
sudo make install

Android

Download the APK file from the official GitHub releases page and install it on your device.

โš ๏ธ Security Note: Only download FidoCadJ from the official GitHub repository to ensure authenticity.

Quick Start

  1. Launch FidoCadJ using your preferred method
  2. Create a new drawing from the File menu
  3. Select components from the extensive library
  4. Design your schematic using the intuitive interface
  5. Export to your desired format (PDF, PNG, SVG, etc.)

๐Ÿ’ก Pro Tip: Expand your component collection by downloading community libraries!

๐Ÿ“– Need help? Check out the user manual (available in multiple languages).


๐Ÿ‘จโ€๐Ÿ’ป For Developers

Repository Structure

FidoCadJ/
โ”œโ”€โ”€ bin/                    # Compiled classes and resources
โ”œโ”€โ”€ busy being born/        # Screenshots and promotional materials
โ”œโ”€โ”€ dev_tools/              # Build scripts and development tools
โ”œโ”€โ”€ doc/                    # Javadoc documentation
โ”œโ”€โ”€ icons/                  # Application icons
โ”œโ”€โ”€ jar/                    # JAR and manifest files
โ”œโ”€โ”€ manual/                 # LaTeX manual sources
โ”œโ”€โ”€ OSes/                   # Platform-specific files (including Android)
โ”œโ”€โ”€ src/                    # Java source files
โ”œโ”€โ”€ test/                   # Automated test suite
โ”œโ”€โ”€ gpl-3.0.txt            # License file
โ”œโ”€โ”€ makefile               # Build automation
โ””โ”€โ”€ README.md              # This file

Important Classes

Path Description
src/fidocadj/FidoMain.java Application entry point
src/fidocadj/FidoFrame.java Main editor window
src/fidocadj/primitives/*.java Graphic primitives
src/fidocadj/dialogs/*.java Swing dialogs
src/fidocadj/circuit/CircuitPanel.java Editor panel
src/fidocadj/circuit/* Low-level editing (MVC)

Building from Source

Prerequisites

  • Java Development Kit (JDK) 9 or higher
  • Make (for Unix-like systems)
  • Git

Clone Repository

git clone https://github.com/FidoCadJ/FidoCadJ.git
cd FidoCadJ

Build Commands

Using Make (macOS/Linux):

Command Description
make Compile FidoCadJ
make run Run FidoCadJ
make rebuild Clean and rebuild
make createjar Create JAR file in jar/ directory
make createdoc Generate Javadoc
make clean Remove compiled classes
make cleanall Full cleanup

Using Scripts (Windows):

cd dev_tools
winbuild.bat compile    # Compile sources
winbuild.bat run        # Run application
winbuild.bat rebuild    # Clean and rebuild

Manual Compilation (Windows):

javac -g -sourcepath src -classpath bin .\src\fidocadj\FidoMain.java -d bin
java -classpath .\bin;.\jar;.\jar\ FidoMain

Coding Conventions

General Rules

  • โœ… Java Version: Compatible with Java 14+
  • โœ… Indentation: 4 spaces (no tabs)
  • โœ… Line Length: Maximum 80 characters
  • โœ… Newlines: Unix-style (LF) only
  • โœ… Naming Conventions:
    • Classes: PascalCase
    • Methods and variables: camelCase
    • No underscores in names (deprecated)
  • โœ… Documentation: Javadoc required for public classes and methods
  • โœ… Quality: Commits must not break the build

Code Style Examples

Methods:

void exampleMethod(int param1, int param2)
{
    // Method body with 4-space indentation
    System.out.println("Example");
}

Control Structures:

for (int i = 0; i < 10; ++i) {
    // Loop body
    System.out.println("Iteration: " + i);
}

if (condition) {
    // If body
} else {
    // Else body
}

Classes:

class ExampleClass
{
    // Class members
}

Code Quality Tools

We maintain high code quality using:

  • Checkstyle: Enforces coding standards (dev_tools/rules.xml)
  • PMD: Static code analysis (dev_tools/pmd.sh)
  • FindBugs: Bug detection on compiled JAR
  • Copy/Paste Detection: Identifies code duplication

๐ŸŽฏ Before submitting a pull request, run Checkstyle with dev_tools/rules.xml to ensure compliance!

Testing

FidoCadJ includes comprehensive automated tests in the test/ directory.

Run all tests:

./test/all_tests.sh

Individual test suites:

Test Purpose
test/export/test_export.sh Validates export functionality for all formats
test/messages/test_messages.sh Checks translation file consistency
test/size/test_size.sh Verifies element size calculations

๐Ÿ“ Note: Before running tests, ensure fidocadj.jar is up-to-date using make createjar.


๐Ÿค Contributing

We welcome contributions from the community! Whether you're fixing bugs, adding features, translating, or improving documentation, your help is appreciated.

Translation

FidoCadJ makes translation easyโ€”no programming skills required!

To translate the interface:

  1. Locate language files in bin/MessagesBundle_xx.properties (where xx is the ISO 639-1 language code)
  2. Copy the English reference file (MessagesBundle_en.properties)
  3. Translate the values (keep keys unchanged)
  4. Save with appropriate language code
  5. Submit a pull request

Example:

# English (MessagesBundle_en.properties)
File = File
New = New
Open = Open file

# French (MessagesBundle_fr.properties)
File = Fichier
New = Nouveau dessin
Open = Ouvre un fichier

Current translations available: English, French, Italian, Spanish, German, Chinese, Dutch, Japanese, Greek, Czech

Development

Getting started:

  1. ๐Ÿด Fork the repository
  2. ๐Ÿ“– Read the coding conventions (Section above)
  3. ๐Ÿ’ฌ Open an issue to discuss your plans
  4. ๐Ÿ”จ Make your changes following our style guidelines
  5. โœ… Run tests and quality checks
  6. ๐Ÿ“ฌ Submit a pull request

Useful commands for developers:

make createdoc          # Generate Javadoc documentation
dev_tools/checkstyle.sh # Run Checkstyle
dev_tools/pmd.sh        # Run PMD analysis
dev_tools/profile       # Run profiler

Committer Checklist

For all commits:

  • Code builds successfully (PC and Android)
  • Follows coding style (section 4.1)
  • Comments added/updated where needed
  • Checkstyle passes with dev_tools/rules.xml

For PC application:

  • JAR generated and automated tests pass
  • PMD analysis completed

Ways to Contribute

Area Description
๐ŸŒ Translation Translate UI or documentation to your language
๐Ÿ“ Documentation Improve or update manuals and guides
๐ŸŽฅ Tutorials Create video tutorials for YouTube
๐Ÿ› Bug Reports Report issues via GitHub Issues
๐Ÿ’ป Code Implement new features or fix bugs
๐Ÿ“ฆ Packaging Create distribution packages (deb, RPM, etc.)
๐Ÿงช Testing Expand unit test coverage

Feature requests:

  • Export to Gerber format
  • Enhanced unit testing
  • Linux packaging improvements
  • And more!

๐Ÿ’ฌ Support

Getting Help

๐Ÿ’ก Tip: GitHub discussions are preferred for better collaboration among developers.

Reporting Bugs

Found a bug? We appreciate your help in making FidoCadJ better!

  1. Check existing issues to avoid duplicates
  2. Create a new issue with:
    • Clear description of the problem
    • Steps to reproduce
    • Expected vs. actual behavior
    • System information (OS, Java version)
    • Screenshots if applicable

๐Ÿ™ Acknowledgments

Contributors

Core Development:

  • Davide Bucci
  • Manuel Finessi
  • josmil1
  • phylum2
  • Kohta Ozaki
  • Dante Loi
  • miklos80

Beta Testing:

  • Kagliostro, Bruno Valente, simo85, Stefano Martini, F. Bertolazzi, Emanuele Baggetta, Celsius, Andrea D'Amore, Olaf Marzocchi, Werner Randelshofer, Zeno Martini, Electrodomus, IsidoroKZ, Gustavo, and many others!

Documentation:

  • Carlo Stemberger
  • Dante Loi

Translations:

  • ๐Ÿ‡ฎ๐Ÿ‡น Italian: Davide Bucci, Pietro Baima
  • ๐Ÿ‡ฌ๐Ÿ‡ง English: Davide Bucci, Pasu, DirtyDeeds
  • ๐Ÿ‡ซ๐Ÿ‡ท French: Davide Bucci, Geo Cherchetout
  • ๐Ÿ‡ฉ๐Ÿ‡ช German: Olaf Marzocchi
  • ๐Ÿ‡ช๐Ÿ‡ธ Spanish: androu1, sbcne, simo85
  • ๐Ÿ‡จ๐Ÿ‡ณ Chinese: Miles Qin "qhg007"
  • ๐Ÿ‡ณ๐Ÿ‡ฑ Dutch: chokewood
  • ๐Ÿ‡ฏ๐Ÿ‡ต Japanese: Kohta Ozaki
  • ๐Ÿ‡จ๐Ÿ‡ฟ Czech: Chemik582

Libraries:

  • Lorenzo Lutti, Fabrizio Mileto, DirtyDeeds, Electrodomus, IHRaM group, EY group (coordinated by simo85)

Icons:

External Resources

Code snippets and algorithms adapted from:

If you hold copyright to any reused code and have concerns, please open an issue and we will address it promptly.


๐Ÿ“„ License

FidoCadJ is free software licensed under GPL v3:

FidoCadJ is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

FidoCadJ is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with FidoCadJ.
If not, see http://www.gnu.org/licenses/.

Additional Licenses:

  • glyphlist.txt (for PDF export): Apache License 2.0 - View License

โš ๏ธ Disclaimer

FidoCadJ is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

If a Greek letter appears after the version number (e.g., 0.24.8ฮฑ), you are using a preliminary/unstable version.


Copyright ยฉ 2007-2025 FidoCadJ Development Team

โญ If you find FidoCadJ useful, please consider starring this repository!

๐ŸŒ Website โ€ข ๐Ÿ“ฆ Releases โ€ข ๐Ÿ› Issues

About

FidoCadJ is a free user-friendly vector graphic editor for macOS, Linux, Windows and Android with a library of electronic symbols.

Topics

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Packages

No packages published

Contributors 24