Control: tags -1 - moreinfo
Control: retitle -1 RFS: vielotus/2.0.1-1 [ITP] -- VieLotusIM (Sen Viet)
next-gen Vietnamese input method

Dear Boyuan,

Thank you very much for testing 2.0.0-1 on sid/amd64 and for pointing out
the
DFSG #2 issue together with the FTP Team and debian-legal references.

You are completely right: publishing a pre-filtered/obfuscated C++ engine
and
shipping precomputed 64-bit FNV-1a hex tables without their underlying
plaintext wordlists and generator does not meet DFSG #2 (preferred form for
modification).

I have resolved this upstream in release v2.0.1 and uploaded an updated
source
package (2.0.1-1) to Debian Mentors:

  dget -x
https://mentors.debian.net/debian/pool/main/v/vielotus/vielotus_2.0.1-1.dsc

Upstream v2.0.1 tag:

https://github.com/stevedat/VieLotus-IM/tree/v2.0.1/Sources/VieLotusCoreWindows

Summary of changes and how the Linux/desktop C++ core is maintained and
built:

1. Direct, unobfuscated C++20 maintenance source (MIT / Expat):
   - `Sources/VieLotusCoreWindows/WindowsNativeEngine.{h,cpp}` is now
published
     and maintained directly in its unobfuscated human-readable form
(semantic
     struct, function, and table names, inline comments, zero
pre-publication
     filtering or identifier mangling).
   - Relationship to the rest of the project: our macOS/iOS app uses a
separate
     Apple-platform Swift implementation (`InputMethodKit` / `UIKit` /
     `NaturalLanguage`), whereas the Linux (IBus / Fcitx5) and Windows (TSF)
     engine in `Sources/VieLotusCoreWindows/` is a standalone
zero-dependency
     C++20 implementation maintained directly in C++20 (there is no
     Swift-to-C++ transpiler or code generator producing
     `WindowsNativeEngine.cpp`).
   - We have permanently retired the old obfuscation policy for the C++20
     desktop/Linux engine.

2. Plaintext UTF-8 (Unicode NFC) wordlists, historical provenance & offline
   generator (all Expat / MIT):
   - Prior to v2.0.1, `WindowsNativeEngine.cpp` embedded 12 precomputed
sorted
     64-bit FNV-1a lookup arrays (2,008 entries in total) inline without
     committing the plaintext wordlists alongside the C++ file.
   - For v2.0.1, all 12 phonotactic and bilingual collision-escape tables
     (2,008 / 2,008 entries, verified 100% bit-for-bit with zero hash
     collisions against the pre-2.0.1 tables) have been consolidated,
audited,
     and committed as human-editable UTF-8 (Unicode NFC) plaintext
wordlists at:
       `Sources/VieLotusCoreWindows/lexicon/00_initial_onsets.txt` ..
       `Sources/VieLotusCoreWindows/lexicon/11_extended_english_escapes.txt`
     Starting with v2.0.1, these `.txt` files are the sole canonical
upstream
     maintenance source for the C++20 engine's lexical tables. Full
per-table
     provenance, reconstitution notes, and format invariants are documented
in
     `Sources/VieLotusCoreWindows/lexicon/README.md` and `debian/copyright`.
   - Added the deterministic, offline Python 3 generator (standard library
     only, no external dependencies, no network access):
       `Sources/VieLotusCoreWindows/scripts/generate_lexicon_hashes.py`
     which validates UTF-8, strict Unicode NFC normalization, lowercase BMP
     codepoints, duplicate freedom, and zero 64-bit FNV-1a collisions before
     emitting sorted lookup arrays.

3. Non-shadowable build-time regeneration & removal of binary fallback in
CMake:
   - `CrossPlatform/capi-native/CMakeLists.txt` (with `python3:any` in
     `debian/control` `Build-Depends`) regenerates

 
`${CMAKE_CURRENT_BINARY_DIR}/generated/VieLotusLexicon/WindowsNativeLexiconGenerated.inc`
     directly from `lexicon/*.txt` during every build, and
     `WindowsNativeEngine.cpp` includes it via
     `#include <VieLotusLexicon/WindowsNativeLexiconGenerated.inc>`.
   - No `.inc` file sits alongside `WindowsNativeEngine.cpp` and
`prebuilt/` is
     not added to compiler include paths on Linux/Debian builds, so edits to
     `lexicon/*.txt` deterministically take effect on rebuild (verified via
`-H`
     include traces and wordlist-mutation rebuild tests).
   - Removed the legacy prebuilt `.deb` extraction fallback from
     `CrossPlatform/capi-native/CMakeLists.txt`; CMake now fails immediately
     with `FATAL_ERROR` if any C++20 source file, wordlist, or generator
script
     is missing.

Please let me know if there are any remaining questions or further
adjustments
needed for DFSG review. Thank you again for your time and guidance.

Best regards,
Dat Tran (Steve Dat)

On Sun, Nov 1, 2026 at 7:45 PM Boyuan Yang <[email protected]> wrote:

> X-Debbugs-CC: [email protected]  [email protected]
> Control: tags -1 + moreinfo
>
> Hi,
>
> On Sat, 31 Oct 2026 12:23:32 +0700 Dat Tran <[email protected]> wrote:
> > Control: tags -1 - moreinfo
> >
> > Dear Boyuan,
> >
> > Thank you very much for your thorough review and testing on Debian sid.
> > I have resolved all 8 issues you reported and uploaded an updated source
> > package (2.0.0-1) to Debian Mentors:
> >
> >   dget -x
> >
> https://mentors.debian.net/debian/pool/main/v/vielotus/vielotus_2.0.0-1.dsc
>
> Thanks for the fixes. The updated package builds successfully in
> sid/amd64, and my targeted checks confirm the input and font configuration
> fixes.
>
> One source-code issue remains: your release policy explicitly requires
> publishing an obfuscated C++ core:
>
> https://github.com/stevedat/VieLotus-IM/blob/a45d3b5a83460aa84913237b06b08ab0b7e2210f/docs/RELEASE_STANDARDS.md#L38-L58
>
> Debian expects the preferred form for modification. See the FTP Team's
> explanation of DFSG #2 (slide 10, PDF page 11), and the discussion
> distinguishing actual maintenance source
> from code filtered before publication:
>
> * https://ftp-master.debian.org/talks/ftpmaster-dc11.pdf#page=11
> *  https://lists.debian.org/debian-legal/2005/07/msg00379.html
>
> Please provide the unobfuscated source actually used to maintain the Linux
> core, including the original wordlists and any generation scripts, and
> explain how the published C++ is
> produced.
>
> Until this is resolved, I cannot sponsor the package. Even if I do, your
> version will be rejected during the DFSG review.
>
> Best,
> Boyuan Yang
>

Reply via email to