Comment by peter_d_sherman

10 hours ago

Looks good!

I decided to have a quick, cursory, "first-glance" look at OpenShot's software architecture...

It apparently (and again, someone correct me if I am wrong here) uses FFmpeg (https://www.ffmpeg.org/ https://git.ffmpeg.org/ffmpeg.git https://github.com/FFmpeg/FFmpeg), more specifically the FFmpeg libraries (libavutil, libavcodec, libavformat, libavdevice, libavfilter, libswscale, libswresample).

Nothing wrong with that, countless video and video-related programs, most notably VLC -- use FFmpeg as their base software layer.

LibAv (https://github.com/libav/libav), a fork of FFmpeg, can also apparently be "swapped in" as the base layer, replacing FFmpeg if so desired.

FFmpeg/LibAv are written in C, primarily adhering to the C99 standard.

From there, building on top of that, we have libopenshot (https://github.com/OpenShot/libopenshot) which is a C++ "middle level" library generating/abstracting a higher-level API for video editing specifically, and containing bindings to C++, but perhaps more notably, additionally to Python and Ruby...

Then on top of that, we finally have OpenShot (more specifically 'openshot-qt': https://github.com/OpenShot/openshot-qt) which is written entirely in Python 3.x, which uses PyQt (which bind to Qt libraries which give the software its platform independence!).

And of course, there are some other libraries and repos for other things here: https://github.com/OpenShot, for example, libopenshot-audio for audio, etc.

Opinion: Let me start off by saying that I am NOT a Python guy! I'd rather program in Delphi/ObjectPascal, C, C++, x86 Assembler, Java, Lisp, Scheme, Racket, Clojure, Haskell, R, Odin, Zig, or, if someone put a gun to my head, JavaScript (without Typescript!) or Rust! (too large a compiler, too many imported dependencies in many libraries/crates -- the language itself I have nothing against!)

But, that being said (also, I'll say I've seen some truly great programs written in Rust, before the community tars and feathers me!), I have seen just how powerful a teaching tool for programming tool Python is!

This is not a simple Python "Hello World" program!

This program is powerful, quite powerful indeed!

It showcases what Python can do by coordinating and managing lower-level functionalities!

It's also an excellent program from the perspective of garnering GitHub community support (think about it, the barrier to "chip in" and offer help/assistance/bug fixes/functionality improvements is lower, way lower on a Python program than it is on say, a C++ program using all of the latest C++23 language features or on a LISP-derived language using many deep asymmetric recursive meta constructs...)

It's also a great example of a Python cross-platform program!

And I really like the way that the software is delivered in discrete layers, i.e., the C++ middle layer has its own dedicated GitHub repo (as opposed to being co-mingled with the Python higher level one), etc.

So, great job!

This is truly a Python exemplar program!

Some really good Software Engineering practices in this one!