[
https://issues.apache.org/jira/browse/FLINK-3093?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15055093#comment-15055093
]
ASF GitHub Bot commented on FLINK-3093:
---------------------------------------
Github user StephanEwen commented on the pull request:
https://github.com/apache/flink/pull/1427#issuecomment-164288665
Thanks for the initiative, Robert. I had a look and here are some thoughts:
### General Comments
- The interface declarations should declare their targets:
- @PublicInterface should have `@Target(ElementType.TYPE)`
- @PublicExperimental should have `@Target({ ElementType.TYPE,
ElementType.METHOD })`
- How about shortening the name `@PublicInterface` to `@Public` or
`@PublicAPI`
### Stability decisions to make before 1.0
- We need to think about whether we change the RichGroupReduceFunction to
implement the regular combine function (combining into one value) rather than
the group combine function. While API breaking, it allows for more efficient
pre-aggregations.
### Classes that I suggest not to declare public
- `Key` (I would suggest to entirely remove that class, separate Pull
Requests)
- `Nothing` (May even remove that and replace it by `Void`)
- `InputSplitAssigner` : I think we need to change that one a bit to
support more fine grained fault tolerance for data sources.
- `ConfigConstants` : Not sure if we should encourage people to use this
class.
- `AccumulatorHelper` : No need to expose this, and might change.
- `IntCounter`, `LongCounter`, `DoubleCounter` : These are actually
"sums", not couners. If we declare them stable, we should at least fix their
wrong name ;-)
- Anything under `org.apache.flink.api.common.aggregators`. Would be nice
to have aggregators unified with accumulators in the long run.
- For the same reason, we need to mark the Aggregator releated methods in
`IterationRuntimeContext` as experimental.
- `StrictlyLocalAssignment` : This is still experimental, we have not yet
had users of that and a chance to see it validated.
- `SemanticProperties` could be declared public experimental.
- `TypeSerializer` and `TypeComparator` : These are not touched by users
usually, and we may want to change them a lot depending on future designs for
serialization improvements and intermediate data layout.
### The following classes should be declared as stable, in my opinion:
- `GenericInputSplit` : Part of the publis stable `GenericInputFormat`
- `SplittableIterator` : This is an exposed class for parallel collection
sources.
- `TraversableOnceException` : Simple (and virtually empty) exception
class thrown into user code by the runtime.
### Classes that are good candidates for public API:
- `NumberSequenceIterator` : This is a good and stable utility class.
- `XORShiftRandom` : This is a good and stable utility class.
- `MemorySegment` : If in the future, we allow UDFs to reserve and use
managed memory (as suggested by Chengxliang Li's pull request, this will need
to be declared stable later anyways)
> Introduce annotations for interface stability
> ---------------------------------------------
>
> Key: FLINK-3093
> URL: https://issues.apache.org/jira/browse/FLINK-3093
> Project: Flink
> Issue Type: New Feature
> Components: Build System
> Affects Versions: 1.0.0
> Reporter: Robert Metzger
> Assignee: Robert Metzger
> Priority: Blocker
>
> For the upcoming 1.0 release, we want to mark interfaces as public/stable so
> that we can automatically ensure that newer Flink releases (1.1, 1.2, ..) are
> not breaking them.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)