[ 
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)

Reply via email to