Scrivener 3 Linux Porting — Initial Dependency Breakdown

After reading @AmberV’s discussion in Please, release a native version for Linux again - #36 by AmberV, I took a look at the Windows installation of Scrivener 3 to identify what would actually be involved in a potential Linux port or compatibility layer.

I scanned the installation directory and filtered out components that appear to rely on .NET / managed runtime:

.NET: C:\Program Files\Scrivener3\mfcm140.dll
.NET: C:\Program Files\Scrivener3\mfcm140u.dll
.NET: C:\Program Files\Scrivener3\docformats\MsRtfConverter.exe
.NET: C:\Program Files\Scrivener3\docformats\aspose\Aspose.exe
.NET: C:\Program Files\Scrivener3\docformats\aspose\Aspose.Words.dll
.NET: C:\Program Files\Scrivener3\paddle\CredentialManagement.dll
.NET: C:\Program Files\Scrivener3\paddle\ICSharpCode.SharpZipLib.dll
.NET: C:\Program Files\Scrivener3\paddle\Interop.SHDocVw.dll
.NET: C:\Program Files\Scrivener3\paddle\Newtonsoft.Json.dll
.NET: C:\Program Files\Scrivener3\paddle\Paddle.exe
.NET: C:\Program Files\Scrivener3\paddle\PaddleSDK.dll
.NET: C:\Program Files\Scrivener3\paddle\StructureMap.dll

Core Structure

1. Paddle (Licensing System)

Responsible for license verification, credential management, and communication with backend services, and is deeply integrated into the application lifecycle.


2. MsRtfConverter (Word-based conversion layer)

A document conversion utility built on Microsoft Word COM automation, used to convert between formats such as DOC, DOCX, HTML, RTF, and PDF.

On non-Windows platforms, this component is effectively unavailable due to the absence of Word automation, so this entire path can be considered removable in a cross-platform context.


3. Aspose Conversion Layer

A commercial document processing engine used for parsing and converting documents without requiring Microsoft Office.

It likely handles conversions such as DOCX, RTF, HTML, and related document normalization workflows.


Conclusion

The core dependencies of Scrivener 3 can be reduced to two main areas:

  • Document conversion (Aspose + legacy Word-based pipeline)
  • Licensing system (Paddle)

MsRtfConverter is a Windows-specific implementation and is not required in a cross-platform architecture.


Current Work & Future Plans

I am currently implementing a C++ Paddle SDK (PaddleQt), using QtKeychain to interface with the system credential store, while aiming to maintain compatibility across Linux, Android, and iPadOS with consistent behavior.

During the development of PaddleQt, I referenced Wine DLL analysis techniques to better understand how Paddle interacts with the system credential manager and how license data is persisted. I also used Wireshark to inspect and verify Paddle’s network communication patterns, which helped clarify the authentication and activation flow and informed parts of the reimplementation design.

Next month, I plan to build a document conversion layer based on the Aspose C++ SDK, to evaluate its feasibility as a replacement for the existing conversion pipeline in a Linux environment, and to better understand how it integrates into the Scrivener workflow.

Once these pieces are in place, most of the compatibility challenges should be resolved. What would likely remain are smaller, fragmented bugs (or “features”) inside the main application logic, along with a limited set of platform-specific implementations.

2 Likes

This is exciting ! I’m going to follow this. Good luck !

Progress: PaddleQt is complete. Testing shows that activation, deactivation, offline verification, and the anti-infinite-trial logic all work correctly. Only the purchase window still has some bugs.
It is also working properly on macOS and Android.

2 Likes

Hello. As a user, I appreciate your willingness to selflessly collaborate on the possibility of a native Linux version of Scrivener. I still dream of experiencing the power of Scrivener without the terrible performance limitations imposed by Windows. The average Windows user can’t even imagine how much smoother Linux and macOS are in comparison. Regarding this matter, I continue to be surprised by the drop in performance that the Qt version of Scrivener has had from version 1 to version 3.

Best regards.

1 Like