X-Debbugs-CC: [email protected] [email protected]
Hi, 在 2026/11/1 20:17, Dat Tran 写道:
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 <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 <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.
Thank you for addressing the source-code concerns. That new version would sort
out
my major concerns.
However, I would like to see the two following extra issues solved before
sponsorship:
1. Telex input regression
With the default Telex configuration and Smart Bilingual enabled, in
my tests v2.0.1 changes:
off -> of
please turn off -> please turn of
Both inputs were correct in the previously reviewed 2.0.0 package.
Please fix this regression.
2. Source tarball and upstream tag mismatch
The submitted orig tarball differs from the v2.0.1 tag at commit
41e8892a96bebc12beee364e59983f46960ba4c5 in:
Sources/VieLotusCAPI/include/vielotus.h
The tarball still declares seven unimplemented suggestion/loopback
APIs that have already been removed from the tagged header.
Please make the release tag and orig tarball consistent.
Please prepare an updated package with these fixes. Thanks for your
work on this project.
Best,
Boyuan Yang
OpenPGP_0xC293E7B461825ACE.asc
Description: OpenPGP public key
OpenPGP_signature.asc
Description: OpenPGP digital signature

