OdfKit 專案 UDX 非功能性目標說明 (udx-non-goals.md)
本文件明確列出 OdfKit 在邁向「極致好用 (UDX)」的過程中,不予納入實作範圍的功能模組與非目標(Non-Goals)。此設計取捨旨在保持核心程式庫的輕量性與高效能,並避免開發資源的重複投入。
1. 高保真物理分頁排版引擎
- 說明:計算文字在 PDF 或實體列印時的精確換頁、孤行控制(Orphan Control)、雙欄對齊等物理分頁計算極為龐大,且受限於作業系統的字型渲染引擎差異。
- 決策:OdfKit 將不自行開發完整的物理分頁排版器。物理分頁的渲染(如 ODT 轉 PDF 或圖片)將完全交由後端的 LibreOffice(本地處理程序或雲原生容器)進行高保真轉譯。
2. 完整辦公套件等級的樞紐與公式執行階段
- 說明:OdfKit 已提供有界的處理序內樞紐彙總、計算欄位、日期/數值分組、總計、
Show Values As與持久化後刷新;大範圍公式亦有受限求值器。完整 Calc/Excel 執行階段仍包含外部資料來源、pivot cache、slicer、pivot chart、任意巢狀小計、完整公式函式與版面互動。 - 決策:上述可預測且可設資源上限的 SDK 工作負載納入核心;需要完整辦公套件狀態、互動 UI 或高保真渲染的部分仍交由 LibreOffice Calc 等 consumer,不宣稱 OdfKit 等同 Office Suite。
3. SmartArt 智慧圖形與複雜形狀佈局器
- 說明:ODF 規格對 SmartArt 與複合三維圖形的定義極為模糊,且 Microsoft Office 與 LibreOffice 對此類圖形的 XML 實作互不相容。
- 決策:OdfKit 不予支援 SmartArt 佈局器封裝,以避免跨平台開檔時的版面混亂。
4. ODF Toolkit 風格 JSON Collaboration operations merge
- 說明:TDF ODF Toolkit 的 Collaboration API 將 ODT 語意變更序列化為 JSON operations(
addParagraph、delete、format等),供 web office 場景做變更交換與 merge。這與 OdfKit 核心已支援的META-INF/manifest.rdf封裝 RDF metadata 屬不同層次;後者由核心OdfRdfMetadata負責,前者需另行設計 position 模型與 merge 語意。 - 目前範圍:JSON Collaboration 不再是純 non-goal。OdfKit 將其限定為 extension-scoped compatibility subset,由選用套件
OdfKit.Extensions.Collaboration對標 TDF ODF Toolkit 的公開 operation 名稱、wire shape 與 reference JSON;核心OdfKit不新增依賴。 - 已納入範圍:匯入端接受裸陣列與 TDF 相容的
{ "changes": [...] }封包,並以 typed operation log 保留未知 wire 欄位做 round-trip。OdfKit.Extensions.Collaboration明確宣告 TDF 公開 ODF Text operation 名稱,支援addParagraph、addText、addTab、addLineBreak、基本formatrange 字元屬性(含前景色、背景色、大小寫轉換、small-caps 與上標/下標)、單段落delete/move、最上層splitParagraph/mergeParagraph、基本清單段落與 metadata-onlyaddListStyle、固定尺寸文字表格addTable/addRows/addCells/addColumn/deleteColumns、addField/updateField、addNotecomment、addHeaderFooter/deleteHeaderFooterContent、addFontDecl與安全addDrawingplaceholder replay;addStyle、changeStyle、deleteStyle、documentLayout等 metadata-only operation 會進入 import report 診斷而不靜默失敗。 - 仍屬非目標:完整多人協同演算法、任意衝突合併、undo stack、OT、CRDT、跨段落刪除/移動、完整 drawing DOM 語意、動態表格擴張,以及 header/footer/note selection 的完整語意,仍不納入核心與本輪承諾。授權策略採 clean-room:只使用 TDF 公開文件、operation 名稱、wire shape 與 reference JSON 作行為對標,不複製 Java 原始碼。
5. 重要缺口的產品決策
下列項目是巨集管理以外最容易被誤認為「完整 ODF 工具包必須內建」的能力;處理方式以 互通性、安全邊界與可維護性為判準,而不是把辦公軟體執行階段搬進核心庫:
| 項目 | 決策 | 目前完成線 |
|---|---|---|
| ODF 1.0 存量文件驗證 | 納入核心 | 已內建 OASIS ODF 1.0~1.4 官方 schema provider,並加入 1.0 正/負 corpus canary 與 Jing 外部驗證矩陣 |
| 巨集管理 | 選用擴充 | OdfKit.Extensions.Scripting 管理標準 script、事件繫結及 LibreOffice Basic/Python package profile;核心仍只保留淨化能力 |
| 巨集執行與簽章 | 不納入執行階段 | 由 LibreOffice 等 consumer 執行;OdfKit 修改巨集後移除失效簽章,不假裝重新簽署或判定原始碼安全 |
| 高保真渲染與物理分頁 | 後端介面 | 維持第 1 節決策,以 LibreOffice 或其它可替換 renderer 實作,不在核心重建排版器 |
| 公式與樞紐表完整重算 | 有界核心+consumer | 核心可物化受限樞紐、計算欄位、分組、總計與常用 Show Values As;外部來源、pivot chart、slicer、完整 cache/UI 與 Calc/Excel 全語意仍由 consumer 負責 |
| 多人協同與衝突合併 | 限定擴充子集 | 維持第 4 節所列相容 operations;OT、CRDT、任意衝突合併及完整 undo 仍為明確非目標 |
因此,近期實作優先順序是補齊可由規格、corpus 與真實 consumer 驗證的封裝與互通缺口; 需要完整辦公軟體 runtime 的重算、排版、協同合併及巨集信任判定,則維持清楚的介面或非目標 邊界,避免核心套件產生無法可靠驗證的「全功能」承諾。