Replies: 2 comments
-
|
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.
-
|
Counterpoint: Why nondet may not be the right choice
Alternative names for the property we test
I don't want to get stubborn about uncalm, but I don't think we should discard calm-related words without further discussion: The case against uncalm, summarized
The case for uncalm
|
Beta Was this translation helpful? Give feedback.
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.
Singletonat 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 aSingletonis 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