注意此页面尚未翻译,因此使用英文版本。有兴趣帮忙吗? 贡献
This document describes several high-level objectives for the FreeCAD project. Rather than being a laundry list of development tasks, it focuses on a small set of strategic initiatives that, if achieved, will move FreeCAD closer to an ideal future state.
This roadmap outlines broad strategic objectives. Code contributions from developers will always be evaluated on their merits but are more likely to receive timely attention and be successfully merged if they are consistent with the stated objectives of this roadmap.
Roadmap rationale
People may, and probably will argue about which future state FreeCAD should pursue. For the purposes of this document we assume the following:
- We want FreeCAD to have a healthy development community where new features are regularly added, bugs are quickly resolved, and performance is maintained.
- We want a large and diverse community of people using FreeCAD to do real work, including commercial, academic, and hobby pursuits.
- We want the code-base to be maintainable, understandable, and testable.
- We want the user interface to be beautiful, intuitive, and efficient.
- We want high-quality and relevant documentation.
- We want the software to be well-designed to support a variety of use-cases including scripted operation.
- We want a stable and well-designed API to allow FreeCAD to be included in other workflows and tools.
Why build a roadmap?
Technical discussions often become contentious because the decisions made have real consequences. Well-meaning people may disagree because they have differing priorities or goals.
A well-designed roadmap is beneficial because it first focuses on the priorities and then encourages technical decision-making in context.
A good roadmap will be useful to many different kinds of people:
- Developers will be able to make better decisions about which features should be addressed first and which bugs are worth fixing.
- Maintainers can prioritize PR code-review and merge activity.
- New contributors can get a sense of where and how their efforts would be most useful.
- Non-developer Contributors can prepare better documentation, support users more effectively, and advocate for appropriate changes.
- The FPA can allocate resources to encourage key development efforts, plan events, and raise funds. They can encourage sponsors appropriately and push back on sponsors with goals that are not consistent with project goals.
- Content Creators can build curriculum, prepare tutorials, and aid with educating users about new features.
- Ondsel and other commercial partners can plan their product offerings effectively.
- GSoC and other mentors will be able to define projects that are consistent with the general project direction.
- Other Open-Source projects can identify opportunities for partnership and co-development.
Why Now?
FreeCAD releases have never followed a predictable routine. Instead, the project’s unofficial motto, “It’s done when it’s done” has dictated when official releases are prepared. This model has served the project very well for many years but not without controversy and consequences.
Within the last couple of years many things in the FreeCAD ecosystem have changed.
The user community has grown dramatically. It has spread far beyond the forum and it includes far more non-developer users.
The FPA was formed to protect the FreeCAD project and encourage its growth. The FPA has started receiving donations. Deploying those funds well is becoming a challenge itself.
Ondsel was formed as an open-core public benefit corporation building around the FreeCAD project. As a commercial enterprise, they have a strong need for predictabiilty in the development process and project goals.
Interest by commercial users to deploy FreeCAD in production environments is increasing.
FreeCAD is reaching a state of feature-completeness that suggests a 1.0 release. After that point, backwards compatibility and document stability will become increasingly important.
Universities, trade-schools, and online educators have shown interest in teaching FreeCAD and offering some form of certification.
Who gets to write/change it?
The roadmap is, in a sense, a living document. It should be frequently reviewed and revised. The FPA is the steward of the document itself and takes the lead on drafting and revising its content, but it should reflect the will of the whole FreeCAD community. The FPA actively seeks input from the community members and other stakeholders, partners and industry experts.
The “Next” Release
These objectives described here are very broad. Some of them are very ambitious and will take a long time to achieve. Others will never be fully achieved or ‘done’. For that reason, it’s helpful to pick a specific set of goals to focus on for the next release. This page broadly describes the major goals for the next release.
Releasing an official 1.0 release is a major milestone as well as a psychologically important event for the project. It is a signal to the world that FreeCAD is ready for production use, and that it is a mature, stable, and reliable tool for the job.
The criteria for when FreeCAD would be ready for 1.0 status has been debated for a long time. In general, the consensus has been that the software should be both feature complete and stable. Feature completeness means that it has the major features a user would expect from a mature CAD application, not that it has ALL the features we desire or can imagine.
Stability means that the software does not crash routinely and that user models are not corrupted by normal use. It does not mean that the software is bug free, or that it is perfect. It does mean that the software is reliable enough to be used in production, and that it is not likely to cause data loss or other major problems.
At this time, we are setting four major goals to be completed for version 1.0. When 1.0 is released, it will likely contain many more features and improvements than these four but we will not release 1.0 until these four are achieved.
- Mitigating the topological naming problem
- An integrated assembly workbench
- A unified Material system
- Improved initial user experience
Topological Naming Problem
The toponaming problem has been widely discussed and work is proceeding to resolve it.
Reference:
Assembly Workbench
Building multi-part assemblies is something users expect a modern CAD system to do. FreeCAD has multiple add-on options but lacks an integrated Assembly workbench. Version 1.0 will address this deficiency. The integrated workbench delivered in 1.0 will be minimally viable. It will provide the core functionality users need but will likely be less capable than the addon options currently available. Goals for this release are modest and include
- An intuitive and user-friendly user interface
- An integrated solver to resolve assembly constraints
- A standard API for assemblies that external workbench authors can use to be compatible with both that workbench and each other.
Reference:
Material System
The existing material capability is limited and does not meet the needs of many users. Version 1.0 will start the process of improving the material system. A new material system will address needs in many different workbenches include FEM, Arch, Path, and Render. Like the assembly workbench, goals for 1.0 are modest. We will provide minimum viable functionality with a solid foundation for future improvment.
Reference:
Initial User Experience
FreeCAD is often criticized as being hard to learn. This is understandable because it is a complex application with many features. However, we can do better, especially for first-time users who struggle to get started.
The goals for 1.0 are
- A First Run Wizard
- Improved Start Page
- UI / UX improvements to improve discoverability and usability.
Reference:
- Github Project for the Customization and Preference Cleanup
- Github Project for the Toolbar stability and modernization
- Github Project for the Workbench Selector Cleanup
Objective: Model stability
Robust, stable models are a necessary precursor to widespread adoption of FreeCAD. Some types of breakage are the unavoidable result of poor design practices by the user but FreeCAD must commit itself to reducing or eliminating as many causes of breakage as possible. Focus areas include:
- Toponaming Resolution and Optimization
- Reduction of sketcher solver errors
- UI/UX features that promote better modeling practices and avoid brittleness:
- Make good practices easier
- Remove / replace tools that allow unstable results
- Improved stability around linked documents
Objective: Assembly
Assembly is a core feature of modern CAD systems. Without an integrated assembly capability, users are forced to use one of several add-on options. With competing alternatives available, collaboration and interoperability is negatively affected. Adoption of an assembly workbench should consider, at a minimum, a base set of features including
- An assembly data format. A data standard for the representation of assembly information in the FreeCAD document. The standard should be well thought-out and usable both by the integrated solution as well as add-on options.
- A license-compatible solver or the option to include a solver at a later date
- A minimum set of features to satisfy the 80+% of requirements of typical users
Objective: Flatten the learning curve
CAD is hard. These are complicated and powerful tools and the user should be expected to invest appropriate time to learn to use them well. However, UI/UX inconsistency makes the learning process more difficult than it need be. The FreeCAD community must pursue a program of UI normalization to make learning FreeCAD easier.
The first step in this process is to stop making things worse by accepting UI submissions that are poorly designed or implemented. Focus areas:
- Creation of a UI/UX ‘style book’. This would be a guidebook for developers to follow when creating core and add-on functionality. The style book would also be useful when evaluating new submissions that affect user experience. Eventually, the style book standards can be used to ‘score’ existing workbenches and identify opportunities for improvement.
- A ‘first run’ wizard to familiarize the user with essential customizations and features.
- Reduce confusing UI elements:
- Eliminate redundant tools
- Suppress infrequently-used workbenches
- Consolidate settings, preferences, and other customization tools
- Make toolbar placement more predictable and stable
- Toolbar placement consistency
- Make tasks fail safe. Tasks should always be in transactions and ‘undo’ cleanly. Red errors in the console are unacceptable for normal workflow.
- Normalize the use of terminology both within FreeCAD and, when possible, with external standards.
- Improve support for materials and implement consistently across all workbenches
Objective: Seamless Extensibility
FreeCAD has an addon manager to allow the user to add niche features. This provides two important functions. First, it allows the core application to remain leaner and avoid bloat. Second, it allows for competing solutions early on. Our approach to addons, however, has been somewhat undisciplined. As a result, the quality of addons is very uneven. Some are excellent and behave like native parts of the application. Others feel and behave inconsistently. Still others are completely broken or unmaintained. If we want the addon capability to serve both purposes, additional development is needed. Focus areas include:
- Improve the Addon Manager workbench to make it easier for users to find good well-maintained addons. Maybe a ‘Featured’ section if addon workbench has a responsive maintainer, minimum open bugs. Maybe a user review? Without some status, we could end up with lots of cruft polluting the the manager.
- Establish standards for addons to meet to achieve a ‘recommended’ or ‘featured’ status. Featured Addons should:
- Have an engaged maintainer
- Have minimal high priority open issues tickets
- Comply with published style book
- Support translation
- Support unit schema
- Install and function cleanly with only the addon manager.
- Improve Scriptability:
- Improved editor / support external editor
- Native debugger
- Improved API
Objective: Have the best documentation possible
Documentation has become as important as the FreeCAD application itself. Good documentation can offer a bridge to new users and smooth the learning curve. It can make all the difference between an application that is hard to use and one that is easy to learn.
The FreeCAD documentation is generally in a very good state already. But it could, and should, go much further. Focus areas include
- Low-friction to revision through the browser
- Git-trackable
- Versions of the documentation that match software versions
- Good translation support
- Support for off-line readers
- Natural integration of Developer / API documentation
Objective: UI modernization and beautification
We want the FreeCAD application to be both efficient and attractive. We want it to integrate well with the rest of the desktop experience, to be responsive and to be delightful to use. Focus areas include:
- User customization:
- themes
- Modern UI concepts:
- Eg “pie menu”
- Context menus
- Ribbon Bar
- Efficient use of screen area:
- Transparency
- Multi-screen support
- Enhanced visualization:
- Shadows
- Simplified ray tracing and rendering
Objective: Streamlined workflow
Performing common and repetitive tasks should be as effortless as possible. FreeCAD developers should commit themselves to building efficient workflows throughout the application. This means minimizing clicks and unnecessary dialogs. It means adding dedicated tools for routine functions rather than relying on generalized tools that may require more steps. It means anticipating and giving the user efficient access to information when and where they need it. Focus areas include:
- Better and consistent measuring tools
- Improve sketcher :
- Missing tools :
- Offset tool.
- Circular pattern
- Usable rectangular array.
- Constrain contextually.
- Missing tools :
- Seamless copy-paste of geometries/sketches
- Uniform selection modes
- Uniform approach to user parameters
- Simplified access to commonly needed data
- Volume
- Mass
- Moment
- Center of Gravity
- Surface area
- Text alignment tool
Objective: Lower Barriers to Entry
FreeCAD has an enormous number of functions and for a new user, there is no obvious way to use just a task oriented subset. It should be possible for new users to access a subset of FreeCAD functionality, say on the level of a TinkerCAD. As they gain experience, they can use additional functions.
FreeCAD has a major terminology problem for new users. We have a Part workbench that doesn’t make Parts and a Part Design workbench that isn’t used to design Parts. We have Pads and Extrudes, Pockets and Cuts, Fuses and Unions, etc. We have a Part container and a Group container(?) but no core functions to populate a container (ex a core assembly function)..
Forum comment regarding nomenclature: https://forum.freecad.org/viewtopic.php?p=669869#p669869
Objective: Prevent Shooting Yourself in the Foot
FreeCAD allows users to do things that are known to build fragile models, such as building features based on variable foundations (ex Sketches on Faces, Dimensions based on drawing lines). We even have icons and commands for doing this. FreeCAD should prevent “dangerous” actions, convert them behind the scenes to safe actions or at least provide a warning about unsafe practices.