Eclipse Collections Creation Review

Type: 
Creation
State: 
Successful
End Date of the Review Period: 

Reviews run for a minimum of one week. The outcome of the review is decided on this date. This is the last day to make comments or ask questions about this review.

Wednesday, November 18, 2015
Proposal: 

Eclipse Collections

Parent Project: 
Background: 

Goldman Sachs open sourced GS Collections in GitHub in January 2012.  Since then we have seen a steady increase in interest in the project.  We have not previously accepted external contributions to the framework.  We would like to change that by creating a more open project that we can grow a diverse community around.  We feel we can best accomplish this by moving GS Collections to the Eclipse Foundation, renaming the product to Eclipse Collections and renaming the packages from com.gs to org.eclipse.  

Scope: 

The Eclipse Collections project provides object and primitive data structures for Java (e.g. List, Set, Bag, Multimap, BiMap, Stack).  New container implementations, new iteration protocols, additional parallel iteration patterns and types may be added over time but they should extend one of the root types like RichIterable, PrimitiveIterable or ParallelIterable.

Description: 

Eclipse Collections is a collections framework for Java. It has JDK-compatible List, Set and Map implementations with a rich API, additional types not found in the JDK like Bags, Multimaps and set of utility classes that work with any JDK compatible Collections, Arrays, Maps or Strings. The iteration protocol was inspired by the Smalltalk collection framework.

Eclipse Collections started off as an open source project on GitHub called GS Collections.  GS Collections has been presented at the JVM Language Summit in 2012 and JavaOne in 2014.  There are two articles (part one and part two) on InfoQ.com showing some of the capabilities of the collections framework through examples.  A performance comparison between the parallel lazy implementations of Java 8, Scala and GS Collections was presented at QCon New York in 2014.  A set of memory benchmarks is available here.   

Why Here?: 

We can work much more directly and collaboratively with the community by accepting external contributions through the Eclipse contributor agreement, using git as the primary repository, communicating through Eclipse email distribution lists, wikis, and bug trackers.

Similar to the Eclipse IDE, Eclipse Collections has gotten a lot of inspiration over the years from Smalltalk.

Initial Contribution: 

The copyright for GS Collections is owned by Goldman Sachs and the project is currently licensed under Apache 2.0 on GitHub.  There have been no external contributors to the project so all of the IP is owned by Goldman Sachs.  We will fork the project and rename the packages but will leave GS Collections in its current form under the Apache 2.0 license on GitHub.  The code for GS Collections 7.0 will be almost identical to the code for Eclipse Collections 7.0, except for the difference in package names.  We would like to use both the EPL 1.0 and EDL 1.0 licenses so we can continue to offer Eclipse Collections under permissive terms.

Eclipse Collections has no runtime dependencies on any third-party libraries.

Project Scheduling: 

We would like to provide the initial contribution for Eclipse Collections 7.0 before the end of 2015.

Future Work: 

The library currently provides compatibility back to JDK 1.5.  We would like to make a major change to the libary (Eclipse Collections 8.0) by upgrading the library to only be compatible with Java 1.8 or higher.  This will give us tighter interop with new functional interfaces and new interfaces like Streams, where we can provide optimized implementations for the framework.

We will give presentations on Eclipse Collections at Java User Group meetups and technical conferences globally (e.g. JavaOne and EclipseCon) as well as writing technical articles for various developer focused websites. 

People
Project Leads: 
Committers: 
Donald Raab
Hiroshi Ito
Mohammad Rezaei