--
You received this message because you are subscribed to the Google Groups "Subsurface Divelog" group.
To unsubscribe from this group and stop receiving emails from it, send an email to subsurface-dive...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/subsurface-divelog/6891057d-5984-46cc-a10d-71a0059d3a26n%40googlegroups.com.
Hi Simon.
So I thought I'd see what I could knock out to improve things a bit. Some back and forth with AI agents and I've got a pretty good Android app that scratches my particular itches.
Thanks for sharing this. The UX problems you identified are useful, concrete feedback, and the prototype gives us something tangible to discuss.
I need to clarify an important distinction: this is not a modified
version of Subsurface with a native Android UI. It is an entirely
new implementation that independently reimplements parts of
Subsurface, including the data model, git storage format, cloud
synchronisation, dive-computer protocol and parser, and
dive-planning calculations.
That makes its use of the production Subsurface cloud storage
particularly concerning. Compatibility with the cloud is not
established by producing byte-identical output for one fixture or
by passing simulated synchronisation tests. It also requires
compatibility across the complete data grammar, existing logs,
concurrent edits, merge behaviour, malformed or unexpected data,
and future changes made by Subsurface. A subtle incompatibility
could damage or lose users’ cloud-stored dive data, while the
resulting recovery and support requests would fall on the
Subsurface project.
Please remove support for the Subsurface cloud service immediately
and do not offer test builds that can connect to it. This includes
removing or replacing the currently published development APKs
that provide this capability. Testing against the production
service with users’ real logs and credentials is not an acceptable
way to establish compatibility.
The same architectural concern applies to dive-computer imports.
The current Subsurface applications reuse libdivecomputer and the
shared Subsurface backend rather than independently porting
individual protocols and parsers. That provides broad device
support and avoids maintaining multiple implementations of
critical data-handling code.
The Subsurface project is not interested in investing resources in
maintaining a separate implementation that cannot reuse the
existing backend logic, particularly for cloud storage and
libdivecomputer-based imports.
If you want to continue with this approach, please treat it as a
separate product fork:
- choose a name that clearly distinguishes it from Subsurface and
identifies it as a fork;
- describe builds as independent and unsupported by the Subsurface
project;
- develop, operate, maintain and fund your own cloud storage
service if cloud synchronisation is required;
- take responsibility for compatibility, device testing, data
recovery and user support;
- avoid presenting its releases as Subsurface test builds or as a
prospective official replacement.
The original reports about freezes, startup behaviour, navigation
and location handling remain useful. Please report those
separately, with the Subsurface version, Android version, device
model and application log where available, so they can be
investigated in the existing application.
Ngā mihi
Michael Keller
I need to clarify an important distinction: this is not a modified version of Subsurface with a native Android UI. It is an entirely new implementation that independently reimplements parts of Subsurface, including the data model, git storage format, cloud synchronisation, dive-computer protocol and parser, and dive-planning calculations.
That makes its use of the production Subsurface cloud storage particularly concerning. Compatibility with the cloud is not established by producing byte-identical output for one fixture or by passing simulated synchronisation tests. It also requires compatibility across the complete data grammar, existing logs, concurrent edits, merge behaviour, malformed or unexpected data, and future changes made by Subsurface. A subtle incompatibility could damage or lose users’ cloud-stored dive data, while the resulting recovery and support requests would fall on the Subsurface project.
The same architectural concern applies to dive-computer imports. The current Subsurface applications reuse libdivecomputer and the shared Subsurface backend rather than independently porting individual protocols and parsers. That provides broad device support and avoids maintaining multiple implementations of critical data-handling code.
--
You received this message because you are subscribed to a topic in the Google Groups "Subsurface Divelog" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/subsurface-divelog/QJElGN_vJng/unsubscribe.
To unsubscribe from this group and all its topics, send an email to subsurface-dive...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/subsurface-divelog/510ba7bc-7a59-43bb-a86d-d7e902c82b47%40042.ch.
Hi Simon.
So two potential ways forward and I'm keen to hear your thoughts.
1. Improve the existing code base. I attempt to improve the existing app directly to specifically scratch the itches I . Would you be willing to accept AI-produced patches for these kinds of improvements?2. I build a separate app with its own UI component but use the underlying code for all the important logic: file format, sync system, dive planner, dive computer syncs etc. This would be more a UI skin wrapped around the existing app logic. Compatible but separate, still using the underlying cloud sync. Perhaps with the sync endpoint getting some data integrity checks.
Thank you for removing the test build.
The Subsurface cloud was designed specifically to fill a
functional gap in Subsurface, not to create a broader ecosystem.
Otherwise, we would probably have used something like files on
Google Drive and left users to support that setup themselves when
it broke. The cloud infrastructure is also funded by Subsurface
supporters and maintainers.
I agree that a native application generally provides the best user
experience. The practical problem is that this would require at
least two independent implementations, and possibly three because
native Android is not native iOS. Maintaining and testing those
implementations is not realistic for a community-driven
open-source project.
Both options 1 and 2 seem reasonable. Option 1 is probably better
suited to Subsurface because the desktop application already uses
Qt, making its APIs relatively straightforward to expose to QML on
mobile. There is no architectural reason, however, why a native
frontend could not communicate with the existing C++ backend.
Many of the UX problems you identified result from deliberate
scope choices. The priority was to deliver useful mobile
functionality without first investing substantial effort in
perfecting every interaction. They are not necessarily inherent
limitations. For example, the application could show the current
local dives immediately at startup while synchronising with the
cloud in the background.
As Jason suggested, the most effective way to move this forward
would be to apply your experience and effort to improving the UX
of the existing mobile application. The issues you have identified
provide useful starting points, and contributions addressing them
would benefit current users without creating another complete
application that the community would then need to maintain.
Ngā mihi
Michael Keller