History/zh-cn

发展历史


FreeCAD的发展历史可以从2001年1月讲起. 那时Jürgen Riegel开始为Cas.CADE项目工作. 这个项目是一个商用软件开发框架. 它包括一个几何建模内核（或者叫CAD内核）. 这个内核在2000年发布于一个开源协议之下，并更名为开放的小瀑布(缩写CAS.CADE的原意：为计算机辅助设计和工程服务的计算机辅助软件). 这就使得开发一个开源的3D CAD软件成为可能，因为非得自己从头开始编织CAD内核将会耗费巨大的工作量.

用Jürgen自己的话来说：

"''我在2001年1月开启的FreeCAD项目，当时称为GOM(图形对象建模者)，想法就是利用Qt、Python和Cas.CADE来实现. Cas.CADE是我在戴姆勒的项目上用到的一个商用CAD内核. Cas.CADE不久前开源了，所以貌似时机刚刚好，尝试进入当时还是空白的开源CAD领域. 我在一个叫做QSpect的项目里有两年经验，最终变成了它的主软件设计师. 这个项目使用OpenCascade，关于3D和CAD程序，我学到了很多. 我也收到Catia V5的影响，尤其是它非常特别的用户和程序界面. 2002年3月，在OpenCascade项目里，我注册了FreeCAD这个软件. 我不大懂名字的事情，没法想出比FreeCAD更好的名字了. 在2003年四月，我在QSpect项目里的同事Werner Meyer，他换到了一个叫Imetric的公司. 与Imetric的接触很有收获，因为他们正在为自己的3D传感器寻找一个新的3D软件平台. 2005年，Imetric把它大部分的Mesh模块捐赠给FreeCAD和开源社区，并将FreeCAD作为他们的传感器系统软件的基础. 从那时起，Werner Meyer是FreeCAD非常活跃的开发者. 2005年，经过一年的挣扎，我决定脱离OpenCascade的文档框架，改为由自己实现. 所以，最终，我们只用了OpenCascade的CAD内核，而没有采用其余框架. 2007年是另一个有趣的里程碑. 我们接上了QT4，然后，接上了LGPL. 那时我们做了很多工作，主要是Werner. ""

这个项目2003年在OpenCascade论坛上发布给公众. 我们再看看Jürgen的话：

"大家好，我叫Juergen Riegel，今天我想发布一个OpenCasCade项目，FreeCAD. 它是基于OpenCasCade、QT和Python的开源CAx RAD. 它的功能实现了一些关键概念，比如录制宏，工作台. 它有作为服务器运行的能力，还可以作为能动态装载的应用的扩展. 它被设计成了不局限于某个系统平台. 尽管它处于早期阶段，对用户和开发者都还不可用——计划于2003年底向用户发布第一版——我想要在设计上和方向上得到一些反馈（所以把它发布出来）. GUI近乎完成了，现在我和我的合作开发者Werner Mayer，已经开始加入第一个CAD功能. FreeCAD可以看作是一个通用目的的机械CAD系统，但是它的第一批受众，我想，将是CAx的开发者，他们需要为自己的工程找到一个地基. "

Werner Mayer
According to his own words he is in the project right from the first day the project was announced and oss. Before this day the project was a private project (play ground?) of Jürgen. See forum post from Werner in German: https://forum.freecadweb.org/viewtopic.php?f=13&t=40235&start=10#p342330

渐渐地，这个项目获得了关注，社区里有新的关键贡献者加入进来.


 * Linux beginning

"A fun fact is that he wanted to have an open-source CAD software mainly for Linux because at that time there existed actually nothing for this platform. However, from the beginning on we exclusively developed on Windows for the next 1.5 years. Then a Czech guy made a contribution to make the code of the core build on Linux: https://github.com/berndhahnebach/All_FreeCAD/commit/9fd2e27c95ba3dc84778d92e2564cd094793ce2f#diff-480477e89f9b6ddafb30c4383dcdd705"

"Half a year later I continued the Linux build: https://github.com/berndhahnebach/All_FreeCAD/commit/35b962d7d751dd80f7c7781df60f93bc9a3da992"

Q: Could you share how that first 1.5 years went? Were you meeting in person or online?

"Well, at that time we were colleagues (until 2005) so we could discuss things face to face. After that time we still had some personal meetings but discussed most things by email or phone."

"As third core developer Yorik joined around end of 2007 but it took another 3 or 4 years until the community and number of contributors started to grow significantly."

Q: Did you divide the tasks or work on competing implementations.

"Yes. Jürgen was designing and implementing most of the application and document logic and I was doing the basics of the GUI."

"However, this wasn't a gradual process but we have experimented with many things at the beginning. For example, in the initial version we used OCC's document framework OCAF and its viewer but after a year or two we got into a dead end because documentation about OCC was very poor and we couldn't get it to work to extend OCAF with our own feature types. So, we decided to only use OCC's modeling capacities but develop our own application/document framework."

Q: At the time did you think FreeCAD would be where it is today?

"We didn't know but we hoped. Of course we couldn't anticipate how exactly FreeCAD will look today. The most important design decisions were to make it available on all major platforms and make the whole SW as accessible as possible, i.e. to impose all important functions to Python so that (power) users are able to extend FreeCAD with own functions. This way we hoped to get a broad audience."

(See forum post from Werner Re: FreeCAD History)

Yorik van Havre2008年加入了这个项目，开始工作于绘图模块. 在那之前，用户没法通过用户图形界面创建两维几何体. 这个模块完全采用Python开发，而不是C++，后者是FreeCAD采用的核心编程语言. 这就证明了Python集成的成功，它可以用来扩展FreeCAD的能力或定制FreeCAD. Yorik除了制图模块，还致力于扩展FreeCAD的文档，并成了FreeCAD实际意义上的艺术总监，因为他为FreeCAD的用户图形界面创作出很多图标，定义了它的风格.

FreeCAD的0.7版在2009年4月发布. 它第一次包含了绘图模块. 零件模块提供了一个简单的CSG建设性实体几何元素工作流程，先创建基础形状，然后通过零件菜单，对他们做布尔运算. 它也有一些扩展，可以实现2D轮廓和倒角操作.

····2009年7月发布的0.8版中，可以看到制图模块的更多功能，包括新的尺寸工具. 零件模块有了新的工具条，还有新的工具：旋转和交并.

到2009年底，FreeCAD被Debian仓库接纳，作为一个Debian包. 2010年FreeCAD被加入到了Ubuntu10.04仓库中.

2010年7月发布的0.10版引入了草图模块. 它创建2D几何体的基础是草图解算器，一个基于约束的解算器. 第一版的功能仅限于创建长方形和线.

In early 2011, taking the opportunity given by the Launchpad online platform, the FreeCAD Maintainers team was created to provide fresh stable releases along with daily build packages of FreeCAD to users of the Ubuntu operating system.

Version 0.11 released in May 2011 introduced the new Part Design workbench which included tools such as Pad, Pocket, Fillet and Chamfer. The Draft workbench received enhancements and new tools, like BSpline. The Robot workbench featured more GUI tools.

Version 0.12 released in January 2012 featured a more complete Sketcher workbench. It included a totally rewritten solver, FreeGCS. It was the result of months of work by the main FreeCAD developers along with newcomers logari81 (who programmed the solver) and mrlukeparry. More tools were added to the PartDesign workbench.

Enlargement of core developer team
The team of core developers is extended from the three old hands Jürgen, Werner and Yorik to Abdullah, Bernd, sliptonic and WandererFan on 3rd of April in 2019. See coredeveloper https://github.com/orgs/FreeCAD/teams/core-developers/members

Interesting Posts on the forum

 * about PartDesignNext and other design decisions: https://forum.freecadweb.org/viewtopic.php?f=8&t=34923&start=130#p297074
 * about forum history: https://forum.freecadweb.org/viewtopic.php?f=8&t=7448&start=200#p287106

Commit history
An overview about the commit history can be found in the following Forum post: https://forum.freecadweb.org/viewtopic.php?f=8&t=23695#p184940

Links

 * SourceForge Files section
 * SourceForge Old Files section
 * Who is behind FreeCad? topic on the FreeCAD forum
 * Announcing FreeCAD Project on the OpenCascade forum