4 ms·
Hi HN, basically a one-man show here. Hypergolix just entered its alpha release, and I thought it would be an excellent opportunity for feedback. The fundamenta
by nbadg 10y ago
Hi HN, basically a one-man show here. Hypergolix just entered its alpha release, and I thought it would be an excellent opportunity for feedback. The fundamental motivation of the project is for individuals to retain autonomy over information they store on untrusted third-party servers; the hope is that Hypergolix can make "IoT" development easier with client-side encryption than without it.
Some links:
[1] Project website: https://www.hypergolix.com/ https://www.hypergolix.com/
[2] Hypergolix source (~36k LoC): https://github.com/Muterra/py_hypergolix https://github.com/Muterra/py_hypergolix
[3] Golix docs (the crypto protocol that powers Hypergolix): https://github.com/Muterra/doc-golix https://github.com/Muterra/doc-golix
[4] Golix Python implementation (~5k LoC; needs rewrite): https://github.com/Muterra/py_golix https://github.com/Muterra/py_golix
[5] Hypergolix Slack channel: https://hypergolix.signup.team/ https://hypergolix.signup.team/
- mempko 10y agoAs a fellow distributed software developer (http://firestr.com http://firestr.com) great work! Quick question, how are you doing conflict resolution if there is a long term network partition? Does a client have any control over merge conflicts?
- nbadg 10y agoThanks! All mutable objects have an internal monotonic counter. Currently, whichever counter is highest takes precedence, and any decreasing counter is rejected by the server. The "older" (lower counter) copy will receive an error when it tries to push, which will automatically pull in the most recent state. The application can then decide what to do. That being said, contention issues like this require: 1. the same account 2. to be accessing the same object 3. at the same time 4. from multiple computers 5. one (or more) of which goes offline 6. while both are still producing data This is the primary reason why support for concurrent instances of the same account is very experimental. All objects are single-author, so if you don't have that concurrent sign-ons, you have no contention. Conflict resolution will always be an application-level concern. I would like to expose some synchronization primitives (distributed locks, semaphores, etc) for use within accounts, but this is a ways down the road.
- nbadg 10y agoAdditionally, if you're interested in supporting the project financially, but don't have need for an account, click the red "here" link at the bottom of this page [1] to register with a placeholder account. You can then convert that to a full account at any time. [1] https://www.hypergolix.com/register.html https://www.hypergolix.com/register.html
- jwong_ 10y agoHow does one go about getting this to work? Clicking "here" brings up a modal asking for my name and address. Entering that populates the fingerprint field in the middle tier, but then it asks for payment info.
- nbadg 10y agoAre you trying to run Hypergolix or register it? Follow this guide to get Hypergolix installed and running: https://pyhgx.readthedocs.io/en/latest/setup-1-installing.html https://pyhgx.readthedocs.io/en/latest/setup-1-installing.ht... After you have Hypergolix running (you need to start it once to generate a fingerprint), you can register your fingerprint via hypergolix config --register which will bring up a browser window that will propagate the box with your fingerprint. From there, checkout is powered by stripe. Does that answer your question? If not, can you clarify a bit what you're asking?