The Eclipse Foundation and Goldman Sachs have announced a joint venture, moving the popular GS Collections open source framework development to Eclipse. The move was anticipated as early as late December 2015, when a clone of the former com.gs.collections appeared in Maven Central sporting a rebranded appellation org.eclipse.collections eclipse-collections-api.
InfoQ spoke to GS Collections creator Donald Raab about the new relationship.
InfoQ: What was the reason for making this move?
Raab: We have seen a steady increase in adoption of GS Collections over the past four years. We have been asked many times since releasing GS Collections on GitHub whether we accept external contributions to the framework. Until now, the answer has been “no”. With Eclipse Collections the answer to that question is now a definitive “yes”. If a developer wants to contribute to Eclipse Collections, there is a well-defined process for them to do so. We announced the move to the Eclipse Foundation right before JavaOne 2015 on our gs.com/engineering site. By partnering with the Eclipse Foundation, we hope to grow a vibrant and open community of contributors and committers around the Eclipse Collections project. The Eclipse Foundation has given us a mature set of processes and tools to help us achieve this.
InfoQ: Can you fill us in on the evolution of the move?
Raab: Goldman Sachs joined the Eclipse Foundation as a solutions member and we submitted the project proposal for Eclipse Collections in October 2015. We completed the migration of GS Collections to the Eclipse Foundation and rebranded it as Eclipse Collections in December 2015. We renamed the packages from com.gs.collections to org.eclipse.collections, but we kept the version, so GS Collections 7.0 was migrated to become Eclipse Collections 7.0.
InfoQ: Are those exactly the same?
Raab: Yes, the features are identical between GS Collections 7.0 and Eclipse Collections 7.0.
InfoQ: Tell us about the collections, what does Eclipse Collections do differently from other popular Collections frameworks such as java.util Collections, Google Guava, or Apache Commons Collections?
Raab: Eclipse Collections has features in common with each of these frameworks. It also has features that cannot be found in any of them. The scope and completeness is what makes Eclipse Collections unique.
Eclipse Collections includes a rich functional API inspired by the Smalltalk Collections protocol. We have over 100 methods available on our parent RichIterable interface, which most of our types extend.
Eclipse Collections includes optimized replacements for the standard JDK Collections classes like ArrayList, HashSet, and HashMap. We wanted more memory efficient and performant versions of these classes in addition to a rich functional API. We also wanted memory efficient immutable collections and primitive collections.Eclipse Collections 7.0 supports Java version 5 and above, so you can use Eclipse Collections today and upgrade to Java 8 using automated refactorings available in today’s Java IDEs.
InfoQ: What are some examples of your most interesting collections and features?
- We have memory efficient implementations of Map, Set, Bag (a kind of unordered List), and Multimaps.
- Rich API with eager iteration patterns directly on Collections (no “bun” operations, so called because they require two buns for every meat!)
- Primitive collections with rich APIs.
- Optimized parallel lazy and eager APIs.
- Immutable collections with contractually immutable interfaces (no mutating methods).
- Concise and consistent factories for all container types.
- Lazy Iterables that can be used more than once.
- Our kata style tutorials, that help hone your skills through practice and repetition.
We get Streams for free because we implement java.util Collection interfaces. Eclipse Collections is open for any community contributions.
InfoQ: When did GSC start?
Raab: GS Collections began development in 2004 as a framework named Caramel internally at Goldman Sachs.
InfoQ: When did you open it up to the outside world?
Raab: GS Collections was released on GitHub in January 2012. Eclipse Collections was released on GitHub in December 2015.
InfoQ: How many GS developers have contributed to the framework?
Raab: Around 40 or so Goldman Sachs developers have contributed to Caramel and GS Collections over the years.
InfoQ: What will this partnership mean for the future course of GS Collections?
Raab: Version 7.0 was the last feature release of GS Collections and it will remain available in the Goldman Sachs GitHub account and Maven Central under the Apache 2.0 license. Only bug fixes will be applied. All future feature development and releases will be made to Eclipse Collections at the Eclipse Foundation on GitHub. Now that we have successfully migrated to the Eclipse Foundation all development will be done in the open in GitHub and transparency will be provided around the planning and roadmaps for upcoming Eclipse Collections releases. With the Eclipse Collections 8.0 release we will begin leveraging features of Java 8 directly in the library. The Eclipse Collections 7.x releases will be the last releases to support Java 5 – 7.
InfoQ: Can you share any usage stats?
Raab: It is used quite a lot in Goldman Sachs. We have between three to four thousand Java developers in the firm. GS teams have already begun upgrading to Eclipse Collections since version 7.0 was released in Maven Central at the end of December.
Outside of the firm it is harder to measure the usage but we currently have over 1,430 stars in the GS Collections GitHub repo and hit 20k downloads per month from Maven Central.