So... Would it be fair to say that everybody would be satisfied if we treated the "glorified combine" transforms (Sum, Count, Mean, Sample, Latest) the following way: - For each case, SDK must expose the relevant CombineFn as a static factory function: e.g. Sum.ofIntegers(), Latest.of(), etc. [it may make sense to discuss the naming of these CombineFn factory functions so they are not confused with neighboring PTransform factory functions] - Expose also a PTransform factory function, returning either a PTransform<InputT, OutputT> (if there's nothing to configure on the transform), or its concrete subclass (if there is something to configure). Transition from PTransform to subclass is always possible in a backward-compatible way, so it's safe to err on the side of returning PTransform. - Do *not* return concrete types from the PTransform factory function such as Combine.Globally - instead, if the user has an advanced use case and wants to configure the combine, they should apply Combine.globally() themselves to your exposed CombineFn.
In particular, this means: - Sum, Mean stay unchanged - Count, Sample, Latest should additionally expose their CombineFn's: Count.of()? or how should we name them? - Count.globally() and Count.perKey() should be changed from returning Combine.Globally and Combine.PerKey to returning the more general type PTransform<..., ...>. Cases where the user relies on them returning a Combine should be changed to applying the Combine manually. Makes sense? On Tue, Feb 7, 2017 at 10:50 PM Dan Halperin <dhalp...@google.com.invalid> wrote: > I am generally persuaded to at least change my number to something like 0 > :). These are pretty reasonable perspectives, especially pointing out that > withSideInputs is pretty useless in Count ;) > > On Tue, Feb 7, 2017 at 10:04 PM, Kenneth Knowles <k...@google.com.invalid> > wrote: > > > On Tue, Feb 7, 2017 at 8:43 PM, Eugene Kirpichov < > > > > > kirpic...@google.com.invalid> wrote: > > > I must admit I didn't quite > > > understand the option of "implements CombiningTransform". > > > > > > > On Tue, Feb 7, 2017 at 9:04 PM, Robert Bradshaw > > <rober...@google.com.invalid > > > wrote: > > > > > Sorry, I'll try to clarify. ... <<codez>>... > > > > > > > FWIW this is also what I meant by my 3b "HasACombineInsideIt". The > > difference between my suggestion and Robert's is that I used a self type, > > which is really not worth the trouble (in fact, it blocked me from > bringing > > this to fruition last time we had this same conversation). > > > > Kenn > > >