Hi all. I wasn't entirely sure if this belonged in the "community" section or the "code review" section; if needed I can delete and move to a more appropriate location.
I am seeking some general feedback on my project named Treaty; the README in the repository is here. This code base is a rewrite from various re-implementations of the same idea.
There are also links on that README to the FAQ and Demo. There is also a manual which is still in progress. I have tried to be very verbose in describing my intent. As a new poster here I cannot add more than 2 links to a post, so I apologize for not being able to link directly to those documents.
I have spent several years iterating on this idea in my spare time; but the feedback I have received has always been somewhat convoluted which I have attributed to the fact that the idea itself is also somewhat convoluted. In the past I've gotten responses such as "Just put it on the blockchain" or attempting to build a full-blown RMDBS from scratch, which is well beyond my capabilities and free-time. To resolve this, I have tried over the past year to write a simple concrete example of my idea, and I am again requesting (tactful) feedback from the public.
Specifically, I am seeking feedback on approach towards the idea, and approaches in code. I have attempted to teach myself Rust over the past year, and I am aware that I am not always writing idiomatic Rust.
Feedback on the approach may be along the lines of: Is there a simpler way to do this? Or do you feel that this is feasible? What challenges am I not considering?
Feedback on code may be: I noticed that you're using
.unwrap() everywhere, have you considered X? Or Y?
Treaty is an experimental data sharing service. Specifically, it's an API that sits between your application and Sqlite. It intends to empower application developers who want to give data in their application back to their users. It's also intended to give users who want their data access to it in SQL, with the option of storing it in their infrastructure and having full read/write options on it.
You send to Treaty regular SQL statements, and based on what calls you make to Treaty, you can have it execute that SQL against your database or your user's database.
I have a fear that the idea may be confusing, so I have tried very hard to explain the approach and also acknowledge concerns both in the README, FAQ, and manual. I also wanted to try and show an example of how this may work in the Demo; although the Demo is somewhat long.
I wrote Treaty against Sqlite because it was the simplest option that I could leverage in my spare time and the most familiar database type to me. I have a hope to try and also implement it against Postgres and MySQL. I also have a hope that to increase adoption of the idea to also provide additional API calls that support No-SQL style data (Key-Value at first) but still backed by Sqlite.
This project is still very much in-flight and doesn't have a release. I am continually at odds with my ideas which always seem infinite and my free-time which is not infinite.