Windows released a beta version of the Franz desktop client for Apache Kafka

Windows released a beta version of the Franz desktop client for Apache Kafka

On October 14, 2023, developer Bogdan Popa released a Windows beta version of his Franz desktop client for Apache Kafka. Previously, this project was only available on macOS. The Franz source code is posted on GitHub (mainly Racket and Swift languages ​​are used there). This is not an open project, the developer asks that those who find Franz useful for use acquire licenses from it.

“One of my goals for writing software on Racket is to help expand the Racket ecosystem. I try to do this by making parts of the applications I write open source where possible and contributing a small amount to Racket. Also, I sometimes see new users asking for examples of real applications built with Racket, so I also try to make the source code of my own applications available where possible. I hope that developers interested in using Racket can get an idea of ​​what it looks like in practice by looking at the code of these apps, and I like the idea of ​​letting everyone see what code they’re using when they run my apps Popa clarified.

In the process of writing the program, Franz Popa wrote a Kafka client for Mac in late 2022, including Avro, MessagePack, and Protocol Buffer data serialization and deserialization libraries, custom decompressors for LZ4 and Snappy, and a hash language for Lua, among others.

He had planned to work on the Windows version of Franz since last year. Originally, the developer was going to implement the user interface in C# (or possibly F#), but then in early 2023, Popa decided to try using Racket as a GUI to implement the Windows (and soon Linux) version of Franz.

On macOS, Franz is implemented using a combination of Racket for the core logic and Swift for the user interface. The Windows version reuses a similar core and re-implements all program representations using gui-easy technology.

The end result of the Windows version of Franz for Apache Kafka is about 5,000 lines of GUI code. In comparison, the iOS version of Franz on Swift contains about 8.2K lines of Swift code (a mix of AppKit and SwiftUI) and about 4.5K XML representing XIBs built with Xcode Interface Builder. Because Rack/gui is a cross-platform library, and therefore must target the lowest common denominator of the three platforms it supports in terms of functionality, the end result is not as perfect as the Mac or Windows Forms3 version. Popa explained that he was still able to achieve the desired result.

Since the source code is Racket, launching the client is a breeze: just call raco.exe to generate the executable, then raco.dist to package it. The only problem was Microsoft’s SmartScreen. Popa isn’t willing to pay for an EV4 certificate for third-party software vendors, so he decided to manually submit the project code for new Windows releases to Microsoft to be tested for malware. So far, this is not a big problem for the author, except for the time it takes to process these requests.

Popa explained that he will support the Mac and Windows versions of Franz at the same time. He says he now needs to make minimal changes to the core code to support both versions. He also created the version of the client for Windows in about two months of work in his free time. “I think a small team using this model can move very quickly and build great custom applications on Racket for every platform,” Popa concluded.

Related posts