feat(store)!: delete the vendored dmfs provider
Phase 5 of docs/OWN-STORE.md. The :provider module goes — 84 Java files, 14,555 lines, its <provider>, its two custom permissions, its 13 translated strings and its three dmfs runtime dependencies. Room has been the default since the previous commit and every v0.3.x install has been imported, so nothing reads it any more. StorageMode.LOCAL is gone with it; OWN and EXTERNAL are what remain. ProviderResolver narrows to what it was always really for — discovering external providers — and answers null in OWN mode, where there is no authority to resolve. Callers that need to tell that apart from "External with nothing installed" ask mode(). ProviderStatus is unconditionally READY in OWN mode: the permission gate only ever applied to External, and that is now visibly true rather than a special case inside it. A stored LOCAL is read as OWN rather than as an unparseable value. Left to fall through to autoMode, someone who had explicitly chosen local storage while also having OpenTasks granted would have been sent to OpenTasks instead. ProviderChangeReceiver's manifest filter drops our own authority — safe now, because nothing of ours broadcasts ACTION_PROVIDER_CHANGED. In OWN mode Room's InvalidationTracker covers foreground changes and nothing outside the app can change our data. When SYNC.md phase 3 lands, the sync worker must call ReminderScheduler.sync() itself; that is the replacement for the broadcast and it belongs in the sync work. lib-recur stays as a direct dependency and is still Apache-2.0 dmfs, so the attribution is still owed — now as a normal third-party dependency. provider/PROVENANCE.md is replaced by a postscript in STORAGE-DECISION.md recording that the fork existed, why, and the one detail that still binds us: tasks.org is DB 22 and has no is_recurring, so TaskMapper must keep deriving recurrence from rrule/rdate. BREAKING: the de.jeanlucmakiola.agendula.tasks authority and both custom permissions are gone. Anyone who pointed DAVx5 or another app at that authority loses it; External mode is the answer. Needs calling out in the release notes. Verified: the APK declares no ContentProvider, no custom permission and no agendula.tasks authority, and carries no dmfs provider classes.
This commit is contained in:
@@ -250,3 +250,35 @@ point of sequencing it last.
|
||||
mode arguably already serves the second. Undecided.
|
||||
- **The Room estimate is mine, not measured.** Instance expansion is the item
|
||||
that could overrun; everything else is well-bounded.
|
||||
|
||||
---
|
||||
|
||||
## Postscript: the fork existed, and how it ended
|
||||
|
||||
`provider/PROVENANCE.md` recorded the vendored dmfs task provider in detail.
|
||||
Both are gone; this is what is worth keeping.
|
||||
|
||||
The module was `opentasks-provider` plus `opentasks-contract` from
|
||||
[dmfs/opentasks](https://github.com/dmfs/opentasks) **1.4.2**, commit
|
||||
`49ebf80b1eeee52a611e5a22f24f849852a6255f` (2021-03-21), Apache-2.0, database
|
||||
version 23. It was vendored in-tree rather than pulled as an artifact because the
|
||||
permission names are hardcoded in the upstream AAR's manifest, and shipping under
|
||||
dmfs's own names would have made Agendula and OpenTasks mutually uninstallable
|
||||
(`INSTALL_FAILED_DUPLICATE_PERMISSION`). In-tree also satisfied F-Droid's
|
||||
from-source requirement.
|
||||
|
||||
It was deleted in the `feat/own-store` work (`docs/OWN-STORE.md` phase 5) once
|
||||
Room was the default and every v0.3.x install had been imported. 14,555 lines of
|
||||
Java left with it.
|
||||
|
||||
**What survives, and why.** `lib-recur` (Apache-2.0, dmfs) is still a direct
|
||||
dependency — it is what expands recurrences — so dmfs's attribution is still
|
||||
owed, now through an ordinary third-party dependency rather than vendored source.
|
||||
`TasksContract.kt` and the External-mode mappers also stay: they describe
|
||||
*somebody else's* schema, which is exactly what they were always right for.
|
||||
|
||||
**One detail the fork's provenance file carried that still binds us.** DB 23 is
|
||||
the first to have `is_recurring`; tasks.org's fork is DB 22 and lacks it. That is
|
||||
why `TaskMapper.task` derives recurrence from `rrule`/`rdate` rather than trusting
|
||||
that column, and it must keep doing so for as long as External mode supports
|
||||
tasks.org.
|
||||
|
||||
Reference in New Issue
Block a user