×

Status message

This proposal has been approved and the Eclipse Collections project has been created.

Eclipse Collections

Basics
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: 
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.

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
Source Code
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: 
Ayush Dev's picture

Thanks Don.. :)

Ayush Dev's picture

Hi All,

 

How can I be part of this project i.e. in learning as well as contributing?  Please provide guide lines as this would be my first opensource project.

I have experience in Java Development for two and a half years.

 

Regards

Ayushya

Donald Raab's picture

Hi Ayushya,

Glad to see you are interested in the Eclipse Collections project.  Currently, the project is still waiting for the creation review to happen.  The review has been scheduled for Nov. 18.  When the project is fully provisioned and setup you should follow the guidelines for contributing to any Eclipse project - https://www.eclipse.org/contribute/

If you would like to start the learning process now, you can check out the GS Collections Kata here: https://github.com/goldmansachs/gs-collections-kata.  There are instructions for setting up the kata, and there is a PDF file which covers the subject matter in the library.  The kata itself is a set of unit tests built around a simple domain.  You need to get the failing tests to pass using the GS Collections API.  There are also a bunch of links to presentations, videos, and articles about GS Collections here: https://github.com/goldmansachs/gs-collections/wiki.  

If you want to start looking at the code which will eventually be Eclipse Collections 7.0 in the Eclipse Foundation GitHub repo, you can see and check out the source for GS Collections 7.0 here: https://github.com/goldmansachs/gs-collections.  When our Bugzilla instance for Eclipse Collections is set up, we will seed it with some ideas for potential features that could be worked on.

If you have any questions around the GS Collections kata or GS Collections before the Eclipse Collections project is fully set up, you can ask the questions in StackOverflow.  We will see questions if you tag them as gs-collections.

Cheers,

Don