From 3529fa8d7076d4fd12fb64297c4c6c28e3bc08ca Mon Sep 17 00:00:00 2001 From: Patrick Goldinger Date: Sat, 21 Oct 2023 15:09:52 +0200 Subject: [PATCH] Add initial new ROADMAP --- README.md | 7 +-- ROADMAP.md | 128 ++++++++++++++++------------------------------------- 2 files changed, 40 insertions(+), 95 deletions(-) diff --git a/README.md b/README.md index 54694288..841489f9 100644 --- a/README.md +++ b/README.md @@ -7,9 +7,6 @@ src=".github/repo_icon.png" alt="App icon"> devices. It aims at being modern, user-friendly and customizable while fully respecting your privacy. Currently in early-beta state. -**The current focus is on implementing next-word suggestions, which has become complicated/hit a snag and is taking more time than originally planned.** -**Updates will come when this issue is resolved. Thank you for being patient.** -
@@ -58,7 +55,7 @@ fully respecting your privacy. Currently in early-beta state.
Beginning with v0.4.0 FlorisBoard will follow [SemVer](https://semver.org/#summary) versioning scheme. -Beginning with v0.5.0 FlorisBoard will enter the public beta on Google Play. +Beginning with v0.6.0 FlorisBoard will enter the public beta on Google Play. ## Highlighted features - Integrated clipboard manager / history @@ -107,7 +104,7 @@ Many thanks to [Nikolay Anzarov](https://www.behance.net/nikolayanzarov) ([@Bloo ## License ``` -Copyright 2020-2022 Patrick Goldinger +Copyright 2020-2023 Patrick Goldinger Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/ROADMAP.md b/ROADMAP.md index 3ff6c956..5fce8885 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -1,120 +1,68 @@ -# FlorisBoard's feature roadmap & milestones +# Roadmap -This feature roadmap intents to provide transparency to what I want to add to FlorisBoard in the foreseeable future. -Note that there are no ETAs for any version milestones down below, experience says these won't hold anyways. +This feature roadmap intents to provide transparency to what is planned to be added to FlorisBoard in the foreseeable future. Note that there are no ETAs for any version milestones down below, experience has shown these won't hold anyways. -I try my best to release regularly, though some features take a lot longer than others and thus releases can be spaced -out a bit on the stable track. If you are interested in following the development more closely, make sure to follow -along the beta track releases! These are generally more unstable but you get new stuff faster and can provide early -feedback, which helps a lot! +Each major milestone has associated alpha/beta releases, so if you are interested in previewing features quicker, keep an eye out! Each major 0.x release has also patch releases after the initial major release, which will be published on both the stable and beta tracks. ## 0.4 -Major release which mainly focuses on adding proper word suggestions and inline autocorrect (for Latin-based languages -only at first). This is a big effort which will take some time to be fully completed. Additionally general small bug -fixes and improvements will be made alongside the development of the main objective. +**Main focus**: Getting the project back on track, see [TODO: insert discussion link!!](javascript:void(0)) for details. Note that this has also replaced the previous roadmap, however this step is necessary for getting the project back on track again. -With this release the versioning scheme changes to `0.x.y`, where `x` specifies the major changes, and `y` are just -small bug fixes and improvements for the former major stable release `x`. This is different to `0.3.x`, where the -version scheme just did not make any sense anymore, especially with the latest `0.3.x` releases. As for the beta track, -major developments (`0.x`) will have alpha, beta and release candidate releases on the beta track before it goes live on -the stable track. Small follow-up bug fixes (`0.x.y`) will be published on both the stable and beta track without -release candidates. +This includes, but is not exclusive to: +- Fixing the most reported bugs/issues +- Merging in the Material You theme PR -> Adds Material You support (v0.4.0-alpha05) +- Merging in other external PRs as best as possible +- Reworking the Settings UI warning boxes and hiding any UI for features related to word suggestions until they are ready +- Remove existing glide/swipe typing (see 0.5 milestone) +- Fix compilation issues introduced with the 0.4 alphas as best as possible -### Word suggestions / Autocorrect +Maybe in this release, but no guarantee and may be delayed to 0.5: +- Develop usable preview of an on-device statistical word suggestion algorithm (see the main [NLP project](https://github.com/florisboard/nlp) for details) +- Add experimental plugin system which supports communication with the aforementioned native suggestion algorithm +- Include precompiled dictionaries for major languages: English (US/UK), German, Spanish, French, Italian & Russian -The development effort of this feature is quite big, thus it is split into multiple phases: - -**Phase 1: Preparations of suggestions UI & interfacing API (first alpha release(s))** - -- Rework Smartbar suggestions UI - - Allow for primary and optionally secondary label (in a smaller font) to be shown per suggestion - - Better integrate clipboard suggestions into word suggestion flow - - Add long-press suggestion action for user to prevent from showing again - - Generally fix and polish suggestions UI design (3-column mode and scrollable mode) -- Add a `SuggestionProvider` interface API to allow for any specialized implementation to be written - - A provider's main task is to receive updates on the current state of the editor (except for raw inputs) and - provide both current word autocorrect/suggestions or next word suggestions if there is no current word - - The provider can utilize the basic APK asset and file APIs for reading dictionary files, however there is no - standardization in parsing as different languages may require different dictionary structures and thus have - different requirements - - Document API and add dummy implementation to test API -- Try to add toggle for not underlining the current word (composing region) while not loosing the caching benefits -- In parallel: Do local research and preps for phase 2 - -_[Anomaly](https://www.anomaly.ltd/), an Australian software company, will sponsor this project with 1000€ so this phase -gets implemented first, as they want to use FlorisBoard as a base for -their [WCC Language Program project (Gurray)](https://www.anomaly.ltd/portfolio/wcc/gurray/). As this fits in perfectly -with the current dev cycle and this had to be done anyways (some parts like documenting and UI polishing just later in -the 0.4 milestone), I have accepted this. However in general this does not mean this project accepts sponsoring for any -feature to be prioritized, as the project's main goals and planned feature timeline must always come first and human dev -resources are limited._ - -**Phase 2: Add native (C++) Latin word suggestion core (alpha releases)** - -- Research and experiment with different approaches/data sources for Latin-based language prediction and autocorrect - - Research will mainly be done first locally on Linux to decide what to use - - Implementation will be in C++ using STL libraries and if needed other open-source libraries, with compatibility - and CPU/memory restrictions on Android devices in mind - - Once an experiment runs well locally it will be included in the main project and tested out within the keyboard UI - in different alpha releases - - Especially at the beginning an idea may be scrapped and replaced by something else if found that another approach - is better -- (Based on research) Introduce new dictionary/language model format - - Importing the dictionaries/models as well as management relies on the Flex extension core and UI in Kotlin - - Actually parsing and generating suggestions happens in C++ - - The actual format of the dictionary/model source is not decided yet - - Add system in preprocessing stage to properly mark slightly offensive words and prevent extremely offensive words - from being included at all - - Add system in preprocessing stage to filter out email addresses and phone numbers that may be included in the - large datasets which are used for building the models - -**Phase 3: Add support for more languages & Allow glide typing to utilize new word prediction system (beta releases)** - -- Glide typing: Utilize new prediction system and get rid of current English (US) json dictionary -- Add support for more languages (Latin-based), may need to utilize datasets like Opensubtitles or Wikimedia, although - those need extensive cleaning and are not as reliable -- Focus on improving performance and stabilizing the Latin suggestion core -- Possibly address some language-specific issues and ensure suggested word capitalization is correct -- Finalize Settings and keyboard UI regarding word suggestions. - -### Other planned features for 0.4 - -- General small fixes and improvements -- Community repository on GitHub for extension sharing across users (may be 0.5.0 though) -- Localized emoji suggestions (may be 0.5.0 though) +Note that the previous versioning scheme has been dropped in favor of using a major.minor.patch versioning scheme, so versions like `0.3.16` are a thing of the past :) ## 0.5 +- New text processing logic + - RFC document with technical details will be released later +- New keyboard layout engine + file syntax based on the upcoming Unicode Keyboard v3 standard + - RFC document with technical details will be released later +- Add Tablet mode / Optimizations for landscape input based on new keyboard layout engine +- Reimplementation of glide typing with the new layout engine and word suggestion core +- Add support for any remaining new features introduced with Android 13 + +## 0.6 + - Complete rework of the Emoji panel - - Recently used / Emoji history (already implemented with 0.3.14) - - Emoji search - - Emoji suggestions when using :emoji_name: syntax - - Kaomoji panel implementation (the third tab which currently has "not yet implemented") -- Smartbar customization improvements - - Quick actions customization (order and which buttons to show) -- Prepare FlorisBoard repository and app store presence for public beta release on Google Play (will go live with stable - 0.5.0!!) + - Recently used / Emoji history (already implemented with 0.3.14) + - Emoji search + - Emoji suggestions when using :emoji_name: syntax + - Kaomoji panel implementation (the third tab which currently has "not yet implemented") + - Maybe: consider upgrading to emoji2 for better unified system-wide emoji styles) +- Prepare FlorisBoard repository and app store presence for public beta release on Google Play (will go live with stable 0.6) - Rework branding images and texts of FlorisBoard for the app stores - Focus on stability and experience improvements of the app and keyboard +- Add support for new features introduced with Android 14 +- Not finalized, but planned: raise minimum required Android version from Android 7 (SDK level 24) to Android 8 (SDK level 26) -## Backlog +## Backlog / Planned (unassigned) -**Features that MAY be added (even in versions mentioned above) or dismissed altogether** +**Features that MAY be added (even in versions mentioned above) or dismissed** +- Upgrade Settings UI to Material 3 - Full on-board layout editor which allows users to create their own layouts without writing a JSON file - Import/Export of custom layout files packed in Flex extensions - Theme rework part II - Adaptive themes v2 -- Voice-to-text with Mozilla's open-source voice service +- Voice-to-text with Mozilla's open-source voice service (or any other oss voice provider) - Text translation - Proximity-based key typo detection - Floating keyboard -- Tablet mode / Optimizations for landscape input - Stickers/GIFs - FlorisBoard landing web page for presentation - Implementing additional layouts - Support for Tasker/Automate/MacroDroid plugins - Support for WearOS/Smartwatches - Handwriting -- ...