foss-north kdenlive workflow

As some of you might already have noticed, we’ve complemented foss-north with a new pod / vod / vlog – I’m not sure what to call it. Basically, it is a video based pod cast (making it available as a audio only pod-cast is high on the todo). Our main focus right now is a series on licenses and copyright, but there is more to come.

As a part of this, I’ve started editing videos in kdenlive on a weekly basis, and I’m very happy with it so far.

In this blog, I want to share my workflow. It is probably far from ideal, but it does the work for me.

I usually start with a set of presentation slides that we’ve used to direct the discussions. These are exported as pdf, which is then converted to 1920×1080 pngs for consumtion in kdenlive.

I do this in two steps using ImageMagick, as the results seems nicer by first rendering too large images and scaling them down.

convert -verbose -density 300 ../open\ projects-1.pdf -quality 100 -sharpen 0x1.0 11.png

mogrify -resize 1920x1080 *.png

The session is recorded using OBS from our Jitsi instance, but we also encourage each participant to record their audio separately, as it makes it easier to fix things afterwards. (foss-north now self-hosts a Jitsi instance – check out https://github.com/e8johan/virtual-conf-resources to learn about how to setup virtual conferences).

You would be surprised over how many times we’ve run into issues with one or more sound recordings. We’ve had:

  • Too low volume (inaudible)
  • Too high gain (noisy)
  • Local echo of the rest of the participants in one recording (no use of headphones)
  • No recording (forgot to press record)

I’m sure the list will grow longer as we record more episodes :-)

Before I start cutting the recording, I use one of my favorite features in kdenlive. First I set the Jitsi recording as the audio reference as shown below.

Then for each audio track, I tell kdenlive to align it to the reference. This will position it correctly in relation to the Jitsi recording, meaning that I can fade in and out of individual recordings without having to worry about any time shifts.

Finally, I select all the audio recordings and group them. This means that all editing I do (cuts, movements, etc) is applied to all channels.

Now it is just a matter of listening for trouble (you can spot awkward silence in the visualization of the audio tracks), press i to mark the beginning of a section, press o to mark the end, and then shift+X to cut it out.

In general, I try to edit as little as possible, but tightening some parts by removing silence, and sometimes remove failed parts when we’ve decided to start over a section.

Finally I add the pngs as a video stream, our pre-recorded intro sequence, and a YouTube friendly end-screen and click render and go to bed :-)

What a License Track!

The foss-north 2020 videos are rolling out. This year we’re doing a small experiment, so everything is available at once over at conf.tube, while we roll the videos out gradually at YouTube in an attempt to feed the algorithm (like and subscribe!).

This year we had a great set of licensing related talks, and I’d like to discuss them all in this post.

Monday morning started with Frank Karlitschek and his talk Why the GPL is great for business. This a great overview of how you can build an free and open source business – pros and cons and pitfalls to avoid.

Next up is Gabriel Ku Wei Bin from FSFE who talked about REUSE. The REUSE project is about helping creators choose and apply free and open source licenses.

This is followed by Pavel Kopylov and his talk Hacking the legal code of an open source license. This talk is about understanding how licenses works and how to use them.

This is followed by Jason Hammond from Whitesource talking about their compliance tooling and why compliance is important.

The final talk in this track is by Adriaan de Groot talking about the KDE Free Qt Foundation. This is an interesting aspect, as it is about protecting the customers by offering a more liberal license at a given point of time.

Historically we’ve always split talks on a specific topic during the conference to ensure that people move about in the hallways and that most visitors get to see something unexpected. Since we record everything, we can now do both – clustering by topic and a linear playlist.

foss-north

It is with great regret that I have to announce that foss-north 2020 has been postponed due to the COVID-19 situation.

It will be replaced by a virtual event during the planned dates (March 30-31), and a physical event during the fall.

We regret any inconvenience that this causes our guests and sponsors. At the same time we appreciate the great support of our sponsors who unanimously support us in these difficult times.

Details will be shared at https://foss-north.se/2020/ as we learn more.

This is turning out to be a really shitty week. But we will prevail together.

I’m always positively surprised about the amount of support and love out there in difficult times. It is what makes the world go around.

More foss stuff

It is busy days at the moment – but in a positive way.

First of all – a huge thanks to everyone who submitted to the Call for Papers for foss-north 2020. We have over 70 hours (!!!) of contents to squeeze into two tracks over two days. As always, it will be hard to pick the speakers to create the very best program.

Other foss-north activities includes starting to populate the community day activities, as well as getting a whole bunch on sponsors onboard. An extra big thanks to Luxoft and Red Hat Ansible for helping us by picking up the Gold Sponsorship packages. Ansible are even running their European Contributor Summit as a part of the foss-north Community Day together with events by KDE, Gnome, FreeBSD, Debian, and a hardware hacking workshop. I’m really looking forward to this – if you want to join in with your own project, workshop, hackaton, etc – just ping me!

The other big foss-north change for this year is that we are finally abandoning Eventbrite for a self-hosted system. Big thanks to Magnus Hagander helping us getting the pgeu-system up and running. At the moment, we offer login via Github and Google OAUTH. We’re looking into setting up a self-hosted OAUTH service as well, to let you log in locally, but that will not happen for the 2020 event due to time reasons.

Closer in time is the next local foss-gbg meetup. We are running an event around React together with our good friends at Edument. We already have 50+ registered attendees, so it will be fun!

In other news – I’ve also released Ordmonster – if anyone has kids who wants to get started reading. This is a complement to the Mattemonster app for basic maths launched earlier. Both are made with Godot, a tool that I enjoy more and more.

gbgcpp – Ribbons using Qt

I’ve been involved in the gbgcpp group, a part of the larger Sweden C++ community, for a couple of years. It is fun to see that there is a lot of C++ developers out there, once you start looking for them.

In the next meetup, this Wednesday, there will be both C++ and Qt. The topic is to implement Ribbons in Qt, based on a seminar by Dag Brück. If you happen to be in the vicinity of Gothenburg, I recommend you to go there!

I’d also like reach out and thank Sylog for hosting the event!

Preparing foss-north 2020

Next year’s foss-north will take place March 29 – 31, with the training day on April 1. Preparations are under way, and now we need your participation to make this event as great as the past years.

The preparations are under way and we’ve opened the Call for Papers. We truly believe that we bring together the best audience with the best speakers. Being a part of this is a great experience, so make sure to get your talk proposal submitted.

Another part of the foss-north experience is the community day. The day before the actual conference, a large set of community groups arrange workshops, hackatons, dev sprints, even mini conferences. This year we’ve already confirmed the participation of KDE, FreeBSD, and “something embedded” arranged by Endian (last year they did a full day workshop on the Zephyr Project).

If you want to be a part of the community day – don’t hesitate to reach out to info@foss-north.se. We help with a venue, food, and promotion. All you need to have is a cause!

In addition to this we are, of course, on the look out for sponsors. If you want to support us, or even take part in the conference with a booth, please join our Call for Sponsors. Make sure to tell your employer that they should sponsor – all sponsor packages include free tickets, so that way you can both participate in the event, and help us making this possible.

Between all of this we’re also working on the infrastructure. I’d like to extend a big thanks to Magnus Hagander from Postgresql. He is helping the migration to their pgeu-system system. This will give us a single system integrating the features we need – tickets, sponsors, scheduling, accounting. So no more Google Forms, Eventbrite, and manual coordination of systems. If you like css, html, and such, you’re more than welcome to help. Some pages still has rough edges.

Long story short: join us at foss-north 2020 – it will be fun! Take the opportunity to see Gothenburg end of March in 2020.

Free software and the wish to be good

The free software movement has recently been going through a lot. From the introduction of Commons Clause, to the resignation of Stallman. It seems like the mood in the air is that now is the time for a redefinition of what free and open source software actually is.

My view on this is that free software, and open source, is about software. For instance, I agree to Roman Gilg’s great post about activism. What we share within the FOSS movement is our passion for software licensing. For other political issues, we do not all agree. It is important to recognize this, and that by implying political standpoints, we limit the size of the communities.

To me, we in the FOSS movement need to define tackle two issues: what is distribution (to address the Common Clause issues), and can we be neutral to what the software is used for (to address the activism issues).

When it comes to distribution, the open source definition explicitly says “No Discrimination Against Persons or Groups” and “No Discrimination Against Fields of Endeavor“. I think we all can agree that software is used for both good and evil. However, what is good and what is evil depends on your viewpoint. I believe that the license should be free of this type of politics, as opening the discussion will be like opening a Pandora’s box.

If we, as a community, want to define good and and bad, and restrict usage accordingly, I would argue that we should make sure to use an established, and accepted standard such as The Universal Declaration of Human Rights. This would avoid creating an impenetrable forest of various uses that each author feels strongly about and prohibits. The latter would make it very difficult to ensure compliance.

When it comes to compliance, including a definition of good and restricting usage accordingly has an interesting effect. Common day objects such as cars, can be used for both good and evil. Is it allowed to use FOSS licensed software in a car, if that car could be used in activities breaking the human rights?

Another problem with incorporating human rights into the license, is that those who ignore the human rights probably don’t care about software licenses either.

The second point is the definition of distribution. Here I’m approaching the discussion from a GPL standpoint. The GPL licenses are triggered when software is distributed. By taking the distribution concept further, e.g. including access over a network, the license can be further extended.

Here, the balancing act is going far enough, but not too far, and to provide a range of licenses that make it easy for the authors to control how the software can be used.

The problem that I see with going too far, is that entire fields of endeavor might be excluded by extending the license to far. One example of this is the anti-Tivioization clauses in (L)GPLv3. We all know what purpose they serve. The side effect is that they exclude entire fields where the OEMs feel that, for liability or compliance reasons, they need to introduce Tivioization.

I see this in the automotive sector, but would assume that it exists in medtech and other industries where the final product needs to fulfill safety requirements.

For me, I think that the license should prevent Tivioization from an end-user standpoint. It should be possible to change and deploy the software. I believe it should be explicitly allowed to detect the non-OEM software and, for instance, void warranties and warn the end-user, but not prevent usage of the product (this in itself is interesting – can other physical devices refuse to talk to the device, e.g. a cloud backend, or other ECUs in the same car? – it will be tricky to define the boundaries here). This opens the door for FUD warnings, but it also extends the reach of FOSS.

Both these topics form a complex discussion that needs to be given time. The current open source definition serves us well, and the current licenses are familiar. Introducing more licenses, or even challenging the definition of open source, will introduce complexities and side effects, so we need to tread carefully.

foss-north 2019: Community Day


I don’t dare to count the days until foss-north 2019, but it is very soon. One of the changes to this year is that we expand the conference with an additional community day.

The idea with the community day here is that we arrange for conference rooms all across town and invite open source projects to use them for workshops, install fests, hackathons, dev sprints or whatever else they see fit. It is basically a day of mini-conferences spread out across town.

The community day is on April 7, the day before the conference days, and is free of charge.

This part of the arrangements has actually been one of the most interesting ones, as it involves a lot of coordination. I’d like to start by thanking all our room hosts. Without them, the day would not be possible!

The other half of the puzzle is our projects. I am very happy to see such a large group of projects willing to try this out for the first time, and I hope for lots and lots of visitors so that they will want to come back in the future as well.

The location of each project, as well as the contents of each room can be found on the community day page. Even though the day is free of charge, some of the rooms want you to pre-register as the seats might be limited, or they want to know if they expect five or fifty visitors. I would also love for you to register at our community day meetup, just to give me an indication of the number of participants.

Also – don’t forget to get your tickets for the conference days – and combine this with a training. We’re already past the visitor count of the 2018 event, so we will most likely be sold out this year!

TableView and Qt 5.12 / Qt Creator 4.8

I finally got around to doing the final merge for QmlBook this year.

I just merged the chapter on the brand new TableView. This let’s you show 2D data tables in an efficient way.

I also merged the version upgrade, so the text should now reflect what is available from Qt 5.12 and be based on menus and screens from Qt Creator 4.8.

During this update of the text, we took the decision not to upgrade all import statements to QtQuick 2.12. Instead, we use different versions in different places. However, the contents of Qt 5.12 is covered.

There are still two things left for the 5.12 branch. The first is to use the new input handlers, e.g. TapHandler instead of MouseArea. The second is to setup a release branch in the CI system so that there is a 5.12 version of the book built separately. I suspect that this will force me to learn more Travis tricks :-)

Merging QmlBook Contents

What better way to spend a lazy Christmas day than to merge some of the new chapters to the QmlBook?

Since having updated the CI system, there is a bit of manual merging forth and back to get each new piece of contents on-line. Specifically, rebase my fork’s master to upstream/master, then rebase my working branch on my master, and then pushing.

One of the newly added chapters cover Qt Quick Controls 2, which is the recommended way to create controls such as buttons, sliders, checkboxes, menues, and so on. Here we look at how you target various form factors such as desktop and mobile, but also how to maintain a common code base between the two.

The other new chapter has a look at Qt for Python from a QML perspective. This chapter goes from the very basic all the way to exposing a Qt model representing the data of an existing Python module to QML.