Introduction to Parashell
Relevant source files
The following files were used as context for generating this wiki page:
Parashell is a specialized fork of FreeCAD, maintained by an organization focused on building AI-backed Computer-Aided Design (CAD) solutions. It inherits the robust foundation of the FreeCAD project while integrating modern enhancements to facilitate professional CNC workflows and automated design processes.
Sources: SECURITY.md:3, CONTRIBUTING.md:1
Project Identity and Governance
Parashell operates as a downstream evolution of FreeCAD, adopting its core contribution processes and community standards. The project is managed by Parashell Cloud and maintains a strong commitment to open-source principles, specifically adhering to the LGPL2+ licensing model.
Sources: CONTRIBUTING.md:1, 41, SECURITY.md:3
Contribution Model
The project follows the FreeCAD Contribution Process (FCP), inspired by the Collective Code Construction Contract. This model prioritizes transparency, code quality, and a diverse contributor pool.
| Role | Responsibility |
|---|---|
| User | Community members who use the software and log issues. |
| Contributor | Individuals who submit Pull Requests (PR) to solve identified problems. |
| Maintainer | Individuals with commit access who merge valid contributions and enforce the process. |
| Administrator | Designated "Owners" who manage maintainer teams and infrastructure. |
Sources: CONTRIBUTING.md:27-40
Community Standards
Parashell adopts a comprehensive Code of Conduct emphasizing respect, consideration, and forgiveness. It specifically addresses the global diversity of the community, acknowledging that many members use English as a second language.
Sources: CODE_OF_CONDUCT.md:7-30
Architecture and Workbench Roadmap
As a multi-workbench CAD platform, Parashell organizes functionality into discrete modules. The CAM Workbench roadmap for 2025 highlights the project's shift toward industry-ready solutions.
CAM Workbench Vision
The goal is to provide a robust solution that integrates modeling workflows with professional CNC requirements.
This diagram illustrates the core functional areas targeted for development within the CAM module.
Sources: src/Mod/CAM/Roadmap/README.md:21-42
Technical Priorities
Maintainers prioritize contributions based on their impact on system stability and alignment with established initiatives.
| Priority | Category | Rationale |
|---|---|---|
| 1 | Regression Bug Fixes | Fixes steps backward that impact users and developers. |
| 2 | Initiative Changes | Large-scale projects requiring collective attention (e.g., Better Tool Library). |
| 3 | General Bug Fixes | Resolving issues in existing functionality. |
| 4 | New Features | One-off additions subject to high scrutiny for consistency. |
Sources: src/Mod/CAM/Roadmap/README.md:83-99
Development Guidelines
The project enforces strict coding conventions to ensure maintainability across its Python and C++ codebase. While different workbenches (like Draft and FEM) may have slight variations, they share core fundamentals.
Coding Fundamentals
- Indentation: 4 spaces per level (no tabs).
- Line Endings: Unix (LF) exclusively.
- File Headers: Mandatory license headers at the top of every file.
- File Size: Modules should generally be kept under 1000 lines.
Sources: src/Mod/Draft/coding_conventions.md:14-25, src/Mod/Fem/coding_conventions.md:27-31
Language Specifics
For Python development, Parashell adheres to PEP 8 and PEP 257 standards.
The diagram shows the required grouping and ordering of Python imports to minimize merge conflicts.
Sources: src/Mod/Draft/coding_conventions.md:40-49, src/Mod/Fem/coding_conventions.md:50-77
Naming Conventions
| Type | Convention | Example |
|---|---|---|
| Modules | snake_case | cam_tools.py |
| Variables | lower_case | tool_offset |
| Classes | CamelCase | ToolController |
| Constants | UPPER_CASE | MAX_FEED_RATE |
| Functions | lower_case | get_bounds() |
Sources: src/Mod/Draft/coding_conventions.md:54-64, src/Mod/Fem/coding_conventions.md:80-84
Help and Documentation System
The Help module provides various methods for users to access technical documentation, supporting both online and offline modes.
Documentation Sources
Documentation can be fetched from multiple sources depending on user preference and connectivity:
- FreeCAD Wiki (Online): Fetches pages directly from
wiki.freecad.org. - Markdown Version (Online): Fetches an automatic Markdown conversion hosted on GitHub. This supports custom CSS styling for improved readability.
- Offline Documentation: Users can install an "offline-documentation" addon via the Addon Manager.
Sources: src/Mod/Help/Resources/translations/Help_en.ts:40-63, src/Mod/Help/Resources/translations/Help_en.ts:79-82
Rendering Logic
The system attempts to render help pages within the application interface if dependencies are met.
This sequence illustrates how the system determines the rendering method for documentation.
Sources: src/Mod/Help/Resources/translations/Help_en.ts:94-118
Conclusion
Parashell serves as a bridge between the extensible FreeCAD architecture and the requirements of modern, AI-assisted engineering. By maintaining strict adherence to established contribution processes and focusing on critical workbench improvements like the CAM roadmap, the project provides a structured environment for professional CAD/CAM development.