Replies: 1 comment
-
I think Hydro has a more coherent and relevant pitch as "a way to make writing distributed systems easier" by showing where your code is unsafe and (on my part) doing the trickier optimizations for you. I think monotonicity is a property that the optimizer can leverage (as one of many preconditions for applying a rewrite) but much like we don't expect developers to read the SIGMOD paper, we don't expect them to understand how to use it correctly. |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
As rightfully brought up earlier today, there's an important decision if we focus on non-determinism of "unsafe" APIs or try to align with past Berkeley naming on "monotonicity". Here I make the argument that determinism makes more sense to expose to developers.
Singleton
at a periodic time interval. By a native developer's definition of monotonicity, this operator is monotonic: it emits new elements over time and never retracts them. But sampling aSingleton
is an easy way to introduce bugs into your program, because it is non-deterministic which "version" of the value will be captured. It would be strange to mark this as safe simply because it is monotone, and even more confusing to developers if we claim that this is non-monotone..set_difference
. This feels non-monotone even though the underlying implementation is monotone, and can be quite confusing. I've heard many questions from external developers already about "how do you remove from a set in Hydro if it has to be monotone". Focusing on "monotone programming is good and you should do more of it" is IMO detrimental to our adoption story and scares away developers who a) don't know what monotonicity is or b) make incorrect assumptions about what is monotone. It took me 4 years to fully understand why monotonicity is good. On the other hand, "even with network delays your program does the same thing" is a) straightforward for developers to understand and b) obviously a good thing.Regarding point (1), I'd like to point out that focusing on determinism does not mean throwing away monotonicity. In fact monotonicity is what enables us to guarantee determinism through the various live collections (Z-Sets, LVars, etc). But I think it will be beneficial long term to focus on monotonicity when working on Hydro internals, but determinism as the guaranteed property at the high-level.
Beta Was this translation helpful? Give feedback.
All reactions