moneybalance
moneybalance copied to clipboard
[Feature Request] Shared Balance
I was looking for an app like yours today and it looks like that it fits my needs almost perfectly. Thanks for sharing it for free!
What would be a great feature is the possibility of sharing a balance within the group. In this case everybody would install the app. Now anyone could enter a new expense and it would be synchronized to all members. I think Android has a feature where an app can store data in a cloud account that was previously registered within the system, doesn't it? So one could use a shared Dropbox, OwnCloud, Seafile, whatever folder for synchronizing the database.
Managing distributed balances is one of my biggest feature wishes, too -- not least because right now the phone of the person keeping the list is a single point of failure: If the phone is damaged, lost or stolen all the data is gone. I've been thinking about this a lot, but I couldn't come up with a good solution yet.
First of all, using cloud services is problematic. Network connectivity isn't always available, especially when travelling, so the app must be able to work offline. Therefore any synchronization mechanism must be able to merge data from multiple client, taking care of stuff like conflicts and duplicate entries. The UI for that feature might become a usability nightmare.
My dream would be using Android beam technology to synchronize calculations without network connectivity. Two persons would simply hold their phones back-to-back to share their new data. Of course this approach must be able to deal with the same problems as any cloud-base solution, so it's not really much of an improvement.
Android Beam requires NFC. My phone does not support NFC ;) I don't use the app while traveling but merely in everyday life e.g. when I am out with friends and we don't want to split the bill. In my situations not everybody for whom I pay is available for immediate sharing of the new entry. However, I see your point and I think that merging becomes a problem no matter how the information is synchronized.
Do you already have some ideas on how one could solve the merging problem? I could offer my help with this. I don't think that a perfect solution is possible, so it would come down to a "best effort" one. I will think about a solution...
Yup, as I said, I've been thinking about this for quite some time. ;-) So far my ideas are:
- Each installation of the app has its own unique ID. Expenses are associated with the originating installation's ID.
- All expenses have a modification timestamp (or a change serial number) that is updated whenever an expense is added or modified.
- When synchronizing, i.e. importing expenses from another installation, the app remembers the latest modification timestamp for each peer instance.
- In subsequent syncs, only entries with newer timestamps are considered, i.e. those that have been added or modified since the last sync with that peer.
- Duplicate entries are not detected. If two users enter the same expense they will both have two equal entries after the sync. Duplicates must be cleaned up manually.
- Conflicts may occur if two users edit the same expense entry after a sync, then sync again. In this case the app will display both conflicting entries and ask the user to select either one.
Some problems to solve:
- What's the best sync medium? As you said, not every phone supports NFC. Storing the database on a cloud file service like Dropbox might be a solution, but every user would have to take care of granting read-only access to their databases to everybody else. Might be ugly to set that up.
- What happens if something else is changed in the calculation, like the list of users (not yet supported, but there's a feature request) or the currencies?
+1
+1
+1