This proposal has been approved and the Eclipse Collections project has been created.
Visit the project page for the latest information and development.

Eclipse Collections

Wednesday, September 30, 2015 - 18:26 by Donald Raab
This proposal is in the Project Proposal Phase (as defined in the Eclipse Development Process) and is written to declare its intent and scope. We solicit additional participation and input from the community. Please login and add your feedback in the comments section.
Parent Project
Proposal State
Created
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.

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. 

Project Scheduling

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

Project Leads
Committers
Donald Raab (This committer does not have an Eclipse Account)
Hiroshi Ito (This committer does not have an Eclipse Account)
Mohammad Rezaei (This committer does not have an Eclipse Account)
Mentors
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.

Source Repository Type