Igniters, I would like to gather some opinions on whether we want to focus on sync vs async APIs in Ignite 3.
Here are some initial considerations that I have: 1. Ignite 2.x is essentially "sync first". Async APIs exist, but they use non-standard IgniteFuture and provide counterintuitive guarantees. In my experience, they significantly lack usability, and because of that are rarely used. 2. In general, however, async execution becomes more and more prominent. Something we can't ignore if we want to create a modern framework. 3. Still, async support in Java is very limited (especially if compared to other languages, like C# for example). My current position is the following (happy to discuss): 1. We should pay more attention to async APIs. As a general rule, async API should be primary, with the sync version build on top. 2. In languages with proper async support (async-await, etc.), we can skip sync API altogether. As an example of this, you can look at the first version of the .NET client [1]. It exposes only async methods, and it doesn't look like sync counterparts are really needed. 3. In Java (as well as other languages where applicable), we will add sync APIs that simply delegate to async APIs. This will help users to avoid CompletableFuture if they don't want to use it. [1] https://github.com/apache/ignite-3/pull/306 Please share your thoughts. -Val