<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Biosystems Engineering Blog (Posts about freecad)</title><link>https://kwk.systems/blog/</link><description></description><atom:link href="https://kwk.systems/blog/categories/freecad.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Contents © 2024 &lt;a href="mailto:info@kwk.systems"&gt;Kurt Kremitzki&lt;/a&gt; 
&lt;a rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/"&gt;
&lt;img alt="Creative Commons License BY-SA"
style="border-width:0; margin-bottom:12px;"
src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png"&gt;&lt;/a&gt;</copyright><lastBuildDate>Thu, 16 May 2024 22:41:32 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>November and December Update for FreeCAD &amp; Debian Science</title><link>https://kwk.systems/blog/posts/november-and-december-update-for-freecad-debian-science/</link><dc:creator>Kurt Kremitzki</dc:creator><description>&lt;p&gt;Hello again! This new year's update announces some interesting new beginnings
for the FreeCAD project, though it's a little short since I got some much
needed vacation time over the last two months.&lt;/p&gt;
&lt;nav class="contents" id="contents" role="doc-toc"&gt;
&lt;p class="topic-title"&gt;Contents&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference internal" href="https://kwk.systems/blog/posts/november-and-december-update-for-freecad-debian-science/#openfoam-on-one-core-only-92-hours-for-mipsel" id="toc-entry-1"&gt;OpenFOAM on One Core? Only 92 Hours! (for mipsel)&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference internal" href="https://kwk.systems/blog/posts/november-and-december-update-for-freecad-debian-science/#trip-to-fosdem-2020-and-minidebcamp-at-the-hackerspace-brussels" id="toc-entry-2"&gt;Trip to FOSDEM 2020 and MiniDebCamp at the Hackerspace Brussels&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference internal" href="https://kwk.systems/blog/posts/november-and-december-update-for-freecad-debian-science/#looking-at-brl-cad-for-debian" id="toc-entry-3"&gt;Looking at BRL-CAD for Debian&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference internal" href="https://kwk.systems/blog/posts/november-and-december-update-for-freecad-debian-science/#pyside-2-and-kde-maintenance-in-debian" id="toc-entry-4"&gt;PySide 2 and KDE Maintenance in Debian&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference internal" href="https://kwk.systems/blog/posts/november-and-december-update-for-freecad-debian-science/#freecad-sysadmin-woes-begone-digitalocean-sponsorship" id="toc-entry-5"&gt;FreeCAD Sysadmin Woes Begone: DigitalOcean Sponsorship&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference internal" href="https://kwk.systems/blog/posts/november-and-december-update-for-freecad-debian-science/#thanks-for-your-support" id="toc-entry-6"&gt;Thanks for your support&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/nav&gt;
&lt;section id="openfoam-on-one-core-only-92-hours-for-mipsel"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://kwk.systems/blog/posts/november-and-december-update-for-freecad-debian-science/#toc-entry-1" role="doc-backlink"&gt;OpenFOAM on One Core? Only 92 Hours! (for mipsel)&lt;/a&gt;&lt;/h2&gt;
&lt;img alt="OpenFOAM &amp;amp; ParaView flow simulation." class="align-center" src="https://kwk.systems/blog/images/OpenFOAM+ParaView_flow_simulation.png"&gt;
&lt;p&gt;In November a &lt;a class="reference external" href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=945041"&gt;strange bug was found in the OpenFOAM package&lt;/a&gt; which led to
only one core being used during builds, even though the logs reported an
&lt;code class="docutils literal"&gt;N&lt;/code&gt; core build. In the worst case scenario, on the &lt;code class="docutils literal"&gt;mipsel&lt;/code&gt; architecture,
this led to an increase in build times from 17 to 92 hours! I did some
troubleshooting on this but found it a bit difficult since OpenFOAM uses a
bespoke build system called &lt;code class="docutils literal"&gt;wmake&lt;/code&gt;. I found myself wishing for the simplicity
of CMake, and found there was &lt;a class="reference external" href="https://github.com/stuart23/cmake-OpenFOAM"&gt;an experimental repo implementing support for
it&lt;/a&gt; but it didn't seem to work
out of the box or with a bit of effort. I wonder if there's any consideration
amongst OpenFOAM developers in moving away from &lt;code class="docutils literal"&gt;wmake&lt;/code&gt;?&lt;/p&gt;
&lt;p&gt;Anyway, OpenFOAM ended up getting removed from Debian Testing, but thankfully
Adrian Bunk identified the problem, which is that the environment variable
&lt;code class="docutils literal"&gt;MAKEFLAGS&lt;/code&gt; was getting set to &lt;code class="docutils literal"&gt;'w'&lt;/code&gt; for some reason, and thus falling
through the &lt;code class="docutils literal"&gt;wmake&lt;/code&gt; code block that set up a proper parallel build for
OpenFOAM. So, unsatisfyingly, as a workaround I uploaded the latest OpenFOAM
version, 1906.191111, with &lt;code class="docutils literal"&gt;unexport MAKEFLAGS&lt;/code&gt;. It would be nice to find an
explanation, but I didn't spend much more time digging.&lt;/p&gt;
&lt;p&gt;So, to end on the good news, the newest bugfix version of the OpenFOAM 1906
release, from November 11th 2019, is available for use going into 2020!&lt;/p&gt;
&lt;/section&gt;
&lt;section id="trip-to-fosdem-2020-and-minidebcamp-at-the-hackerspace-brussels"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://kwk.systems/blog/posts/november-and-december-update-for-freecad-debian-science/#toc-entry-2" role="doc-backlink"&gt;Trip to FOSDEM 2020 and MiniDebCamp at the Hackerspace Brussels&lt;/a&gt;&lt;/h2&gt;
&lt;img alt="FOSDEM logo." class="align-center" src="https://kwk.systems/blog/images/1024px-FOSDEM_logo.svg.png" style="width: 201px;"&gt;
&lt;p&gt;It was a bit last minute, but I finally decided to attend FOSDEM 2020. I had
balked a bit at the cost since flights from the US are around $900, but decided
it would be an important opportunity for FreeCAD developers and community to
get together and possibly do some important work. Thankfully, Yorik and other
senior FreeCAD developers thought it would be a good use of the project's
Bountysource money to cover the cost of one ticket, split in half between
myself and sliptonic, a developer from Missouri. He focuses on the Path
workbench and FreeCAD in CAM applications, an area I'm interested in moving
into as I now have such machining equipment available to me through my local
&lt;a class="reference external" href="https://atxhs.org"&gt;ATX Hackerspace&lt;/a&gt;. The three of us will be giving a talk,
&lt;a class="reference external" href="https://fosdem.org/2020/schedule/event/freecad/"&gt;"Open-source design ecosystems around FreeCAD"&lt;/a&gt;, at 11:20 on Saturday, so
please come by and say hi if you're able to!&lt;/p&gt;
&lt;p&gt;I'll be staying for a few days before and after FOSDEM, including attending the
&lt;a class="reference external" href="https://wiki.debian.org/DebianEvents/be/2020/MiniDebCamp"&gt;MiniDebCamp at Hackerspace Bruxelles&lt;/a&gt; on Thursday &amp;amp;
Friday, interested in anything Debian/FreeCAD related, so I look forward to
getting a lot of work done indeed!&lt;/p&gt;
&lt;/section&gt;
&lt;section id="looking-at-brl-cad-for-debian"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://kwk.systems/blog/posts/november-and-december-update-for-freecad-debian-science/#toc-entry-3" role="doc-backlink"&gt;Looking at BRL-CAD for Debian&lt;/a&gt;&lt;/h2&gt;
&lt;figure class="align-center"&gt;
&lt;img alt="Developer working on BRL-CAD, circa 1980" src="https://kwk.systems/blog/images/brlcad.jpg"&gt;
&lt;figcaption&gt;
&lt;p&gt;Lead developer Mike Muuss works on the XM-1 tank in BRL‑CAD on a PDP‑11/70 computer system, circa 1980.&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;For the past several summers, FreeCAD has participated in the &lt;a class="reference external" href="https://summerofcode.withgoogle.com/"&gt;Google Summer of
Code&lt;/a&gt; program under an umbrella
organization led by Sean Morrison of &lt;a class="reference external" href="http://brlcad.org/"&gt;BRL-CAD&lt;/a&gt;. BRL-CAD
is a very interesting bit of software with a long history, in fact the oldest
known public version-controlled codebase in the world still under development,
dating back to 1983-12-16 00:10:31 UTC. It is inspired by the development ideas
of the era, a sort of UNIX philosophy for CAD, made up of many small tools
doing one thing well and meant to be used in a normal UNIXy way, being piped
into one another and so forth, with a unifying GUI using those tools. Since
it's made up of BSD/LGPL licensed code, it ought to be available as part of the
Debian Science toolkit, where it may be useful for FreeCAD as an included
alternative CAD kernel to the currently exclusive &lt;a class="reference external" href="https://www.opencascade.com/"&gt;OpenCASCADE&lt;/a&gt;. For example, &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Fillet_(mechanics)"&gt;fillets&lt;/a&gt; in OpenCASCADE are
somewhat buggy and unmaintainably implemented such that an upstream rewrite is
the only hope for long-term improvement. BRL-CAD could potentially improve
FreeCAD in areas like this.&lt;/p&gt;
&lt;p&gt;It turns out a Debian &lt;a class="reference external" href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=289632"&gt;Request for Packaging bug for BRL-CAD&lt;/a&gt; has been open
since 2005. I plan to close it! It turns out there's already existing Debian
packaging work, too, though it's quite a few years old and thus some adaptation
still is required.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="pyside-2-and-kde-maintenance-in-debian"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://kwk.systems/blog/posts/november-and-december-update-for-freecad-debian-science/#toc-entry-4" role="doc-backlink"&gt;PySide 2 and KDE Maintenance in Debian&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Recently, FreeCAD has been unbuildable in Debian Sid because of issues related
to PySide 2 and the Python 3.8 migration. This is complicated by the fact that
the upstream fix has been released but in version 5.14.0, which builds fine
with Qt 5.14, although Sid currently has 5.12. Furthermore, the PySide 2
package itself isn't building at the moment either! Since FreeCAD depends on
PySide 2 and Qt, and I use the Qt-based KDE as my desktop, it seems like taking
on maintenance of PySide 2 is something I should do to get started in this
realm.  However, the Qt/KDE Team's packaging practices and tools are rather
different than the ones I'm used to for Science Team packages. This makes
sense: Science Team packages are very often a single Git repo, but Qt5 for
example is really 44 Git submodules smushed together. As such, things are a bit
different! Once I get things taken care of for the package, I will try to write
up some notes to help others interested in getting started, especially since
KDE packaging could use some help.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="freecad-sysadmin-woes-begone-digitalocean-sponsorship"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://kwk.systems/blog/posts/november-and-december-update-for-freecad-debian-science/#toc-entry-5" role="doc-backlink"&gt;FreeCAD Sysadmin Woes Begone: DigitalOcean Sponsorship&lt;/a&gt;&lt;/h2&gt;
&lt;a class="reference external image-reference" href="https://www.digitalocean.com/"&gt;&lt;img alt="DigitalOcean's &amp;quot;Powered By&amp;quot; blue badge lgoo." class="align-center" src="https://opensource.nyc3.cdn.digitaloceanspaces.com/attribution/assets/PoweredByDO/DO_Powered_by_Badge_blue.svg" style="width: 201px;"&gt;&lt;/a&gt;
&lt;p&gt;I'm very happy to announce that the FreeCAD project is now among &lt;a class="reference external" href="https://www.digitalocean.com/open-source/"&gt;the many open
source software sponsorships by DigitalOcean&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;One of the first things I did when interested in FreeCAD was to try to take on
the responsibility of maintaining the project's infrastructure, since that
would free up time for people to work on FreeCAD itself. FreeCAD's 17 years old
now, and some of our infrastructure stack is about as dated. However, it isn't
easy to just move things, I had to get things up to speed first and try to
minimize disruption, so it's been a slow process. I'll go into more details in
a technical blog post on the matter after I've finished our migration,
hopefully by the end of this month, including details on our new setup, with
the goal of allowing people to get set up with a dev environment of our project
tools so you can do some hacking on things yourself and help out if possible.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="thanks-for-your-support"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://kwk.systems/blog/posts/november-and-december-update-for-freecad-debian-science/#toc-entry-6" role="doc-backlink"&gt;Thanks for your support&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I appreciate any feedback you might have.&lt;/p&gt;
&lt;p&gt;You can get in touch with me &lt;a class="reference external" href="https://twitter.com/thekurtwk"&gt;via Twitter @thekurtwk&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you'd like to donate to help support my work, &lt;a class="reference external" href="https://www.kwk.systems/blog/pages/donate/"&gt;there are several methods
available on my site&lt;/a&gt;.&lt;/p&gt;
&lt;/section&gt;</description><category>debian</category><category>freecad</category><guid>https://kwk.systems/blog/posts/november-and-december-update-for-freecad-debian-science/</guid><pubDate>Fri, 03 Jan 2020 03:25:18 GMT</pubDate></item><item><title>Halloween Update for FreeCAD &amp; Debian Science Work</title><link>https://kwk.systems/blog/posts/halloween-update-for-freecad-debian-science-work/</link><dc:creator>Kurt Kremitzki</dc:creator><description>&lt;p&gt;There's been a spooky amount of activity in the FreeCAD &amp;amp; Debian Science world
since I last wrote!  Because this update covers August, September, and October,
I'll try to be brief and only touch on the key points.&lt;/p&gt;
&lt;nav class="contents" id="contents" role="doc-toc"&gt;
&lt;p class="topic-title"&gt;Contents&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference internal" href="https://kwk.systems/blog/posts/halloween-update-for-freecad-debian-science-work/#staging-merging-app-link-functionality" id="toc-entry-1"&gt;Staging &amp;amp; Merging App::Link Functionality&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference internal" href="https://kwk.systems/blog/posts/halloween-update-for-freecad-debian-science-work/#freecad-python-2-removal-in-debian-testing" id="toc-entry-2"&gt;FreeCAD Python 2 removal in Debian Testing&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference internal" href="https://kwk.systems/blog/posts/halloween-update-for-freecad-debian-science-work/#freecad-python-3-support-added-for-ubuntu-16-04" id="toc-entry-3"&gt;FreeCAD Python 3 support added for Ubuntu 16.04&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference internal" href="https://kwk.systems/blog/posts/halloween-update-for-freecad-debian-science-work/#netgen-and-pybind11-builds" id="toc-entry-4"&gt;Netgen and Pybind11 Builds&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference internal" href="https://kwk.systems/blog/posts/halloween-update-for-freecad-debian-science-work/#opencascade-7-4-0" id="toc-entry-5"&gt;OpenCASCADE 7.4.0&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference internal" href="https://kwk.systems/blog/posts/halloween-update-for-freecad-debian-science-work/#openfoam-1906" id="toc-entry-6"&gt;OpenFOAM 1906&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference internal" href="https://kwk.systems/blog/posts/halloween-update-for-freecad-debian-science-work/#gmsh-4-4-1" id="toc-entry-7"&gt;Gmsh 4.4.1&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference internal" href="https://kwk.systems/blog/posts/halloween-update-for-freecad-debian-science-work/#netgen-6-2-1905" id="toc-entry-8"&gt;Netgen 6.2.1905&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference internal" href="https://kwk.systems/blog/posts/halloween-update-for-freecad-debian-science-work/#github-sponsors-program" id="toc-entry-9"&gt;GitHub Sponsors Program&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference internal" href="https://kwk.systems/blog/posts/halloween-update-for-freecad-debian-science-work/#thanks-for-your-support" id="toc-entry-10"&gt;Thanks for your support&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/nav&gt;
&lt;section id="staging-merging-app-link-functionality"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://kwk.systems/blog/posts/halloween-update-for-freecad-debian-science-work/#toc-entry-1" role="doc-backlink"&gt;Staging &amp;amp; Merging App::Link Functionality&lt;/a&gt;&lt;/h2&gt;
&lt;figure class="align-center"&gt;
&lt;img alt="App::Link example" src="https://kwk.systems/blog/images/applink.png" style="width: 600px;"&gt;
&lt;figcaption&gt;
&lt;p&gt;&lt;em&gt;The "App::Link" object allows lightweight linking of objects in a document
and from external documents.&lt;/em&gt;&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;In August, a major milestone towards unified, mainline mechanical assembly
functionality in FreeCAD was reached.&lt;/p&gt;
&lt;p&gt;One of the core challenges in implementing assembly functionality is the
problem of topological naming. In a CAD model there are topological entities,
such as solids, faces, edges, and vertices. We must choose some algorithm to
name them so that you can refer to relationships to make an assembly. A simple
example would be two cubes, connected by touching faces. If a parameter in your
model changes, and after recalculation, your "Face_N" is on the wrong side of
the cube, your assembly may break, or not be what you are expecting. Without a
good approach to topological naming, parametric FreeCAD models won't be robust
to changes and recalculations, which defeats the purpose of parametric
modeling.&lt;/p&gt;
&lt;p&gt;Because this is such a difficult problem, progress has been slow. However,
recently a relatively new FreeCAD developer, 'realthunder', put significant
work towards this problem, with a solution finally on the horizon. Because it
required major changes to FreeCAD's internals, the review and testing period
was and continues to be lengthy.&lt;/p&gt;
&lt;p&gt;The milestone in particular was merging of a large chunk of this code, referred
to in short as "App::Link functionality". This diff is huge: &lt;em&gt;+70,441&lt;/em&gt;
&lt;em&gt;-14,562&lt;/em&gt; lines of C++. You can &lt;a class="reference external" href="https://github.com/FreeCAD/FreeCAD/pull/2350"&gt;read more about it on the pull request itself&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I only played a minor contributing role in this effort, preparing a short-lived
staging PPA to provide a package for testers after the pull request was opened
in July, but it's rather significant news in terms of the project and so worth
spreading. Mechanical assembly is (no surprise) a must-have for mechanical
engineers interested in FreeCAD, and it's considered by some to be the last
remaining blocker for FreeCAD's 1.0 release.&lt;/p&gt;
&lt;p&gt;Extra links: notes for code reviewers from the PR author, for the dedicated
readers out there.&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference external" href="https://github.com/realthunder/FreeCAD_assembly3/wiki/Concepts"&gt;https://github.com/realthunder/FreeCAD_assembly3/wiki/Concepts&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference external" href="https://github.com/realthunder/FreeCAD_assembly3/wiki/Core-Changes"&gt;https://github.com/realthunder/FreeCAD_assembly3/wiki/Core-Changes&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="freecad-python-2-removal-in-debian-testing"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://kwk.systems/blog/posts/halloween-update-for-freecad-debian-science-work/#toc-entry-2" role="doc-backlink"&gt;FreeCAD Python 2 removal in Debian Testing&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The Python 2 removal in Debian Testing continues, and with it, FreeCAD's Python
2 package is gone. However, upon upload, several new build failures appeared on
the i386, mipsel, and s390x platforms. Turns out there was a regression in dwz,
a software I had never heard of before. I tried troubleshooting but
unfortunately had FreeCAD drop out of testing due to the Python 2 removal bug
filed against it.&lt;/p&gt;
&lt;p&gt;Luckily, when I &lt;a class="reference external" href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=942193"&gt;filed a bug against dwz&lt;/a&gt;, Matthias Klose
and Tom de Vries helped isolate and upstream the problem, with Tom even
&lt;a class="reference external" href="https://sourceware.org/bugzilla/show_bug.cgi?id=25109"&gt;bisecting the regressing commit in the upstream bug&lt;/a&gt;. Thank you, you two!&lt;/p&gt;
&lt;p&gt;After adding a workaround to fix those build failures, the new Python 3-only
FreeCAD package is on its way to Debian Testing.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="freecad-python-3-support-added-for-ubuntu-16-04"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://kwk.systems/blog/posts/halloween-update-for-freecad-debian-science-work/#toc-entry-3" role="doc-backlink"&gt;FreeCAD Python 3 support added for Ubuntu 16.04&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Qt 5 &amp;amp; Python 3 builds for FreeCAD have been available on Ubuntu 18.04 and
newer and Debian 10 and newer platforms for some time now. However, Ubuntu
16.04 was problematic due to its old Qt version, which meant a Qt 4, Python 3
build had to be produced. This had been on the back burner for a while because
when I initially attempted backporting the necessary packages, I encountered
some friction.&lt;/p&gt;
&lt;p&gt;However, since it's the last holdout Python 2 platform, I took another look at
things to try to speed up the "py2ectomy". It turns out that the missing
package needed for a Python 3 build, pivy, was failing to build because of
&lt;a class="reference external" href="https://wiki.debian.org/Hardening#DEB_BUILD_HARDENING_PIE_.28gcc.2Fg.2B-.2B-_-fPIE_-pie.29"&gt;"PIE hardening"&lt;/a&gt;,
a Debian security hardening flag. I had all such flags turned on, so I just had
to disable that particular one to get things going.&lt;/p&gt;
&lt;p&gt;So, Python 3 builds are now available for Ubuntu 16.04 in the &lt;a class="reference external" href="https://launchpad.net/~freecad-maintainers/+archive/ubuntu/freecad-daily"&gt;FreeCAD Daily
Builds PPA&lt;/a&gt;,
and they will be coming soon to the stable PPA as well. A new bugfix release
has been made for stable, 0.18.4, so I am working on that first, and the Python
3 package will come with it.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="netgen-and-pybind11-builds"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://kwk.systems/blog/posts/halloween-update-for-freecad-debian-science-work/#toc-entry-4" role="doc-backlink"&gt;Netgen and Pybind11 Builds&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Good news for users of FreeCAD's finite element modeling workbench!&lt;/p&gt;
&lt;p&gt;Integration with Netgen, a mesh generator, has long been an optional but
off-by-default build option for FreeCAD, due to packaging difficulties.
However, since I have taken over things in recent years, I have finally gotten
things to the state where we can turn this back on by default. As part of this
change, I am also building FreeCAD with Pybind11 instead of Boost.Python,
marking another milestone in managing FreeCAD's dependencies.&lt;/p&gt;
&lt;p&gt;Since this may introduce bugs, I've started by making this change for all of
FreeCAD's daily builds in the Ubuntu PPA, as well as the package currently in
Debian Unstable. Eventually, this change may come to the stable PPA.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="opencascade-7-4-0"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://kwk.systems/blog/posts/halloween-update-for-freecad-debian-science-work/#toc-entry-5" role="doc-backlink"&gt;OpenCASCADE 7.4.0&lt;/a&gt;&lt;/h2&gt;
&lt;figure class="align-center"&gt;
&lt;img alt="OCCT performance improvement example" src="https://kwk.systems/blog/images/occt740.png" style="width: 600px;"&gt;
&lt;figcaption&gt;
&lt;p&gt;&lt;em&gt;An assembly of a single solid box replicated ~93,000 times. This test case is more than 10x faster in OCCT 7.4.0.&lt;/em&gt;&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;&lt;a class="reference external" href="https://www.opencascade.com/sites/default/files/documents/release_notes_7.4.0.pdf"&gt;After more than a year of development&lt;/a&gt; (PDF warning), a new
minor version of OpenCASCADE Technology (OCCT) has been released.&lt;/p&gt;
&lt;p&gt;OCCT is the geometry &amp;amp; topology kernel of FreeCAD, and it is also a dependency
for several related projects including Gmsh, IFCOpenShell, Netgen, and
OpenCAMLib. New releases in OCCT generally herald stability and performance
upgrades for core behavior. However, there are some breaking changes and so
these improvements are yet to be seen.&lt;/p&gt;
&lt;p&gt;For the time being, OCCT 7.4.0 packages are available in &lt;a class="reference external" href="https://launchpad.net/~kkremitzki/+archive/ubuntu/opencascade"&gt;my OpenCASCADE PPA&lt;/a&gt; and by
building the package directly from
&lt;a class="reference external" href="https://salsa.debian.org/science-team/opencascade"&gt;https://salsa.debian.org/science-team/opencascade&lt;/a&gt;.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="openfoam-1906"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://kwk.systems/blog/posts/halloween-update-for-freecad-debian-science-work/#toc-entry-6" role="doc-backlink"&gt;OpenFOAM 1906&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I uploaded &lt;a class="reference external" href="https://openfoam.com/releases/openfoam-v1906/index.php"&gt;the latest version of OpenFOAM&lt;/a&gt;, the toolbox for
computational fluid dynamics. It's now available in Ubuntu 19.10, Debian
Testing, and via the &lt;a class="reference external" href="https://launchpad.net/~freecad-community/+archive/ubuntu/ppa"&gt;FreeCAD Community Extras PPA&lt;/a&gt;.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="gmsh-4-4-1"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://kwk.systems/blog/posts/halloween-update-for-freecad-debian-science-work/#toc-entry-7" role="doc-backlink"&gt;Gmsh 4.4.1&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a class="reference external" href="https://gitlab.onelab.info/gmsh/gmsh/blob/master/CHANGELOG.txt"&gt;The latest version of Gmsh&lt;/a&gt;, a 3D finite
element mesh generator, is also in Ubuntu 19.10, Debian Testing, and the
Community Extras PPA. Thanks to Nico Schlömer for helping maintain this
package.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="netgen-6-2-1905"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://kwk.systems/blog/posts/halloween-update-for-freecad-debian-science-work/#toc-entry-8" role="doc-backlink"&gt;Netgen 6.2.1905&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;This version of Netgen is only available via the FreeCAD Daily and Community
Extras PPAs. Unfortunately Netgen has been stuck in the Debian NEW queue for
over 8 months now.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="github-sponsors-program"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://kwk.systems/blog/posts/halloween-update-for-freecad-debian-science-work/#toc-entry-9" role="doc-backlink"&gt;GitHub Sponsors Program&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I was accepted into the &lt;a class="reference external" href="https://github.com/sponsors/kkremitzki/"&gt;GitHub Sponsors&lt;/a&gt; program! GitHub is matching
donations for the first year. Hopefully this helps fund my FOSS work, and FOSS
work in general.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="thanks-for-your-support"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://kwk.systems/blog/posts/halloween-update-for-freecad-debian-science-work/#toc-entry-10" role="doc-backlink"&gt;Thanks for your support&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I appreciate any feedback you might have.&lt;/p&gt;
&lt;p&gt;You can get in touch with me &lt;a class="reference external" href="https://twitter.com/thekurtwk"&gt;via Twitter @thekurtwk&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you'd like to donate to help support my work, &lt;a class="reference external" href="https://www.kwk.systems/blog/pages/donate/"&gt;there are several methods
available on my site&lt;/a&gt;.&lt;/p&gt;
&lt;/section&gt;</description><category>debian</category><category>freecad</category><guid>https://kwk.systems/blog/posts/halloween-update-for-freecad-debian-science-work/</guid><pubDate>Fri, 01 Nov 2019 03:04:54 GMT</pubDate></item><item><title>Summer Update for FreeCAD &amp; Debian Science Work</title><link>https://kwk.systems/blog/posts/summer-update-for-freecad-debian-science-work/</link><dc:creator>Kurt Kremitzki</dc:creator><description>&lt;p&gt;Hello, and welcome to my "summer update" on my free software work on FreeCAD
and the Debian Science team. I call it a summer update because it was winter
when I last wrote, and quite some time has elapsed since I fell out of the
monthly update habit. This is a high-level summary of what I've been working on
since March.&lt;/p&gt;
&lt;section id="freecad-0-18-release-debian-10-full-freeze-timing"&gt;
&lt;h2&gt;FreeCAD 0.18 Release &amp;amp; Debian 10 Full Freeze Timing&lt;/h2&gt;
&lt;img alt="/images/freecadsplash.png" class="align-center" src="https://kwk.systems/blog/images/freecadsplash.png"&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;The official release date of FreeCAD 0.18
( &lt;a class="reference external" href="https://www.freecadweb.org/wiki/Release_notes_0.18"&gt;release notes&lt;/a&gt; )
is March 12, 2019, although the git tag for it wasn't pushed until March 14th.
This timing was a bit unfortunate as the full freeze for Debian 10 went into
effect March 12th, with a de-facto freeze date of March 2nd due to the 10 day
testing migration period. To compound things, since this was my first Debian
release as a packaging contributor, I didn't do things quite right such that
while I probably could have gotten FreeCAD 0.18 into Debian 10, I didn't.
Instead, what's available is a pre-release version from about a month before
the release which is missing a few bugfixes and refinements.&lt;/p&gt;
&lt;p&gt;On the positive side, this is an impetus for me to learn about &lt;a class="reference external" href="https://backports.debian.org/"&gt;Debian
Backports&lt;/a&gt;, a way to provide non-bugfix
updates to Debian Stable users. The 0.18 release line has already had several
bugfix releases; I've currently got Debian Testing/Unstable as well as the
Ubuntu Stable PPA up-to-date with version 0.18.3. As soon as I'm able, I'll get
this version into Debian Backports, too.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="freecad-ppa-improvements"&gt;
&lt;h2&gt;FreeCAD PPA Improvements&lt;/h2&gt;
&lt;p&gt;Another nice improvement I've recently made is migrating the packaging for the
Ubuntu Stable and Daily PPAs to Debian's GitLab instance at
&lt;a class="reference external" href="https://salsa.debian.org/science-team/freecad"&gt;https://salsa.debian.org/science-team/freecad&lt;/a&gt; by creating the &lt;code class="docutils literal"&gt;ppa/master&lt;/code&gt; and
&lt;code class="docutils literal"&gt;ppa/daily&lt;/code&gt; branches. Having all the Debian and Ubuntu packaging in one place
means that propagating updates has become a matter of git merging and pushing.
Once any changes are in place, I simply have to trigger an import and build on
Launchpad for the stable releases. For the daily builds, changes are
automatically synced and the &lt;code class="docutils literal"&gt;debian&lt;/code&gt; directory from Salsa is combined with the
latest synced upstream source from GitHub, so daily builds no longer have to be
triggered manually. However, this has uncovered another problem in our process
which being worked on at the FreeCAD forums. (Thread: &lt;a class="reference external" href="https://forum.freecadweb.org/viewtopic.php?f=42&amp;amp;t=37216"&gt;Finding a solution for
the 'version.h' issue&lt;/a&gt;&lt;/p&gt;
&lt;/section&gt;
&lt;section id="science-team-package-updates"&gt;
&lt;h2&gt;Science Team Package Updates&lt;/h2&gt;
&lt;img alt="/images/bunny.png" class="align-center" src="https://kwk.systems/blog/images/bunny.png"&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;The main Science Team packages I've been working on recently have been
OpenCASCADE, Netgen, Gmsh, and OpenFOAM.&lt;/p&gt;
&lt;p&gt;For OpenCASCADE, I have uploaded the third bugfix release in the 7.3.0 series.
Unfortunately, their versioning scheme is a bit unusual, so this version is tagged 7.3.0p3.
This is unfortunate because &lt;code class="docutils literal"&gt;dpkg &lt;span class="pre"&gt;--compare-versions&lt;/span&gt; 7.3.0p3+dfsg1 gt
7.3.0+dfsg1&lt;/code&gt; evaluates to false. As such, I've uploaded this package as 7.3.3,
with plans to contact upstream to discuss their bugfix release versioning
scheme. Currently, version 7.4.0 has an upstream target release date for the
end of August, so there will be an opportunity to convince them to release
7.4.1 instead of 7.4.0p1. If you're interested in the changes contained in this
upload, you can refer to the &lt;a class="reference external" href="https://git.dev.opencascade.org/gitweb/?p=occt.git;a=shortlog;h=refs/tags/V7_3_0p3"&gt;upstream git log&lt;/a&gt;
for more information.&lt;/p&gt;
&lt;p&gt;In collaboration with Nico Schlömer and Anton Gladky, the newest Gmsh, version
4.4.1, has been uploaded to wait in the Debian NEW queue. See &lt;a class="reference external" href="https://gitlab.onelab.info/gmsh/gmsh/blob/master/CHANGELOG.txt"&gt;the upstream
changelog&lt;/a&gt;
for more information on what's new.&lt;/p&gt;
&lt;p&gt;I've also prepared the package for the newest version of Netgen, 6.2.1905.
Unfortunately, uploading this is blocked because 6.2.1810 is still in Debian
NEW. However, I've tested compiling FreeCAD against Netgen, and I've been able
to get the integration with it working again, so once I'm able to do this
upload, I'll be able to upload a new and improved FreeCAD with the power of
Netgen meshing.&lt;/p&gt;
&lt;p&gt;I've also begun working on packaging the latest OpenFOAM release, 1906. I've
gotten a little sidetracked, though, as a pecularity in the way upstream
prepares their tarballs seems to be triggering a bug in GNU tar. I should have
this one uploaded soon. For a preview in what'll be coming, see the &lt;a class="reference external" href="https://www.openfoam.com/releases/openfoam-v1906/"&gt;release
notes for version 1906&lt;/a&gt;.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="gitlab-ci-experimentation-with-salsa-debian-org"&gt;
&lt;h2&gt;GitLab CI Experimentation with salsa.debian.org&lt;/h2&gt;
&lt;p&gt;Some incredibly awesome Debian contributors have set up the ability to use
GitLab CI to automate the testing of Debian packages (see &lt;a class="reference external" href="https://wiki.debian.org/Salsa/Doc#Running_Continuous_Integration_.28CI.29_tests"&gt;documentation&lt;/a&gt;.)&lt;/p&gt;
&lt;p&gt;I did a bit of experimentation with it. Unfortunately, both OpenCASCADE and
FreeCAD exceeded the 2 hour time limit. There's a lot of promise in it for
smaller packages, though!&lt;/p&gt;
&lt;/section&gt;
&lt;section id="python-2-removal-in-debian-underway"&gt;
&lt;h2&gt;Python 2 Removal in Debian Underway&lt;/h2&gt;
&lt;img alt="/images/deadsnakes.jpeg" class="align-center" src="https://kwk.systems/blog/images/deadsnakes.jpeg"&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Per &lt;a class="reference external" href="https://pythonclock.org"&gt;pythonclock.org&lt;/a&gt;, Python 2 has less than 5
months until it's end-of-life, so the task of removing it for the next version
of Debian has begun. For now, it's mainly limited to leaf packages with nothing
depending on them. As such, I've uploaded Python 3-only packages for new
upstream releases of &lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;python-fluids&lt;/span&gt;&lt;/code&gt; (a fluid dynamics engineering &amp;amp; design
library) and &lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;python-ulmo&lt;/span&gt;&lt;/code&gt; (provides clean &amp;amp; simple access to public hydrology
and climatology data).&lt;/p&gt;
&lt;/section&gt;
&lt;section id="debian-developer-application"&gt;
&lt;h2&gt;Debian Developer Application&lt;/h2&gt;
&lt;p&gt;I've finally applied to become a full Debian Developer, which is an exciting
prospect. I'll be more able to enact improvements without having to bug, well,
mostly Anton, Andreas, and Tobias. (Thanks!) I'm also looking forward to having
access to more resources to improve my packages on other architectures,
particularly arm64 now that the Raspberry Pi 4 is out and potentially a serious
candidate for a low-powered FreeCAD workstation.&lt;/p&gt;
&lt;p&gt;The process is slow and calculating, as it should be, so it'll be some time
before I'm officially in, but it sure will be cause for celebration.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="google-summer-of-code-mentoring"&gt;
&lt;h2&gt;Google Summer of Code Mentoring&lt;/h2&gt;
&lt;figure class="align-center"&gt;
&lt;img alt="/images/gsoc.png" src="https://kwk.systems/blog/images/gsoc.png"&gt;
&lt;figcaption&gt;
&lt;p&gt;CC-BY-SA-4.0, Aswinshenoy.&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;I'm mentoring a Google Summer of Code project for FreeCAD this year! (See
&lt;a class="reference external" href="https://forum.freecadweb.org/viewtopic.php?f=8&amp;amp;t=35493"&gt;forum thread&lt;/a&gt;.) My
student is quite new to FreeCAD and Debian/Ubuntu, so the first half of the
project has involved relatively the deep-end topics of using Debian packaging
to distribute bugfixes for FreeCAD and to learn by exploring related packages
in its ecosystem. In particular, focus was given to OpenCAMLib, since there is
a lot of user and developer interest in FreeCAD's potential for generating
toolpaths for machining and manufacturing the models created in the program.&lt;/p&gt;
&lt;p&gt;Now that he's officially swimming and not sinking, the next phase is working on
making development and packaging-related improvements for FreeCAD on Windows,
which is in even rougher shape than Debian/Ubuntu, but more his area of
familiarity. Stay tuned for the final results!&lt;/p&gt;
&lt;/section&gt;
&lt;section id="thanks-to-my-sponsors"&gt;
&lt;h2&gt;Thanks to my sponsors&lt;/h2&gt;
&lt;p&gt;This work is made possible in part by contributions from readers like you! You
can send moral support my way &lt;a class="reference external" href="https://twitter.com/thekurtwk"&gt;via Twitter @thekurtwk&lt;/a&gt;.  Financial support is also appreciated at
any level and possible on several platforms: &lt;a class="reference external" href="https://patreon.com/kkremitzki"&gt;Patreon&lt;/a&gt;, &lt;a class="reference external" href="https://liberapay.com/kkremitzki"&gt;Liberapay&lt;/a&gt;, and &lt;a class="reference external" href="https://paypal.me/kkremitzki"&gt;PayPal&lt;/a&gt;.&lt;/p&gt;
&lt;/section&gt;</description><category>debian</category><category>freecad</category><guid>https://kwk.systems/blog/posts/summer-update-for-freecad-debian-science-work/</guid><pubDate>Thu, 01 Aug 2019 04:47:23 GMT</pubDate></item><item><title>My Free Software Activities in January &amp; February 2019</title><link>https://kwk.systems/blog/posts/my-free-software-activities-in-january-february-2019/</link><dc:creator>Kurt Kremitzki</dc:creator><description>&lt;section id="intro"&gt;
&lt;h2&gt;Intro&lt;/h2&gt;
&lt;p&gt;Hello all and welcome again to another of my monthly summary posts on my work
in free software, with a focus on open engineering in &lt;a class="reference external" href="https://www.debian.org/"&gt;Debian&lt;/a&gt; &amp;amp; &lt;a class="reference external" href="https://www.ubuntu.com/"&gt;Ubuntu&lt;/a&gt;.  I'm
fortunate to have the &lt;a class="reference external" href="https://lists.debian.org/debian-devel-announce/2019/02/msg00008.html"&gt;February 12th Debian 10 soft freeze deadline&lt;/a&gt; to
scapegoat for my missed January update, and thanks too to February for being
short enough to postpone it further and combine the two updates.&lt;/p&gt;
&lt;p&gt;I've decided to go with a bit of a dryer chronological approach to this update
as there's lots to cover. Worth highlighting, however:&lt;/p&gt;
&lt;/section&gt;
&lt;section id="highlights"&gt;
&lt;h2&gt;Highlights&lt;/h2&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;New Debian upload for a &lt;a class="reference external" href="https://www.freecadweb.org/"&gt;FreeCAD&lt;/a&gt; 0.18 pre-release&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;New Debian upload for &lt;a class="reference external" href="https://www.openfoam.com/"&gt;OpenFOAM&lt;/a&gt;. An upstream
switch from openfoam.org to openfoam.com and a different versioning scheme
results in a massive version bump, 4.1 to 1812. That's over 1800 versions better.
(Seriously though, it's about a 2 year bump in changes.)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;New Debian uploads for &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Mesh_generation"&gt;mesh generation&lt;/a&gt; softwares &lt;a class="reference external" href="http://gmsh.info/"&gt;Gmsh&lt;/a&gt; 4.1.3 and &lt;a class="reference external" href="https://ngsolve.org/"&gt;Netgen&lt;/a&gt; 6.2.1810 --
though Netgen might miss Debian 10? It's stuck in the NEW queue.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;FreeCAD is participating in Google Summer of Code and I'm looking for a
student to mentor&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;hr class="docutils"&gt;
&lt;section id="timeline"&gt;
&lt;h2&gt;Timeline&lt;/h2&gt;
&lt;section id="january"&gt;
&lt;h3&gt;January&lt;/h3&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Jan 6: &lt;a class="reference external" href="https://forum.freecadweb.org/viewtopic.php?f=8&amp;amp;t=25175&amp;amp;start=20#p278504"&gt;Updated&lt;/a&gt;
the &lt;a class="reference external" href="https://freecadweb.org/tracker"&gt;FreeCAD bug tracker&lt;/a&gt; to the latest
version.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Jan 12: Completed transition of FreeCAD PPAs to new versions of &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Coin3D"&gt;Coin3D&lt;/a&gt; &amp;amp; its Python bindings package Pivy,
which &lt;a class="reference external" href="https://forum.freecadweb.org/viewtopic.php?f=8&amp;amp;t=26599"&gt;resolved a major breakage caused by me on Dec 29&lt;/a&gt; but was a necessary
precursor to a FreeCAD 0.18 release; I just didn't execute it as well as I
should have&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Jan 16: &lt;a class="reference external" href="https://tracker.debian.org/news/1021265/accepted-openfoam-1812dfsg1-1exp1-source-into-experimental/"&gt;Upload&lt;/a&gt;
of OpenFOAM 1812.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Jan 18: &lt;a class="reference external" href="https://github.com/aewallin/opencamlib/issues/31#issuecomment-455452094"&gt;Discussed on GitHub&lt;/a&gt;
with the upstream of &lt;a class="reference external" href="http://www.anderswallin.net/cam/"&gt;OpenCAMLib&lt;/a&gt; about
release plans now that it is Python 3 compatible&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Jan 19: &lt;a class="reference external" href="https://github.com/libMesh/libmesh/issues/2003"&gt;Contact via GitHub issue&lt;/a&gt; with &lt;a class="reference external" href="http://libmesh.github.io/"&gt;libMesh&lt;/a&gt; upstream about Debian packaging, with
enthusiastic response.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Jan 19: &lt;a class="reference external" href="https://github.com/FreeCAD/FreeCAD/pull/1916"&gt;FreeCAD pull request&lt;/a&gt; to fix Start Workbench
behavior in Debian/Ubuntu since we can't include binary &lt;a class="reference external" href="https://www.freecadweb.org/wiki/File_Format_FCStd"&gt;.FCStd&lt;/a&gt; examples, even though
they're glorified ZIPs, for Debian Free Software Guidelines reasons (or can we?
please contact me if you know otherwise)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Jan 25-27: Hosted &lt;a class="reference external" href="https://wiki.debian.org/BSP/2019/01/us/Austin"&gt;Austin Debian Bug Squashing Party&lt;/a&gt;. Unfortunately, it wasn't
very successful in drawing in people besides those already interested in Debian
at the host venue, the &lt;a class="reference external" href="http://atxhs.org/wiki/Main_Page"&gt;ATX Hackerspace&lt;/a&gt;. I
didn't want to over-advertise it since the venue was limited in capacity, which
in retrospect was a mistake. Oh well, there was also plenty to learn for the
next one. The following bugs were closed: 918479, 888026, 884092, 886538,
882510, 899099, 920525, 919711.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Jan 26: &lt;a class="reference external" href="https://forum.freecadweb.org/viewtopic.php?f=8&amp;amp;t=26599"&gt;Announced&lt;/a&gt; the experimental
&lt;a class="reference external" href="https://staging.freecad.io"&gt;staging.freecad.io&lt;/a&gt;, an instance of FreeCAD's
homepage designed to test possible improvements to be had by moving away from
shared hosting&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Jan 28: &lt;a class="reference external" href="https://github.com/sfepy/sfepy/issues/496"&gt;Contact via GitHub issue&lt;/a&gt; with &lt;a class="reference external" href="http://sfepy.org/doc-devel/index.html"&gt;sfepy&lt;/a&gt; upstream about it failing to build
from source to try to get help on issue potentially preventing it from being
included in Debian 10.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id="february"&gt;
&lt;h3&gt;February&lt;/h3&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Feb 4: Sponsored uploads of &lt;a class="reference external" href="https://tracker.debian.org/news/1027009/accepted-freecad-018pre1dfsg1-1exp1-source-all-amd64-into-experimental-experimental/"&gt;FreeCAD 0.18 pre-release&lt;/a&gt;
and &lt;a class="reference external" href="https://tracker.debian.org/news/1027010/accepted-gmsh-413ds1-1-source-amd64-all-into-unstable-unstable/"&gt;Gmsh 4.1.3&lt;/a&gt;
into Unstable, thanks Anton Gladky.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Feb 4: Announced &lt;a class="reference external" href="https://tracker.freecad.io"&gt;tracker.freecad.io&lt;/a&gt;, an
experimental instance of FreeCAD's bug tracker designed to test possible
improvements to be had from moving away from shared hosting&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Feb 5: Regained control of abandoned FreeCAD Snap, which was a pre-release of
0.17, by way of the uploader returning from MIA and adding me.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Feb 9: &lt;a class="reference external" href="https://github.com/FreeCAD/FreeCAD-Homepage/pull/33"&gt;Merge PR&lt;/a&gt; for
FreeCAD-Homepage repo to add Expires headers and unset ETags to try to get
better performance&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Feb 13: &lt;a class="reference external" href="https://github.com/sfepy/sfepy/issues/496#issuecomment-463089344"&gt;Confirmed sfepy upstream fix resolved the issue&lt;/a&gt;, but it
came a day after the soft freeze preventing re-entry to Testing.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Feb 23: &lt;a class="reference external" href="https://tracker.debian.org/news/1031845/accepted-python-fluids-0173-1-source-into-unstable/"&gt;Upload&lt;/a&gt;
of python-fluids 0.1.73, experiment with &lt;a class="reference external" href="https://salsa.debian.org/salsa-ci-team/pipeline/blob/master/README.md"&gt;Salsa GitLab CI&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Feb 25: &lt;a class="reference external" href="https://summerofcode.withgoogle.com/"&gt;Google Summer of Code&lt;/a&gt;
organizations announced. FreeCAD participating under umbrella organization
OpenCAx led by &lt;a class="reference external" href="https://brlcad.org/"&gt;BRL-CAD&lt;/a&gt;. I created a &lt;a class="reference external" href="https://github.com/opencax/GSoC/issues/13"&gt;GitHub issue&lt;/a&gt; for the project I'd like to
mentor. I'm looking for a student interested in improving the state of Debian &amp;amp;
Ubuntu packaging for FreeCAD and its ecosystem of packages. Particularly -- not
everyone's first encounter with FreeCAD is with the latest and greatest
version. If someone installs an old version and has a bad experience with an
easily fixable packaging bug, we should try to tackle that issue to not drive
away people who are already interested, but get a bad impression.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Feb 25: Sponsored &lt;a class="reference external" href="https://ftp-master.debian.org/new/netgen_6.2.1810+dfsg1-1.html"&gt;upload&lt;/a&gt; of Netgen to
Unstable, thanks Anton Gladky. Netgen had to re-enter NEW because I made a
mistake in the naming of the binary package, so I had to revise the package to
make libnglib-6.2 (for the .1810 release) replace libnglib-6.2.1804.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Feb 25: Sponsored &lt;a class="reference external" href="https://ftp-master.debian.org/new/pycollada_0.6-1.html"&gt;upload&lt;/a&gt;
of &lt;a class="reference external" href="https://github.com/pycollada/pycollada"&gt;pycollada&lt;/a&gt; which adds Python 3
support and a python3- package, so it has to pass through NEW again.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Feb 28: &lt;a class="reference external" href="https://tracker.debian.org/news/1033005/accepted-opencascade-730dfsg1-5-source-into-unstable/"&gt;Upload&lt;/a&gt;
of &lt;a class="reference external" href="https://www.opencascade.com/"&gt;OpenCASCADE&lt;/a&gt;, revising the package to
revert to the default 'opencascade' installation paths instead of 'occt' (a
not-so-great packaging decision as OpenCASCADE was my 2nd ever Debian package)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="sponsorship"&gt;
&lt;h2&gt;Sponsorship&lt;/h2&gt;
&lt;p&gt;Verbal support by way of my contact info below is greatly
appreciated, but if you want to help support my free software &amp;amp; open
engineering work financially, I've made it easy with several options:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference external" href="https://patreon.com/kkremitzki"&gt;Patreon&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference external" href="https://paypal.me/kkremitzki"&gt;PayPal&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference external" href="https://liberapay.com/kkremitzki"&gt;Liberapay&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference external" href="https://www.wispay.io/t/0d7"&gt;Wispay&lt;/a&gt; (cryptocurrency)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Any level of support is appreciated!&lt;/p&gt;
&lt;/section&gt;
&lt;section id="contact"&gt;
&lt;h2&gt;Contact&lt;/h2&gt;
&lt;p&gt;You can follow me on Twitter &lt;a class="reference external" href="https://twitter.com/thekurtwk"&gt;@thekurtwk&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I'm also now on &lt;a class="reference external" href="https://matrix.org/blog/home/"&gt;Matrix&lt;/a&gt;, an open network for
secure, decentralized communication, &lt;a class="reference external" href="https://matrix.to/#/@kkremitzki:matrix.org"&gt;@kkremitzki:matrix.org&lt;/a&gt;.&lt;/p&gt;
&lt;/section&gt;</description><category>debian</category><category>freecad</category><guid>https://kwk.systems/blog/posts/my-free-software-activities-in-january-february-2019/</guid><pubDate>Fri, 01 Mar 2019 06:10:43 GMT</pubDate></item><item><title>Free Software Activities in November 2018</title><link>https://kwk.systems/blog/posts/free-software-activities-in-november-2018/</link><dc:creator>Kurt Kremitzki</dc:creator><description>&lt;section id="intro"&gt;
&lt;h2&gt;Intro&lt;/h2&gt;
&lt;p&gt;Welcome to another of my monthly summaries on my work in the free software
world. My mission is to make engineering and science available for everyone,
and Debian, the Universal Operating System, is my weapon of choice.&lt;/p&gt;
&lt;p&gt;I received some feedback on my last post that I made it seem I would be
stepping away from my role maintaining FreeCAD and other packages on the Debian
Science Team, which was an unfortunate miscommunication on my part. Mainly, I
just would like to reduce the proportion of my overall free software time on
it, from its current amount, nearly 100%, to a roughly even 1/3rd split between
Debian Science, FreeCAD, and PostCAD. The latter is a promising personal
project to make an OpenCASCADE-powered CAD extension for PostgreSQL, bringing
support for CAD file formats, datatypes, and algorithms to the powerful
Postgres ecosystem, similar to what PostCAD has done for geospatial analysis.
This could serve as a backend for both FreeCAD in the short term, and in the
long term, it could power a web-based version of FreeCAD, perhaps with some
Django-powered middleware serving a REST API for some WebGL-based frontend.&lt;/p&gt;
&lt;p&gt;So, besides summarizing my work this month, I also plan to give a synopsis on
my Debian packaging, for both what's in-progress and on my wishlist. As you'll
see, it's quite extensive. My hope is that by whittling away at both lists, my
Debian Science work can focus more on maintenance of existing packages, and
free up some time for other things.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="sponsors"&gt;
&lt;h2&gt;Sponsors&lt;/h2&gt;
&lt;p&gt;My work on Debian Science, FreeCAD, and PostCAD is &lt;cite&gt;supported by my patrons on
Patreon &amp;lt;https://patreon.com/kkremitzki&amp;gt;&lt;/cite&gt;. While I had created a Liberapay a
while back, I never got any traction with it, and I found out recently that it
was because I had not set it up to actually receive payments. So, if you don't
like Patreon for whatever reason, you can also &lt;a class="reference external" href="https://liberapay.com/kkremitzki"&gt;support me on Liberapay&lt;/a&gt;. Just to round things out, if you don't
like either of those platforms, you can also &lt;a class="reference external" href="https://paypal.me/kkremitzki"&gt;help support my work via PayPal&lt;/a&gt;.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="transition-for-coin3"&gt;
&lt;h2&gt;Transition for coin3&lt;/h2&gt;
&lt;p&gt;Coin3D is a scene graph library and a fundamental part of FreeCAD.
Unfortunately, it hasn't had a release since 2011, but development has been
picking up recently, so it's likely that a release is not too far off. Even
without a formal release, several improvements have been made including CMake
support, so it's time to prepare a transition in advance of the Debian 10
release. Luckily, Leo Palomo-Avellaneda has taken the initiative of getting
this transition started.&lt;/p&gt;
&lt;p&gt;Currently, the new Coin3D package is available in Debian Experimental as we
prepare the reverse-dependencies to build against it. For FreeCAD, we directly
depend on Pivy, which are Python bindings for Coin. Pivy, in turn, depends on
Coin and SoQt, which is a Qt GUI component toolkit library for Coin. A
pre-release version of SoQt is also being packaged since, like Coin, CMake
support has been added, as well as support for Qt 5.&lt;/p&gt;
&lt;p&gt;Unfortunately, I've been grinding my gears on building Pivy against the new
Coin and SoQt for a good part of this month, which is especially troublesome
since FreeCAD's transition to Python 3 is blocked by the upload of a new Pivy,
which I prepared earlier this year.&lt;/p&gt;
&lt;p&gt;With any luck, I'll be able to help Leo finish the Coin and SoQt transition and
have Pivy prepared in December.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="gmsh-update"&gt;
&lt;h2&gt;Gmsh Update&lt;/h2&gt;
&lt;p&gt;Gmsh is a 3D finite element mesh generator with built-in pre- and
post-processing facilities. It's also one of the main meshers used by FreeCAD's
Finite Element Modeling Workbench, besides Netgen.&lt;/p&gt;
&lt;p&gt;Currently Debian has Gmsh 3.0.6, but a new major version was released in
August. I've already prepared this new major version for testing in FreeCAD's
Community Extras PPA, but I hadn't cleaned up the packaging yet to submit to
Debian. However, in November, there were two point releases, 4.0.5 and 4.0.6,
so I wasn't able to complete this work this month, but I'm sure it'll be done
in early December.&lt;/p&gt;
&lt;p&gt;One major piece of information regarding Gmsh 4 is a change in the API: the
libjava-gmsh3 package in Debian was never meant to be a public API, and so Gmsh
upstream has requested that we no longer ship it. To offset this, there have
been refinements for the actual public API, which officially comes in C, Python
3 and (new) Julia flavors. However, I haven't found much information on Julia
packaging in Debian, so I'll likely hold off on that package.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="pyside-2-rebuild-ppa-plans"&gt;
&lt;h2&gt;PySide 2 Rebuild &amp;amp; PPA Plans&lt;/h2&gt;
&lt;p&gt;Since FreeCAD is an LGPL-licensed Qt project, we must use PySide and not PyQt
to do Qt things with Python. Because of this, the FreeCAD migration to Qt 5 on
Debian was blocked by the packaging of PySide 2, which was completed by
Freexian SARL over the summer. In Debian, we now have a Qt 5-enabled FreeCAD,
although our daily builds PPA is still using Qt 4.&lt;/p&gt;
&lt;p&gt;Besides the Qt 4-&amp;gt;5 transition, we're also finishing up a Python 2-&amp;gt;3
transition. At the end of the summer I published a &lt;cite&gt;freecad-python3&lt;/cite&gt; package in
the PPA which also used Qt 5. However, it wasn't really fully usable, moreso a
proof-of-concept that such a build indeed buildable.&lt;/p&gt;
&lt;p&gt;At this point, the Debian FreeCAD package has begun to diverge from the FreeCAD
PPAs; besides Qt 5 builds not being available currently, the Debian package has
also been split into several packages (e.g. &lt;cite&gt;libfreecad&lt;/cite&gt;, &lt;cite&gt;freecad-common&lt;/cite&gt;,
etc. packages) in order to better comply with Debian Policy and the Filesystem
Hierarchy Standard.&lt;/p&gt;
&lt;p&gt;So, there's a bit of work to do to catch the PPAs up. First, the package split
needs to be done. Then, I need to upload an alternative &lt;cite&gt;freecad-daily&lt;/cite&gt; package
for Qt 5 builds, separate from Python 3. Once that is done and has undergone
some testing, &lt;cite&gt;freecad-daily&lt;/cite&gt; can be replaced by it, and it in turn can be
replaced by a &lt;cite&gt;freecad-python3&lt;/cite&gt; package for further testing. Since FreeCAD's
0.18 release is imminent, I'll need to get this taken care of during December,
so stay tuned.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="packaging-in-progress"&gt;
&lt;h2&gt;Packaging in Progress&lt;/h2&gt;
&lt;p&gt;My first packaging list is all the software I've already started packaging. For
some, it's almost complete, and for others, I've only just begun.&lt;/p&gt;
&lt;p&gt;The purpose of these lists is not to give status updates, but to announce what
all I'm interested in to anyone reading this, and to give an idea of how much
packaging work I have in mind to improve this usage of Debian.&lt;/p&gt;
&lt;section id="cantera"&gt;
&lt;h3&gt;cantera&lt;/h3&gt;
&lt;section id="homepage-github"&gt;
&lt;h4&gt;&lt;a class="reference external" href="https://cantera.org/"&gt;Homepage&lt;/a&gt;, &lt;a class="reference external" href="https://github.com/Cantera/cantera"&gt;GitHub&lt;/a&gt;&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;Cantera is an open-source suite of tools for problems involving chemical
kinetics, thermodynamics, and transport processes.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I had this package working and waiting to be sponsored, but it looks like it currently fails
to build from source, so this just requires some maintenance.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="coolprop"&gt;
&lt;h3&gt;coolprop&lt;/h3&gt;
&lt;section id="homepage-github-1"&gt;
&lt;h4&gt;&lt;a class="reference external" href="http://www.coolprop.org/"&gt;Homepage&lt;/a&gt;, &lt;a class="reference external" href="https://github.com/CoolProp/CoolProp"&gt;GitHub&lt;/a&gt;&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;CoolProp is a thermophysical property database and wrappers for a selection
of programming environments. It offers similar functionality to REFPROP,
although CoolProp is open-source and free.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This package was previously building completely, but failing when one would attempt to do
an &lt;cite&gt;import coolprop&lt;/cite&gt;. Now that it's been a while since I worked with it, it
seems to be failing to build.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="elmerfem"&gt;
&lt;h3&gt;elmerfem&lt;/h3&gt;
&lt;section id="homepage-github-2"&gt;
&lt;h4&gt;&lt;a class="reference external" href="http://www.elmerfem.org/"&gt;Homepage&lt;/a&gt;, &lt;a class="reference external" href="https://github.com/ElmerCSC/elmerfem"&gt;GitHub&lt;/a&gt;&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;Elmer is a finite element software for numerical solution of partial
differential equations. Elmer is capable of handling any number of equations
and is therefore ideally suited for the simulation of multiphysical problems.
It includes models, for example, of structural mechanics, fluid dynamics, heat
transfer and electromagnetics. Users can also write their own equations that
can be dynamically linked with the main program.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This was previously in Debian but removed due to abandonment, so a great deal
of the work is already done, but it also requires quite a bit of updating to
current Debian standards.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="if97"&gt;
&lt;h3&gt;if97&lt;/h3&gt;
&lt;section id="pdf-standard-github"&gt;
&lt;h4&gt;&lt;a class="reference external" href="http://www.iapws.org/relguide/IF97-Rev.pdf"&gt;PDF Standard&lt;/a&gt;, &lt;a class="reference external" href="https://github.com/CoolProp/IF97"&gt;GitHub&lt;/a&gt;&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;Open-source C++ implementation of the IAPWS-IF97 equations to calculate
properties of the pure water substance.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is a dependency of CoolProp, and I already have it packaged and waiting
for sponsorship at &lt;a class="reference external" href="https://salsa.debian.org/science-team/if97"&gt;https://salsa.debian.org/science-team/if97&lt;/a&gt;.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="ifcopenshell"&gt;
&lt;h3&gt;ifcopenshell&lt;/h3&gt;
&lt;section id="homepage-github-3"&gt;
&lt;h4&gt;&lt;a class="reference external" href="http://www.ifcopenshell.org/"&gt;Homepage&lt;/a&gt;, &lt;a class="reference external" href="https://github.com/IfcOpenShell/IfcOpenShell"&gt;GitHub&lt;/a&gt;&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;IfcOpenShell is an open source (LGPL) software library that helps users and
software developers to work with the IFC file format. The IFC file format
can be used to describe building and construction data. The format is
commonly used for Building Information Modelling. IfcOpenShell uses
OpenCASCADE internally to convert the implicit geometry in IFC files into
explicit geometry that any software CAD or modelling package can
understand.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I already have this packaged and awaiting sponsorship at &lt;a class="reference external" href="https://salsa.debian.org/kkremitzki-guest/ifcopenshell"&gt;https://salsa.debian.org/kkremitzki-guest/ifcopenshell&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It's also available on the &lt;a class="reference external" href="https://launchpad.net/~freecad-community/+archive/ubuntu/ppa"&gt;FreeCAD Community Extras PPA&lt;/a&gt;.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="ifcplusplus"&gt;
&lt;h3&gt;ifcplusplus&lt;/h3&gt;
&lt;section id="homepage-github-4"&gt;
&lt;h4&gt;&lt;a class="reference external" href="http://ifcquery.com/"&gt;Homepage&lt;/a&gt;, &lt;a class="reference external" href="https://github.com/ifcquery/ifcplusplus"&gt;GitHub&lt;/a&gt;&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;IfcPlusPlus is an open source C++ class model, as well as a reader and
writer for IFC files in STEP format. It features easy and efficient memory
management using smart pointers, a parallel reader for fast parsing on
multi-core CPU's, and a simple IFC viewer application using Qt and
OpenSceneGraph.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I already have this packaged and awaiting sponsorship at &lt;a class="reference external" href="https://salsa.debian.org/kkremitzki-guest/ifcplusplus"&gt;https://salsa.debian.org/kkremitzki-guest/ifcplusplus&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It's also available on the &lt;a class="reference external" href="https://launchpad.net/~freecad-community/+archive/ubuntu/ppa"&gt;FreeCAD Community Extras PPA&lt;/a&gt;.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="opencamlib"&gt;
&lt;h3&gt;opencamlib&lt;/h3&gt;
&lt;section id="homepage-github-5"&gt;
&lt;h4&gt;&lt;a class="reference external" href="http://www.anderswallin.net/tag/opencamlib/"&gt;Homepage&lt;/a&gt;, &lt;a class="reference external" href="https://github.com/aewallin/opencamlib"&gt;GitHub&lt;/a&gt;&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;OpenCAMLib (OCL) is a C++ library with Python bindings for creating 3D
toolpaths for CNC-machines such as mills and lathes.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I already have this packaged and awaiting sponsorship at &lt;a class="reference external" href="https://salsa.debian.org/science-team/opencamlib"&gt;https://salsa.debian.org/science-team/opencamlib&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It's also available on the &lt;a class="reference external" href="https://launchpad.net/~freecad-community/+archive/ubuntu/ppa"&gt;FreeCAD Community Extras PPA&lt;/a&gt;.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="openvoronoi"&gt;
&lt;h3&gt;openvoronoi&lt;/h3&gt;
&lt;section id="homepage-github-6"&gt;
&lt;h4&gt;&lt;a class="reference external" href="http://www.anderswallin.net/category/cnc/cam/openvoronoi/"&gt;Homepage&lt;/a&gt;, &lt;a class="reference external" href="https://github.com/aewallin/openvoronoi"&gt;GitHub&lt;/a&gt;&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;2D voronoi diagram for point and line-segment sites using incremental
topology-oriented algorithm. C++ with Python bindings.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I already have this packaged and awaiting sponsorship at &lt;a class="reference external" href="https://salsa.debian.org/kkremitzki-guest/openvoronoi"&gt;https://salsa.debian.org/kkremitzki-guest/openvoronoi&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It's also available on the &lt;a class="reference external" href="https://launchpad.net/~freecad-community/+archive/ubuntu/ppa"&gt;FreeCAD Community Extras PPA&lt;/a&gt;.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="projectchrono"&gt;
&lt;h3&gt;projectchrono&lt;/h3&gt;
&lt;section id="homepage-github-7"&gt;
&lt;h4&gt;&lt;a class="reference external" href="https://projectchrono.org/"&gt;Homepage&lt;/a&gt;, &lt;a class="reference external" href="https://github.com/projectchrono/chrono"&gt;GitHub&lt;/a&gt;&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;C++ library for multi-physics simulation. The applications areas in which
Chrono is most often used are vehicle dynamics, robotics, and machine
design. In vehicle dynamics, Chrono has mature support for tire/terrain
interaction modeling and simulation.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I've only roughly begun packaging this, and I'm already tired of typing
&lt;cite&gt;libprojectchrono&lt;/cite&gt;. Anyway, it's a rather large set of components which will be
broken up into several packages. Luckily, things are done in a pretty normal
way so I don't imagine this will be difficult to finish packaging, just a
little time-costly.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="smesh"&gt;
&lt;h3&gt;smesh&lt;/h3&gt;
&lt;section id="github"&gt;
&lt;h4&gt;&lt;a class="reference external" href="https://github.com/LaughlinResearch/smesh"&gt;GitHub&lt;/a&gt;&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;A stand-alone library of the mesh framework from the Salome Platform&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I've gotten this standalone version of SMESH packaged and awaiting sponsorship
at &lt;a class="reference external" href="https://salsa.debian.org/kkremitzki-guest/salome-smesh"&gt;https://salsa.debian.org/kkremitzki-guest/salome-smesh&lt;/a&gt;.  Eventually, I want
to package the entire Salome Platform, but it's extremely large and really
several source packages. Packaging this as an intermediate step allows us to
remove SMESH from FreeCAD's included sources.&lt;/p&gt;
&lt;p&gt;It's also available on the &lt;a class="reference external" href="https://launchpad.net/~freecad-community/+archive/ubuntu/ppa"&gt;FreeCAD Community Extras PPA&lt;/a&gt;.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="xcfem"&gt;
&lt;h3&gt;xcfem&lt;/h3&gt;
&lt;section id="homepage-github-8"&gt;
&lt;h4&gt;&lt;a class="reference external" href="https://sites.google.com/site/xcfemanalysis/"&gt;Homepage&lt;/a&gt;, &lt;a class="reference external" href="https://github.com/xcfem/xc"&gt;GitHub&lt;/a&gt;&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;XC is an open source FEA program designed to solve structural analysis
problems.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This library is supposed to be an alternative to the not-quite-freely licensed
OpenSees, which is used in seismic research and analysis. There has been some
interest in the FreeCAD forums about using this, so I'm beginning packaging it
in advance. However, it seems a bit complicated as it requires multiple
sources, the GitHub &lt;cite&gt;xcfem/xc&lt;/cite&gt; repo as well as &lt;cite&gt;xcfem/xc_utils&lt;/cite&gt;.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="wishlist-packages"&gt;
&lt;h2&gt;Wishlist Packages&lt;/h2&gt;
&lt;section id="geom"&gt;
&lt;h3&gt;2geom&lt;/h3&gt;
&lt;section id="homepage-gitlab"&gt;
&lt;h4&gt;&lt;a class="reference external" href="http://lib2geom.sourceforge.net/"&gt;Homepage&lt;/a&gt;, &lt;a class="reference external" href="https://gitlab.com/inkscape/lib2geom"&gt;GitLab&lt;/a&gt;&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;lib2geom (2Geom in private life) was initially a library developed for
Inkscape but will provide a robust computational geometry framework for any
application. It is not a rendering library, instead concentrating on high
level algorithms such as computing arc length.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I looked at this package and it seemed like it will be straightforward to
package, and with the parent project's popularity, someone else may get to it
first.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="bimserver"&gt;
&lt;h3&gt;bimserver&lt;/h3&gt;
&lt;section id="homepage-github-9"&gt;
&lt;h4&gt;&lt;a class="reference external" href="https://kwk.systems/blog/posts/free-software-activities-in-november-2018/bimserver.org"&gt;Homepage&lt;/a&gt;, &lt;a class="reference external" href="https://github.com/opensourceBIM/BIMserver"&gt;GitHub&lt;/a&gt;&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;The Building Information Model server (short: BIMserver) enables you to
store and manage the information of a construction (or other building
related) project. Data is stored in the open standard IFC. The BIMserver is
not a fileserver, but it uses a model-driven architecture approach. This
means that IFC data is stored in an underlying database. The main advantage
of this approach is the ability to query, merge and filter the BIM-model
and generate IFC files on the fly.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The integration of BIM with FreeCAD is a very promising endeavor, and letting
FreeCAD be the client in a client-server model provides many potential
benefits. (This is the reason I'm working on PostCAD.) Packaging BIMserver
is a natural decision, then. However, it's a Java application, which I have
little experience with language-wise and none in terms of packaging it in
Debian, so this one has a bit of a difficulty associated with it.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="cadquery"&gt;
&lt;h3&gt;cadquery&lt;/h3&gt;
&lt;section id="homepage-github-10"&gt;
&lt;h4&gt;&lt;a class="reference external" href="https://dcowden.github.io/cadquery/index.html"&gt;Homepage&lt;/a&gt;, &lt;a class="reference external" href="https://github.com/dcowden/cadquery"&gt;GitHub&lt;/a&gt;&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;CadQuery is an intuitive, easy-to-use python based language for building
parametric 3D CAD models. CadQuery is for 3D CAD what jQuery is for
javascript. Imagine selecting Faces of a 3d object the same way you select
DOM objects with JQuery!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;CadQuery is an interesting project which actually makes use of FreeCAD, and
indeed FreeCAD even has a CadQuery Workbench. This would be nice to package as
a way of extending the FreeCAD ecosystem on Debian.&lt;/p&gt;
&lt;p&gt;Unfortunately, CadQuery 2 is planning on moving away from FreeCAD to PythonOCC,
which is based on the now behind-the-times OpenCASCADE Community Edition fork,
based on OpenCASCADE 6.9.1; FreeCAD and other projects are moving back to the
mainline OpenCASCADE Technology project which is about to release version
7.4.0. It would be nice if both CadQuery and FreeCAD could instead move to use
PyOCCT as a middle-layer between itself and OpenCASCADE.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="libreoffice-code-highlighter"&gt;
&lt;h3&gt;libreoffice-code-highlighter&lt;/h3&gt;
&lt;section id="homepage-github-11"&gt;
&lt;h4&gt;&lt;a class="reference external" href="https://extensions.libreoffice.org/extensions/code-highlighter"&gt;Homepage&lt;/a&gt;, &lt;a class="reference external" href="https://github.com/slgobinath/libreoffice-code-highlighter"&gt;GitHub&lt;/a&gt;&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;This extension highlights the code snippets for over 350 languages in
LibreOffice.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I have packaged a LibreOffice extension before, and it was fairly easy, so I expect this one will be too. However its priority is rather low.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="lib3mf"&gt;
&lt;h3&gt;lib3mf&lt;/h3&gt;
&lt;section id="homepage-github-12"&gt;
&lt;h4&gt;&lt;a class="reference external" href="https://3mf.io/"&gt;Homepage&lt;/a&gt;, &lt;a class="reference external" href="https://github.com/3MFConsortium/lib3mf"&gt;GitHub&lt;/a&gt;&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;Lib3MF is a C++ implementation of the 3D Manufacturing Format file standard.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This seems like a straightforward library to package, but there is no pressing need as FreeCAD does not support it yet.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="muesli"&gt;
&lt;h3&gt;muesli&lt;/h3&gt;
&lt;section id="homepage-bitbucket"&gt;
&lt;h4&gt;&lt;a class="reference external" href="https://materials.imdea.org/research/simulation-tools/muesli/"&gt;Homepage&lt;/a&gt;, &lt;a class="reference external" href="https://bitbucket.org/ignromero/muesli"&gt;BitBucket&lt;/a&gt;&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;MUESLI, a Material UnivErSal LIbrary, is a collection of C++ classes and
functions designed to model material behavior at the continuum level.
Developed at IMDEA Materials, it is available to the material science and
computational mechanics community as a suite of standard models and as a
platform for developing new ones.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This seems like a great candidate package for Debian Science but I have had
some difficulty building it, which I need to conquer before packaging can
begin.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="cling"&gt;
&lt;h3&gt;cling&lt;/h3&gt;
&lt;section id="homepage-github-13"&gt;
&lt;h4&gt;&lt;a class="reference external" href="https://root.cern.ch/cling"&gt;Homepage&lt;/a&gt;, &lt;a class="reference external" href="https://github.com/root-project/cling"&gt;GitHub&lt;/a&gt;&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;Cling is an interactive C++ interpreter, built on top of Clang and LLVM
compiler infrastructure. Cling realizes the read-eval-print loop (REPL)
concept, in order to leverage rapid application development. Implemented as
a small extension to LLVM and Clang, the interpreter reuses their strengths
such as the praised concise and expressive compiler diagnostics.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;cling is an incredible project which should have been packaged already.
Hopefully someone else gets to it first.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="dpkg-licenses"&gt;
&lt;h3&gt;dpkg-licenses&lt;/h3&gt;
&lt;section id="github-1"&gt;
&lt;h4&gt;&lt;a class="reference external" href="https://github.com/daald/dpkg-licenses"&gt;GitHub&lt;/a&gt;&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;A command line tool which lists the licenses of all installed packages in a Debian-based system (like Ubuntu)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is a small script which gives a summary of the licenses used by the installed packages on your system--a good way to audit packages, e.g. forbidding AGPL.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="landlab"&gt;
&lt;h3&gt;landlab&lt;/h3&gt;
&lt;section id="homepage-github-14"&gt;
&lt;h4&gt;&lt;a class="reference external" href="https://landlab.github.io/#/#install"&gt;Homepage&lt;/a&gt;, &lt;a class="reference external" href="https://github.com/landlab/landlab"&gt;GitHub&lt;/a&gt;&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;Landlab is a Python-based modeling environment that allows scientists and
students to build numerical landscape models. Designed for disciplines
that quantify earth surface dynamics such as geomorphology, hydrology,
glaciology, and stratigraphy, it can also be used in related fields.&lt;/p&gt;
&lt;p&gt;Landlab provides components to compute flows (such as water, sediment,
glacial ice, volcanic material, or landslide debris) across a gridded
terrain. With its robust, reusable components, Landlab allows scientists
to quickly build landscape model experiments and compute mass balance
across scales.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Landlab is another interesting Debian Science candidate but I have no pressing need to package it.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="nikola"&gt;
&lt;h3&gt;nikola&lt;/h3&gt;
&lt;section id="homepage-github-15"&gt;
&lt;h4&gt;&lt;a class="reference external" href="https://getnikola.com/"&gt;Homepage&lt;/a&gt;, &lt;a class="reference external" href="https://github.com/getnikola/nikola"&gt;GitHub&lt;/a&gt;&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;A static website and blog generator, written in Python.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Nikola is what I use to create this blog, but it's somewhat fast moving and a
slow maintainer in Debian previously caused problems, so I don't want to pick
this up until I've leveled up my package maintenance.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="osifont"&gt;
&lt;h3&gt;osifont&lt;/h3&gt;
&lt;section id="homepage-github-16"&gt;
&lt;h4&gt;&lt;a class="reference external" href="https://fontlibrary.org/en/font/osifont"&gt;Homepage&lt;/a&gt;, &lt;a class="reference external" href="https://github.com/hikikomori82/osifont"&gt;GitHub&lt;/a&gt;&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;In some European countries, CAD projects must have font which conform to
IS0 3O98 specification. Commercial CADs has this font, but free CADs not.
There is no available free font yet, so this project will fix this. This
font will be created completely from the scratch. Font is created with free
tools like FontForge, Inkscape, Gimp. Font is available under 3 licences:
GNU GPL licence version 3 with GPL font exception, GNU GPL licence version
2 with GPL font exception, GNU LGPL licence version 3 with GPL font
exception.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is a bundled font with FreeCAD, so I'd like to separate into its own
package. However, the need to package it is not pressing, so I haven't picked
it up.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="pigpio"&gt;
&lt;h3&gt;pigpio&lt;/h3&gt;
&lt;section id="homepage-github-17"&gt;
&lt;h4&gt;&lt;a class="reference external" href="http://abyz.me.uk/rpi/pigpio/"&gt;Homepage&lt;/a&gt;, &lt;a class="reference external" href="https://github.com/joan2937/pigpio"&gt;GitHub&lt;/a&gt;&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;pigpio is a C library for the Raspberry which allows control of the General
Purpose Input Outputs (GPIO).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is an important tool for teaching with Raspberry Pi's and should be
packaged as soon as possible, I've just had more pressing concerns.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="piscope"&gt;
&lt;h3&gt;piscope&lt;/h3&gt;
&lt;section id="homepage-github-18"&gt;
&lt;h4&gt;&lt;a class="reference external" href="http://abyz.me.uk/rpi/pigpio/piscope.html"&gt;Homepage&lt;/a&gt;, &lt;a class="reference external" href="https://github.com/joan2937/piscope"&gt;GitHub&lt;/a&gt;&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;A logic analyser (digital waveform viewer).  piscope uses the services of
the pigpio library. pigpio needs to be running on the Pi whose gpios are to
be monitored.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Being able to see the waveform of a GPIO pin on a Raspberry Pi is incredibly
useful for teaching robotics and electrical engineering classes with them. This
also needs to be packaged.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="pyocct"&gt;
&lt;h3&gt;pyocct&lt;/h3&gt;
&lt;section id="github-2"&gt;
&lt;h4&gt;&lt;a class="reference external" href="https://github.com/LaughlinResearch/pyOCCT"&gt;GitHub&lt;/a&gt;&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;The pyOCCT project provides Python bindings to the OpenCASCADE 7.2.0
geometry kernel and SMESH 8.3.0 meshing library via pybind11. Together,
this technology stack enables rapid CAD/CAE application development in the
popular Python programming language.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is a very promising library for Python OpenCASCADE development, so I'd
like to get it packaged, but it's blocked by getting SMESH packaged.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="pyray"&gt;
&lt;h3&gt;pyray&lt;/h3&gt;
&lt;section id="github-3"&gt;
&lt;h4&gt;&lt;a class="reference external" href="https://github.com/ryu577/pyray"&gt;GitHub&lt;/a&gt;&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;A 3D rendering library written completely in Python.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;A promising library for integrating raytracing functionality directly into
FreeCAD, and for general raytracing in Python.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="quarter"&gt;
&lt;h3&gt;quarter&lt;/h3&gt;
&lt;section id="bitbucket"&gt;
&lt;h4&gt;&lt;a class="reference external" href="https://bitbucket.org/Coin3D/quarter"&gt;BitBucket&lt;/a&gt;&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;Quarter is a light-weight glue library that provides seamless integration
between the Coin high-level 3D visualization library and Qt's 2D user
interface library.  The functionality in Quarter revolves around
QuarterWidget, a subclass of QGLWidget. This widget provides functionality
for rendering of Coin scenegraphs and translation of QEvents into SoEvents.
Using this widget is as easy as using any other QWidget.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;FreeCAD already uses an included (and slightly modified) copy of Quarter in its
source, so I'd like to package Quarter in a standalone fashion as part of
moving FreeCAD away from bundled copies in its source.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="rebound"&gt;
&lt;h3&gt;rebound&lt;/h3&gt;
&lt;section id="homepage-github-19"&gt;
&lt;h4&gt;&lt;a class="reference external" href="https://rebound.readthedocs.io/en/latest/"&gt;Homepage&lt;/a&gt;, &lt;a class="reference external" href="https://github.com/hannorein/rebound"&gt;GitHub&lt;/a&gt;&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;REBOUND is an N-body integrator, i.e. a software package that can integrate
the motion of particles under the influence of gravity. The particles can
represent stars, planets, moons, ring or dust particles. REBOUND is very
flexible and can be customized to accurately and efficiently solve many
problems in astrophysics.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This seems like a really great library to have in Debian Science, but it's not a priority.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="sqlint"&gt;
&lt;h3&gt;sqlint&lt;/h3&gt;
&lt;section id="github-4"&gt;
&lt;h4&gt;&lt;a class="reference external" href="https://github.com/purcell/sqlint"&gt;GitHub&lt;/a&gt;&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;SQLint is a simple command-line linter which reads your SQL files and
reports any syntax errors or warnings it finds.&lt;/p&gt;
&lt;p&gt;At this stage, SQLint checks SQL against the ANSI syntax, and uses the
PostgreSQL SQL parser to achieve this. In time, we hope to add support for
non-standard SQL variants (e.g. MySQL). Contributions are welcome.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This would be a very useful utility to have in Debian, but I always write SQL without flaw the first try. (wink)&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="swatmodel"&gt;
&lt;h3&gt;swatmodel&lt;/h3&gt;
&lt;section id="homepage-github-20"&gt;
&lt;h4&gt;&lt;a class="reference external" href="https://swat.tamu.edu/"&gt;Homepage&lt;/a&gt;, &lt;a class="reference external" href="https://github.com/WatershedModels/SWAT"&gt;GitHub&lt;/a&gt;&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;The Soil &amp;amp; Water Assessment Tool is a small watershed to river basin-scale
model used to simulate the quality and quantity of surface and ground water
and predict the environmental impact of land use, land management
practices, and climate change. SWAT is widely used in assessing soil
erosion prevention and control, non-point source pollution control and
regional management in watersheds.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;SWAT is a powerful research tool in agricultural engineering, among several
others I'm interested in eventually packaging for Debian. The planned package
will be based on a CMake-enabled fork of the upstream source, which is built
with Intel's Fortran compiler by default and also had to be adapted for
gfortran.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="wger"&gt;
&lt;h3&gt;wger&lt;/h3&gt;
&lt;section id="homepage-github-21"&gt;
&lt;h4&gt;&lt;a class="reference external" href="https://wger.de/en/software/features"&gt;Homepage&lt;/a&gt;, &lt;a class="reference external" href="https://github.com/wger-project/wger"&gt;GitHub&lt;/a&gt;&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;Self hosted FLOSS fitness/workout and weight tracker written with Django&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is a very promising application which could be used as both a fitness
tracker as well as a weight/nutrition tracker, something along the lines of a
self-hosted MyFitnessPal. However, my other packaging priorities outweigh this
at the moment.&lt;/p&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;/section&gt;
&lt;section id="conclusion"&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;So, there you have it! My mostly complete list of in-progress and wishlist
items for Debian packaging. If you have any feedback on packages on the list,
or want to get in touch with me, you can find me &lt;a class="reference external" href="https://twitter.com/thekurtwk"&gt;on Twitter&lt;/a&gt; or send me an email at kurt at kwk.systems.
I'll also be starting to stream my Debian &amp;amp; FreeCAD work very soon, &lt;a class="reference external" href="https://twitch.tv/kkremitzki"&gt;subscribe
to me on Twitch&lt;/a&gt; to get notified when I go
live.&lt;/p&gt;
&lt;/section&gt;</description><category>debian</category><category>freecad</category><category>postcad</category><guid>https://kwk.systems/blog/posts/free-software-activities-in-november-2018/</guid><pubDate>Wed, 19 Dec 2018 05:20:10 GMT</pubDate></item><item><title>GSoC Week 5 recap</title><link>https://kwk.systems/blog/posts/gsoc-week-5-recap/</link><dc:creator>Kurt Kremitzki</dc:creator><description>&lt;p&gt;This week started out with some interesting discussions on the future Python structure of FreeCAD, over
&lt;a class="reference external" href="https://forum.freecadweb.org/viewtopic.php?f=10&amp;amp;t=23197"&gt;on the forums&lt;/a&gt;. This was especially salient
as I have a bit of pain interacting with parts of the FreeCAD Python API and improvements to it would
be a good long-term goal after finishing GSoC.&lt;/p&gt;
&lt;p&gt;I decided that the &lt;code class="docutils literal"&gt;TestPartDesignApp.py&lt;/code&gt; file I had been working in thus far needed splitting up,
as I was cramming almost every new test into it.
The &lt;a class="reference external" href="https://github.com/FreeCAD/FreeCAD/blob/master/src/Mod/PartDesign/TestPartDesignApp.py"&gt;new version of this file&lt;/a&gt;
is a pretty nice indicator of the overall status of PartDesign test coverage.&lt;/p&gt;
&lt;p&gt;I also added some basic tests for datum tools, covering simple creation scenarios. While exploring the 4th datum
tool, &lt;code class="docutils literal"&gt;ShapeBinder&lt;/code&gt;, I found a bug that causes a crash, so I will need to look into that shortly to see if it's an
easy fix.&lt;/p&gt;
&lt;p&gt;&lt;code class="docutils literal"&gt;LinearPattern&lt;/code&gt; and &lt;code class="docutils literal"&gt;PolarPattern&lt;/code&gt; got 6 new tests each, covering all the major variations of sketch-
or primitive-based features.&lt;/p&gt;
&lt;p&gt;Finally, I added one new test for each of the dressup features, &lt;code class="docutils literal"&gt;Fillet&lt;/code&gt;, &lt;code class="docutils literal"&gt;Chamfer&lt;/code&gt;, &lt;code class="docutils literal"&gt;Draft&lt;/code&gt;, and &lt;code class="docutils literal"&gt;Thickness&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Here's the pull request summarizing my work: &lt;a class="reference external" href="https://github.com/FreeCAD/FreeCAD/pull/869"&gt;https://github.com/FreeCAD/FreeCAD/pull/869&lt;/a&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;th class="head"&gt;&lt;p&gt;tool category&lt;/p&gt;&lt;/th&gt;
&lt;th class="head"&gt;&lt;p&gt;initial, current test count&lt;/p&gt;&lt;/th&gt;
&lt;th class="head"&gt;&lt;p&gt;status&lt;/p&gt;&lt;/th&gt;
&lt;th class="head"&gt;&lt;p&gt;notes&lt;/p&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;datum tools&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0, 3&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;ready&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;found shapebinder crash bug&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;add. &amp;amp; sub. features/primitives&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;15, 15&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;ready&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;transformations&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;3, 15&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;ready&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;all done but MultiTransform&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;dressup features&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0, 4&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;ready&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;boolean operation&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0, 0&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;ready&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</description><category>freecad</category><category>gsoc</category><guid>https://kwk.systems/blog/posts/gsoc-week-5-recap/</guid><pubDate>Tue, 11 Jul 2017 19:45:35 GMT</pubDate></item><item><title>GSoC Week 4 recap</title><link>https://kwk.systems/blog/posts/gsoc-week-4-recap/</link><dc:creator>Kurt Kremitzki</dc:creator><description>&lt;p&gt;I started this week out with the goal of troubleshooting the bugs I found with PartDesign Pipe and Revolve.
However, I ended up running into several annoying issues. The LLDB debugging integration I previously wrote about
began showing some inexplicable errors:&lt;/p&gt;
&lt;pre class="literal-block"&gt;error caught in async handler 'exec ('continue',)'
Traceback (most recent call last):
  File "/home/kurt/.config/nvim/bundles/repos/github.com/dbgx/lldb.nvim/rplugin/python/lldb_nvim/__init_
_.py", line 49, in _exec
    self.ctrl.safe_execute(args)
  File "/home/kurt/.config/nvim/bundles/repos/github.com/dbgx/lldb.nvim/rplugin/python/lldb_nvim/control
ler.py", line 101, in safe_execute
    self.safe_call(self.exec_command, [cmd])
  File "/home/kurt/.config/nvim/bundles/repos/github.com/dbgx/lldb.nvim/rplugin/python/lldb_nvim/control
ler.py", line 94, in safe_call
    raise EventLoopError("Dead event loop!")
EventLoopError: Dead event loop!&lt;/pre&gt;
&lt;p&gt;Eventually I found &lt;a class="reference external" href="https://github.com/dbgx/lldb.nvim/issues/52"&gt;an issue on Github&lt;/a&gt; which refers to
a now-deleted comment in the author's original repository, stating the project was no longer being developed.
The question remains as to how it was working just fine when I began and only just now stopped working, but
the end result was that my debugger-editor integration was broken, which makes it quite a bit tougher to debug
the C++ side of the codebase.&lt;/p&gt;
&lt;p&gt;One option I had was to just use GDB as a standalone command line application, but it's really convenient, e.g.
to not have to manually type out file names and line numbers for breakpoints, and otherwise have your debugger
wired up to your editor.&lt;/p&gt;
&lt;p&gt;However, this was inexplicably not working either! Basic features of GDB worked, but trying to specify breakpoints
to step through the code was not. I banged my head on this issue for a while until I figured up &lt;code class="docutils literal"&gt;ccmake&lt;/code&gt; to
take a look at my build options. The issue? Somehow, the &lt;code class="docutils literal"&gt;CMAKE_BUILD_TYPE&lt;/code&gt;, which had been set to &lt;code class="docutils literal"&gt;Debug&lt;/code&gt;,
was unset. So, I set it again and started the debug build, which takes quite a long time.
(Around 2 hours with &lt;code class="docutils literal"&gt;make &lt;span class="pre"&gt;-j4&lt;/span&gt;&lt;/code&gt;.)&lt;/p&gt;
&lt;p&gt;I also did more research on options for debugger integration. I found an interesting option called Pyclewn
which is a debugger front-end for (neo)vim. This option was attractive since I could have a unified front-end
to both my C++ debugger as well as a Python one. However, setup wasn't straightforward, so I continued searching
for a simpler option.&lt;/p&gt;
&lt;p&gt;Luckily, I stumbled upon &lt;a class="reference external" href="https://github.com/neovim/neovim/blob/master/contrib/gdb/neovim_gdb.vim"&gt;neovim_gdb.vim&lt;/a&gt;,
a simple combination of vim settings, available in the &lt;code class="docutils literal"&gt;contrib&lt;/code&gt; folder of the neovim repository.&lt;/p&gt;
&lt;p&gt;Once that was taken care of, I started working on my original objective for the week. I found that the
PartDesign Pipe issue was being caused by the code checking for whether or not the Pipe's AuxillerySpine (sic)
was a part of the active body, but didn't check if the thing existed first. This resulted in a check to
see if a null pointer was part of the active body, which is never the case. Checking for existence first
&lt;a class="reference external" href="https://github.com/FreeCAD/FreeCAD/pull/848"&gt;resolved the issue&lt;/a&gt;. With that bug fixed, I also added
two tests each for PartDesign Pipe and Loft.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;th class="head"&gt;&lt;p&gt;tool category&lt;/p&gt;&lt;/th&gt;
&lt;th class="head"&gt;&lt;p&gt;initial, current test count&lt;/p&gt;&lt;/th&gt;
&lt;th class="head"&gt;&lt;p&gt;status&lt;/p&gt;&lt;/th&gt;
&lt;th class="head"&gt;&lt;p&gt;notes&lt;/p&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;datum tools&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0, 0&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;ready&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;add. &amp;amp; sub. features/primitives&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;11, 15&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;ready&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;all additive &amp;amp; subtractive
features now have at least
one test&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;transformations&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;3, 3&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;ready&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;dressup features&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0, 0&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;ready&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;boolean operation&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0, 0&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;ready&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</description><category>freecad</category><category>gsoc</category><guid>https://kwk.systems/blog/posts/gsoc-week-4-recap/</guid><pubDate>Fri, 30 Jun 2017 10:48:06 GMT</pubDate></item><item><title>GSoC Week 3 recap</title><link>https://kwk.systems/blog/posts/gsoc-week-3-recap/</link><dc:creator>Kurt Kremitzki</dc:creator><description>&lt;p&gt;Howdy! I wasn't sure of the best way to represent my progress thus far, but I figure a table is an alright way to summarize.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;th class="head"&gt;&lt;p&gt;tool category&lt;/p&gt;&lt;/th&gt;
&lt;th class="head"&gt;&lt;p&gt;initial, current test count&lt;/p&gt;&lt;/th&gt;
&lt;th class="head"&gt;&lt;p&gt;status&lt;/p&gt;&lt;/th&gt;
&lt;th class="head"&gt;&lt;p&gt;notes&lt;/p&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;datum tools&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0, 0&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;hold&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;waiting on attachment
editor work in phase 2&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;add. &amp;amp; sub. features/primitives&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;3, 11&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;blocked&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;basic Pipe not working; when
fixed, all tools in this
category (but not all their
options) will have test
coverage&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;transformations&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0, 3&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;ready&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;Mirrored added, still need
Linear and PolarPattern&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;dressup features&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0, 0&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;ready&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;boolean operation&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;0, 0&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;ready&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;Previously seemed to
misbehave but recent changes
to containers may have fixed
this&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;I got my Pad &amp;amp; Pocket tests added, so right now the total Δtests is 11. Next up is Loft and Pipe. However,
Pipe has a bit of a blocking bug right now. My test scenario involves a simple circle centered at the origin
in an XY-attached sketch, serving as the base Profile, and a simple line on the Z axis in an XZ-attached sketch.
The test construction is illustrated in figure 1.&lt;/p&gt;
&lt;p&gt;This should result in a cylinder, as the preview indicates in figure 2. For some reason, when clicking OK,
an external reference warning is being generated, and this is blocking any test constructions for PartDesign Pipe.&lt;/p&gt;
&lt;figure class="align-center"&gt;
&lt;img alt="test pipe construction" src="https://kwk.systems/blog/images/gsoc-3-3.png" style="width: 300px;"&gt;
&lt;figcaption&gt;
&lt;p&gt;Figure 1. PartDesign Pipe Profile and Spine sketches which should form a simple cylinder.&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="align-center"&gt;
&lt;img alt="external reference warning" src="https://kwk.systems/blog/images/gsoc-3-4.png" style="width: 600px;"&gt;
&lt;figcaption&gt;
&lt;p&gt;Figure 2. PartDesign Pipe erroneously warning about external references.&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;I also ran into a bug in PartDesign Revolve, which, as bugs are wont to do, ended up being two bugs.
The construction case to see them is depicted in figure 3.&lt;/p&gt;
&lt;figure class="align-center"&gt;
&lt;img alt="revolution sketches" src="https://kwk.systems/blog/images/gsoc-3-1.png" style="width: 300px;"&gt;
&lt;figcaption&gt;
&lt;p&gt;Figure 3. Simple sketches attached to the three base planes.&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;I attached a simple circle sketch to each of the three base planes, and offset them so they wouldn't be symmetric
with respect to the origin or any base axes. When attempting to add a Revolution with these sketches, they behave
as expected, until one attempts to revolve them about the axis which is normal to the sketch's plane. For the
XY- and YZ-attached sketches, the following error appears:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Unhandled Base::Exception caught in GUIApplication::notify.
The error message is: Rotation axis must not be perpendicular with the sketch plane&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;However, if one tries to revolve the XZ-attached circle, FreeCAD gives it the ol' college try, but
ends up with an awfully thin "solid":&lt;/p&gt;
&lt;figure class="align-center"&gt;
&lt;img alt="faulty revolution" src="https://kwk.systems/blog/images/gsoc-3-2.png" style="width: 300px;"&gt;
&lt;figcaption&gt;
&lt;p&gt;Figure 4. An "error-free" PartDesign Revolution.&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;I'll also be looking into these bugs this week.&lt;/p&gt;</description><category>freecad</category><category>gsoc</category><guid>https://kwk.systems/blog/posts/gsoc-week-3-recap/</guid><pubDate>Thu, 22 Jun 2017 16:15:49 GMT</pubDate></item><item><title>GSoC Week 2 recap</title><link>https://kwk.systems/blog/posts/gsoc-week-2-recap/</link><dc:creator>Kurt Kremitzki</dc:creator><description>&lt;p&gt;With the four major bugs blocking the usage of &lt;code class="docutils literal"&gt;PartDesign Mirrored&lt;/code&gt; fixed,
I started out the week exploring the now-functioning tool with the goal of getting what I call "command test coverage".
In short, this means testing major variations for tools presented to the user in the PartDesign WB.&lt;/p&gt;
&lt;p&gt;For reference, they are depicted and categorized in figures 1 and 2,
with the newly redesigned icons made by &lt;a class="reference external" href="https://github.com/agryson"&gt;Alexander Gryson&lt;/a&gt; (kudos to his major rework of all of FreeCAD's icons!)&lt;/p&gt;
&lt;figure class="align-center"&gt;
&lt;img alt="command palette" src="https://kwk.systems/blog/images/gsoc-2-1.png" style="width: 900px;"&gt;
&lt;figcaption&gt;
&lt;p&gt;Figure 1. Datum tools, additive/subtractive features and primitives.&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="align-center"&gt;
&lt;img alt="command palette" src="https://kwk.systems/blog/images/gsoc-2-2.png" style="width: 600px;"&gt;
&lt;figcaption&gt;
&lt;p&gt;Figure 2. Transformations, dressup features, and multi-body boolean operation.&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;The Mirrored tool takes as input feature(s) and a mirror plane, but the other transformation tools like LinearPattern and PolarPattern behave in a fundamentally similar way.
By that reasoning, I figured that tests regarding the Mirrored tool really only have two major permutations if one assumes valid input:
the case where a choice of features and plane succeeds, and one where it doesn't.&lt;/p&gt;
&lt;figure class="align-center"&gt;
&lt;img alt="mirrored success" src="https://kwk.systems/blog/images/gsoc-2-3.png" style="width: 600px;"&gt;
&lt;figcaption&gt;
&lt;p&gt;Figure 3. Success!&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="align-center"&gt;
&lt;img alt="mirrored failure" src="https://kwk.systems/blog/images/gsoc-2-4.png" style="width: 600px;"&gt;
&lt;figcaption&gt;
&lt;p&gt;Figure 4. Failure...&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;So, I cleaned up the test case submission I started GSoC out with, &lt;code class="docutils literal"&gt;testMirroredSketchCase&lt;/code&gt;,
and added the new case depicted in figure 4, &lt;code class="docutils literal"&gt;testMirroredOffsetFailureCase&lt;/code&gt;.
However, I noticed both of my test cases involved &lt;code class="docutils literal"&gt;Sketch&lt;/code&gt;-based additive features, but no additive primitives.
So, I also included &lt;code class="docutils literal"&gt;testMirroredPrimitiveCase&lt;/code&gt; in &lt;a class="reference external" href="https://github.com/FreeCAD/FreeCAD/pull/816"&gt;FreeCAD PR#816&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;What's nice is that besides &lt;code class="docutils literal"&gt;PartDesign Mirrored&lt;/code&gt; now being fixed, several other transformation tools' bugs were resolved.
Altogether, the PR resolved four issues, &lt;a class="reference external" href="https://www.freecadweb.org/tracker/view.php?id=2235"&gt;2235&lt;/a&gt;,
&lt;a class="reference external" href="https://www.freecadweb.org/tracker/view.php?id=2248"&gt;2248&lt;/a&gt;, &lt;a class="reference external" href="https://www.freecadweb.org/tracker/view.php?id=3006"&gt;3006&lt;/a&gt;,
and &lt;a class="reference external" href="https://www.freecadweb.org/tracker/view.php?id=3065"&gt;3065&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;With all that wrapped up,
I moved on to adding tests for the various options for the fundamental sketch-based features &lt;code class="docutils literal"&gt;Pad&lt;/code&gt; and &lt;code class="docutils literal"&gt;Pocket&lt;/code&gt;.
Altogether, I added &lt;code class="docutils literal"&gt;testPadToFirstCase&lt;/code&gt;, &lt;code class="docutils literal"&gt;testPadtoLastCase&lt;/code&gt;, &lt;code class="docutils literal"&gt;testPadToFaceCase&lt;/code&gt;,
and &lt;code class="docutils literal"&gt;testPadTwoDimensionsCase&lt;/code&gt; to cover the options for &lt;code class="docutils literal"&gt;PartDesign Pad&lt;/code&gt;.
Unfortunately, these test cases are not very interesting to look at and mostly involve 2-4 lined up cubes similar to
what figure 3 looks like.&lt;/p&gt;
&lt;p&gt;However, for &lt;code class="docutils literal"&gt;PartDesign Pad&lt;/code&gt;, things do get a little more interesting.
The base case is a simple reversed pad with a pocket in the middle, shown in figure 5.&lt;/p&gt;
&lt;figure class="align-center"&gt;
&lt;img alt="mirrored failure" src="https://kwk.systems/blog/images/gsoc-2-5.png" style="width: 600px;"&gt;
&lt;figcaption&gt;
&lt;p&gt;Figure 5. The base Pocket test construction.&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;It was straightforward to add &lt;code class="docutils literal"&gt;testPocketDimensionCase&lt;/code&gt;, &lt;code class="docutils literal"&gt;testPocketThroughAllCase&lt;/code&gt;,
and &lt;code class="docutils literal"&gt;testPocketToFirstCase&lt;/code&gt;.
However, covering the last Pocket option with &lt;code class="docutils literal"&gt;testPocketToFaceCase&lt;/code&gt; is not (necessarily) so trivial.&lt;/p&gt;
&lt;p&gt;If you refer to figure 5, you'll note that the base Pad feature is a hexahedron, or six-sided shape.
The Pocket feature adds four new faces to the overall shape, &lt;code class="docutils literal"&gt;Face7&lt;/code&gt; through &lt;code class="docutils literal"&gt;Face10&lt;/code&gt;.
However, references relying on the numbering of those faces is inherently brittle and it turns out that
a particular face number OpenCASCADE &amp;gt; 7.0 does not correspond to the same face in a lower version, e.g.
the version used on the FreeCAD CI machines over at Travis.&lt;/p&gt;</description><category>freecad</category><category>gsoc</category><guid>https://kwk.systems/blog/posts/gsoc-week-2-recap/</guid><pubDate>Sun, 18 Jun 2017 23:40:33 GMT</pubDate></item><item><title>GSoC Week 1 Recap</title><link>https://kwk.systems/blog/posts/gsoc-week-1-recap/</link><dc:creator>Kurt Kremitzki</dc:creator><description>&lt;p&gt;The first week of Google Summer of Code has ended, and so it's time for a recap post!&lt;/p&gt;
&lt;p&gt;The main topic this week was &lt;a class="reference external" href="https://www.freecadweb.org/wiki/PartDesign_Mirrored"&gt;PartDesign Mirrored&lt;/a&gt;, a fairly self-explanatory feature,
with a show-stopping bug explained in &lt;a class="reference external" href="https://freecadweb.org/tracker/view.php?id=3006"&gt;FreeCAD issue 3006&lt;/a&gt;.&lt;/p&gt;
&lt;figure class="align-center"&gt;
&lt;img alt="unit cube construction" src="https://kwk.systems/blog/images/gsoc-1-1.png" style="width: 600px;"&gt;
&lt;figcaption&gt;
&lt;p&gt;Figure 1. The base of my PartDesign Mirrored experiments.&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;In this picture, we have a simple &lt;code class="docutils literal"&gt;1 mm&lt;/code&gt; square sketch (pictured in white) attached to the &lt;span class="math"&gt;\(xy\)&lt;/span&gt;-plane.
One corner is at the origin, and the sketch is the base for a Pad feature &lt;code class="docutils literal"&gt;1 mm&lt;/code&gt; high.
Length is handled internally as &lt;code class="docutils literal"&gt;mm&lt;/code&gt; by FreeCAD, so this "unit cube" serves as a useful basis for testing behavior.
A useful alteration involves displacing this cube, say, &lt;code class="docutils literal"&gt;1 mm&lt;/code&gt; up the &lt;span class="math"&gt;\(y\)&lt;/span&gt;-axis.
This constructs a case where mirroring not all mirrorings should succeed, but we'll get into that later.&lt;/p&gt;
&lt;p&gt;Let's turn now to the bug itself, depicted in figure 2.
The unit cube is supposed to be mirrored about its vertical sketch axis (the &lt;span class="math"&gt;\(y\)&lt;/span&gt;-axis, pictured running off to the top right.)
Obviously, it's not, and the failure is helpfully represented in red.&lt;/p&gt;
&lt;figure class="align-center"&gt;
&lt;img alt="mirroring bug" src="https://kwk.systems/blog/images/gsoc-1-2.png" style="width: 600px;"&gt;
&lt;figcaption&gt;
&lt;p&gt;Figure 2. FreeCAD bug 3006 in action.&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Note that the body diagonal of the mirrored part should run from the origin to  &lt;span class="math"&gt;\((-1, 1, 1)\)&lt;/span&gt;.
Instead, it's going to &lt;span class="math"&gt;\((1, -1, -1)\)&lt;/span&gt;, in the opposite direction.&lt;/p&gt;
&lt;p&gt;Well, this was my first really serious bug to tackle for the summer.
I chose this as a way to really dive in, since it directly involves Open CASCADE, the open source C++ geometry kernel at the heart of FreeCAD.&lt;/p&gt;
&lt;p&gt;However, my programming background is chiefly with Python (as well as JavaScript and Lua), all interpreted languages.
One nicety of that sort of language is that it can be very quick to debug and examine behavior using the interpreter.
There is a Python debugger, &lt;code class="docutils literal"&gt;pdb&lt;/code&gt;, but I rarely needed to use it for my mostly personal-sized projects.
Even then, it's quite straightforward to use since you're already in an interpreter-native environment.&lt;/p&gt;
&lt;p&gt;C++ is a very different beast. In this case, stepping through the code with a debugger was my only choice.
I use Neovim as my IDE, though, so I wanted a way to combine the power of my text editor with my debugger.
So, I found and set up &lt;a class="reference external" href="https://github.com/dbgx/lldb.nvim"&gt;LLDB.nvim&lt;/a&gt;, an LLDB frontend, with an event-based, non-blocking UI,
session-saving, and
"... takes advantage of Neovim's job API to spawn a separate process and communicates with the Neovim process using RPC calls."&lt;/p&gt;
&lt;p&gt;Pretty nice. Anyway, I was able to step through the code and see exactly what was flying around, just like I wanted.&lt;/p&gt;
&lt;figure class="align-center"&gt;
&lt;img alt="neovim" src="https://kwk.systems/blog/images/neovim1.png" style="width: 600px;"&gt;
&lt;figcaption&gt;
&lt;p&gt;Figure 3. Neovim in an LLDB debug session.&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;So, what was the problem? Hah! Not so simple. Turns out there are &lt;em&gt;at least four bugs here!!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;First, the algorithm which first checks if the mirrored shapes are adjacent and thus, can be fused, was broken.&lt;/p&gt;
&lt;p&gt;Once this failed, FreeCAD then attempts to generate a mesh from the shape, and then converts a generalized transformation object representing the mirroring into a matrix to put the mesh in the correct place.
It turns out that in Open CASCADE 7.0.0, the &lt;code class="docutils literal"&gt;gp_Trsf&lt;/code&gt; API was changed so that &lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;gp_Trsf::VectorialPart()&lt;/span&gt;&lt;/code&gt; returns a 3x3 matrix including the scale factor.
The previous behavior was to return the homogeneous part of the transformation which does not include the scale factor, and the FreeCAD algorithm for constructing the 4x4 matrix for the mesh included multiplying every term by a scale factor.
In other words, the scale factor multiplication was happening twice. The scale factor I had observed in the debugger was -1, so this perfectly explained the inverted positioning of the failure result!&lt;/p&gt;
&lt;p&gt;The third bug, of a much more minor nature, involved a a classic "failure... success!" message displayed in the event of a mirroring failure, and was easier to fix.&lt;/p&gt;
&lt;p&gt;The fourth, though, was a bit trickier! It only appeared when fixing the mesh placement.&lt;/p&gt;
&lt;figure class="align-center"&gt;
&lt;img alt="new mirroring bug" src="https://kwk.systems/blog/images/gsoc-1-3.png" style="width: 600px;"&gt;
&lt;figcaption&gt;
&lt;p&gt;Figure 4. A strange, new mirroring bug.&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;This one was diagnosed by ickby, my mentor for this project.
It turns out the failure meshes' faces were getting constructed inside out, and so the material's color was not considered "illuminated".&lt;/p&gt;
&lt;p&gt;The three of us considered a few different options to get around this. One way would be to use Coin3D, FreeCAD's scene graph library, and change the material
properties to define something that looked the same, illuminated or not. Another is to essentially duplicate each face with the second instance having an inverted normal, so that you're guaranteed to have an outward-facing face.&lt;/p&gt;
&lt;p&gt;The fix ended up being much simpler than that! It was possible to simply change the vertex ordering. Originally, it was set to &lt;code class="docutils literal"&gt;COUNTERCLOCKWISE&lt;/code&gt;.
However, in figure 4, you can see that simply changing it to &lt;code class="docutils literal"&gt;CLOCKWISE&lt;/code&gt; would not be an obvious fix.
Abdullah also fixed this one, presumably by checking the docs for that option and finding that there was an "option C", &lt;code class="docutils literal"&gt;UNKNOWN&lt;/code&gt;. That did the trick!&lt;/p&gt;
&lt;p&gt;So now, PartDesign Mirrored is fixed and ready. Not a bad start for the summer!&lt;/p&gt;
&lt;!-- Open CASCADE and quaternions --&gt;
&lt;!-- Transformation matrices --&gt;
&lt;!-- OpenInventor and tessellation --&gt;
&lt;!-- Plans for the future --&gt;
&lt;!-- Rebuild test --&gt;</description><category>freecad</category><category>gsoc</category><guid>https://kwk.systems/blog/posts/gsoc-week-1-recap/</guid><pubDate>Tue, 06 Jun 2017 19:28:12 GMT</pubDate></item></channel></rss>