Top Related Projects
This is an active mirror of the KiCad development branch, which is hosted at GitLab (updated every time something is pushed). Pull requests on GitHub are not accepted or watched.
A powerful, innovative and intuitive EDA suite for everyone!
Fritzing desktop application
Quick Overview
Horizon EDA is an open-source Electronic Design Automation (EDA) tool for designing printed circuit boards (PCBs). It offers a modern, user-friendly interface with advanced features for schematic capture, PCB layout, and 3D visualization, aiming to streamline the electronic design process for hobbyists and professionals alike.
Pros
- Intuitive and modern user interface
- Integrated 3D viewer for PCB visualization
- Powerful scripting capabilities using Python
- Comprehensive library management system
Cons
- Steeper learning curve compared to some other EDA tools
- Smaller community and ecosystem compared to more established alternatives
- Limited support for certain advanced features found in commercial EDA software
- Occasional stability issues reported by some users
Getting Started
To get started with Horizon EDA:
-
Install Horizon EDA:
# For Ubuntu/Debian sudo add-apt-repository ppa:horizon-eda/ppa sudo apt update sudo apt install horizon-eda
-
Launch Horizon EDA:
horizon-eda
-
Create a new project:
- Click "New Project" in the welcome screen
- Choose a project name and location
- Select a template or start from scratch
-
Begin designing your schematic and PCB layout using the intuitive interface and tools provided by Horizon EDA.
For more detailed instructions and documentation, visit the official Horizon EDA website and GitHub repository.
Competitor Comparisons
This is an active mirror of the KiCad development branch, which is hosted at GitLab (updated every time something is pushed). Pull requests on GitHub are not accepted or watched.
Pros of KiCad
- Larger community and more extensive documentation
- Wider range of features and tools for complex PCB designs
- Better integration with external libraries and plugins
Cons of KiCad
- Steeper learning curve for beginners
- Less modern user interface compared to Horizon
- Slower performance for large, complex designs
Code Comparison
KiCad (C++):
void SCH_EDIT_FRAME::OnOpenPcbnew( wxCommandEvent& event )
{
PROJECT* project = &Prj();
wxFileName fn = Prj().AbsolutePath( m_CurrentSheet->GetScreen()->GetFileName() );
fn.SetExt( KiCadPcbFileExtension );
wxString fullPath = fn.GetFullPath();
Horizon (C++):
void Core::set_property(ObjectType type, const UUID &uu, ObjectProperty::ID property, const PropertyValue &value)
{
auto object = get_object(type, uu);
object->set_property(property, value);
set_needs_save();
Both projects use C++ for their core functionality, but Horizon's codebase appears more modern and streamlined. KiCad's code reflects its longer history and broader feature set, while Horizon's code suggests a more focused and efficient approach to EDA software development.
A powerful, innovative and intuitive EDA suite for everyone!
Pros of LibrePCB
- Cross-platform compatibility (Windows, macOS, Linux)
- User-friendly interface with intuitive design tools
- Extensive library management system
Cons of LibrePCB
- Smaller community and fewer resources compared to Horizon
- Limited advanced features for complex designs
Code Comparison
LibrePCB:
void Board::addDevice(const Uuid& deviceUuid, const Point& position,
const Angle& rotation, bool mirror) {
Q_ASSERT(!mIsAddedToProject);
std::shared_ptr<Device> device = std::make_shared<Device>(*this, Uuid::createRandom());
device->setLibDevice(mProject.getLibrary().getDevice(deviceUuid));
device->setPosition(position);
device->setRotation(rotation);
device->setMirrored(mirror);
mDevices.append(device);
}
Horizon:
void Core::add_part(const UUID &entity_uuid, const Coordi &c)
{
auto part = project.insert_part(entity_uuid, c);
part->smashed = smash_on_add;
if (part->smashed) {
part->smash();
}
set_needs_save();
}
Both projects use C++ and implement similar functionality for adding components to a board, but Horizon's code appears more concise.
Fritzing desktop application
Pros of Fritzing
- More beginner-friendly with an intuitive drag-and-drop interface
- Larger community and parts library, making it easier to find components
- Better documentation and tutorials for new users
Cons of Fritzing
- Less precise and professional-grade compared to Horizon
- Limited advanced features for complex PCB design
- Slower performance, especially with larger projects
Code Comparison
Fritzing (C++):
void ItemBase::mousePressEvent(QGraphicsSceneMouseEvent *event) {
if (m_spaceBarWasPressed) {
event->ignore();
return;
}
m_dragItem = this;
m_dragStartPos = pos();
m_dragStartScenePos = event->scenePos();
}
Horizon (C++):
void CanvasGL::pan_gesture_begin(const GdkEventPan *event)
{
if (pan_dragging)
return;
pan_dragging = true;
pan_pointer_pos_orig = {(float)event->x, (float)event->y};
pan_center_orig = center;
}
Both projects use C++ for their core functionality, but Horizon's codebase appears more modern and optimized for performance. Fritzing's code focuses on user interaction, while Horizon's emphasizes precise control and efficiency in handling complex PCB designs.
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Horizon EDA
Horizon EDA is an Electronic Design Automation package supporting an integrated end-to-end workflow for printed circuit board design including parts management and schematic entry.
See the docs for an overview of horizon's top features.
Wanna chat about the project? Join #horizon-eda on libera.chat
Features for users so far
- Complete design flow from schematic entry to gerber export
- Sane library management
- Unified editor for everything from symbol to board
- Netlist-aware schematic editor
- KiCad's awesome interactive router
- Lag- and glitch-free rendering
- Rule-based DRC
- Hierarchical schematics
- Undo/redo
- Copy/paste for some objects
- Builds and runs on Linux and Windows
Features for developers
- Written in modern C++, legacy-free codebase!
- Uses JSON as on-disk format
- Uses Gtkmm3 for GUI
- OpenGL 3 accelerated rendering
- Everything is referenced by UUIDs
Getting Started
See the the docs.
Included third-party software
Directory in 3rd_party | Project | Version | URL | License |
---|---|---|---|---|
nlohmann | JSON for Modern C++ | 3.10.3 | https://github.com/nlohmann/json/ | MIT |
clipper | Clipper | 6.4.2 | http://www.angusj.com/delphi/clipper.php | Boost |
polypartition | polypartition | 7bdffb428b2b19ad1c43aa44c714dcc104177e84 | https://github.com/ivanfratric/polypartition/ | MIT |
poly2tri | poly2tri | d949f3cd6f85b20728af0bdc454b090226068c73 | https://github.com/jhasse/poly2tri | 3-Clause BSD |
dxflib | dxflib | 3.26.4 | https://qcad.org/en/90-dxflib | GPLv2 |
alphanum | The Alphanum Algorithm | 1.3 | http://www.davekoelle.com/alphanum.html | MIT |
delaunator | Delaunator C++ | 6f2879967bc96a9bcdbacf418e560e9f2e170ace | https://github.com/abellgithub/delaunator-cpp | MIT |
footag | footag | 99116328abe8f53e71831b446d35e93ee7128ef3 | https://github.com/endofexclusive/footag | GPLv3 |
router | KiCad router | 6.0.4 | https://gitlab.com/kicad/code/kicad/-/tree/6.0.4/pcbnew/router | GPLv3 |
sexpr | KiCad s-expression parser | 6.0.4 | https://gitlab.com/kicad/code/kicad/-/tree/6.0.4/libs/sexpr | GPLv3 |
catch2 | Catch2 | 3.0.1 | https://github.com/catchorg/Catch2/releases/tag/v3.0.1 | Boost |
range-v3 | range-v3 | 0.12.0 | https://github.com/ericniebler/range-v3/releases/tag/0.12.0 | Boost |
Top Related Projects
This is an active mirror of the KiCad development branch, which is hosted at GitLab (updated every time something is pushed). Pull requests on GitHub are not accepted or watched.
A powerful, innovative and intuitive EDA suite for everyone!
Fritzing desktop application
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot