FreeCAD Arch Development News - November/December 2017

Hi all,

First off, sorry for the delay, I was trying to finish the new Render workbench (see below) before posting this report, because otherwise there is not much exciting stuff this month, and it ended up taking more time than I thought, because I kept experimenting a lot until arriving to a good solution. And since not much more will be happening this year, given the coming new year events (a good friend of mine calls this The Great Intoxication) I'll exceptionally make one report for two months, if you don't mind. But I'll give you some more news before the January report.

I'd also like to take this opportunity to thank you all who contributed to my Patreon campaign (or Librepay) this year, it has triggered some big changes for me, which took (and are still taking) more time than I thought, you don't turn into a part-time programmer overnight, but it is a really cool process, and, truth be told, during last year's dire economical crisis in Brazil, this FreeCAD "job" I now have thanks to you guys helped me a lot to keep the boat afloat. Thanks a million for that.

Basically FreeCAD development has now entered "feature freeze" mode, in preparation to the upcoming 0.17 release. I can hear the question rushing from your hearts: When???

There is unfortunately no answer to this yet, as some of you know, a motto we have at FreeCAD, that we really like a lot is: "It's done when it's done". This can be interpreted in many ways, you might think "lazy developers don't want to work hard enough!" but it is not that. It is very important to all of us to be able to release when we think it has reached the correct level of quality. As the project grows too, there are more and more developers involved, and more and more features weren't touched at all by one of the core developers, and it takes time to have everybody focus on fixing bugs. In a sense, FreeCAD has its own rythm, and we try to make sure everything that needs to be done is done before releasing.

Also, but this is more my personal opinion, working on an open-source project is awesomely cool. You don't have a boss telling you how you must do your job, no schedule, no deadline, no need to do this or that today, you decide what you want to do, how you want to do it and when. Total freedom. And I believe one of the main reason why open-source projects thrive well is this. People like to work on them, they have cool communities full of entusiast people who stick there for a very long time. And I think it is important to keep an open-source project a very cool and awesome place for developers to be. And I'm not sure very strict projects with lots of schedules and roadmaps are as cool to work with as FreeCAD I'd like to hear it if you have a different opinion, though.

Also in the case of FreeCAD we have a pretty permeable workflow. Development versions are easy to obtain and install, even side-by-side with the current "official" release, and are usually very stable. Most long-time FreeCAD users only use development versions. So the urgency to release official versions is low.

So, we are now in feature freeze mode, which means we don't add new features to the code anymore (at least we try to), we concentrate on testing and fixing bugs. There are still a couple of nasty ones to be fixed, but in general the process is going well.

Regarding the Arch workbench specifically, I am currently developing an architecture project with it, and using it as a test bed to test all possible scenarios and find bugs (and fix them of course). There is unfortunately nothing very exciting to share here, it's mostly small things, but this is an important phase.

All in all, I think the Arch workbench is in pretty good shape for the coming release, we of course still don't have all the features we want for it to be a full BIM application, but the existing tools grew a lot in stability, versatility and usability. For some of them like the structure or panel tools, I believe we're not far from commercial counterparts.

Also, there are now several tools and addons around Arch, such as Reinforcement or Flamingo, that, together with Arch, are building a much bigger and more complete BIM ecosystem in FreeCAD.

There are many things you can do to help to speed up the release process, if you are interested. For example translating FreeCAD, helping with the documentation or more generally, do some work with FreeCAD and help to find bugs. As always, the forum is the best place to go if you want to help.

The Render workbench

The Render workbench is a new addon workbench I've developed last month. It is meant to replace the built-in Raytracing workbench of FreeCAD. The main reason is that the Raytracing workbench wasn't really made to be extended with other rendering engines, but these engines get obsolete quickly and new ones pop up all the time, so I thought it was worth starting a new one from scratch.

The Render workbench is coded in Python, because since the rendering itself is performed by another application anyway, there is no critical speed issue here, so the speed of C++ code is not really necessary, and it makes the workbench much easier to extend by other people. I also took extra care of making it simple to understand and extend, you basically only need to add one new file for each new renderer, and write 3 functions inside: One that writes the position of the camera in the file format of the renderer, one that writes the geometry of a given object, and one that is called when the "Render" button is pressed.

So far the two original engines of the Raytracing workbench are supported (Pov-Ray and Luxender), plus a new one, Appleseed. Other such as Blender's Eevee and OpenCasCade's CadRays are on my todo list.

The Render workbench works exactly like Raytracing: You start by creating a Render project, then add your objects to it. You can tweak some things like color, transparency, etc (the Render workbench also supports FreeCAD materials, which turns it the third workbench with material support, after FEM and Arch), and finally press the Render button to create the rendered image. And the Render workbench uses the same templates as Raytracing, in the good tradition installed with TechDraw and Drawing.

This is still pretty new, but in the coming days I'll try to produce some good-looking images to post on the forum.

That's it for today, thanks once again to everybody who helps me on Patreon or Librepay, it's really thrilling to see what this can produce, this year has been very rich in new features, I can't wait to see what we'll do next year!