GSoC/GCI Archive
Google Summer of Code 2015

Clojure

License: Eclipse Public License

Web Page: http://dev.clojure.org/display/community/Project+Ideas

Mailing List: http://groups.google.com/group/clojure

Clojure is a dynamic programming language that targets the Java Virtual Machine (JVM), JavaScript, and Microsoft's .NET framework.  It is designed to be a general-purpose language, combining the approachability and interactive development of a scripting language with an efficient and robust infrastructure for multithreaded programming.  Clojure is a dialect of Lisp, and shares with Lisp the code-as-data philosophy and a powerful macro system. Clojure is predominantly a functional programming language, and features a rich set of immutable, persistent data structures. When mutable state is needed, Clojure offers a software transactional memory system and reactive Agent system that ensure clean, correct, multithreaded designs.

Clojure, as a GSoC mentoring organization, includes projects from all parts of the Clojure ecosystem, from IDE tooling to logic programming libraries.

Projects

  • A Common Clojure Source Metadata Model The goal of this project is to develop a comprehensive and extensible model for describing Clojure sources from an API perspective. I will also write a program that analyses Clojure sources according to this model and outputs data documenting their usage. In order to foster adoption, I will provide extensive documentation, including examples of tools doing useful things with the emitted data, and emphasize active communication with the community.
  • ClojureScript & Google Closure This Google Summer of Code Project will focus on improving the integration of ClojureScript with the existing JavaScript ecosystem. The first part of this project will be to add CommonJS, AMD and ECMAScript 6 module support, meaning that JavaScript modules can be included and used in a ClojureScript project. The second part of this project will focus on generating extern files for non-Closure compatible JavaScript libraries to simplify the use of JavaScript libraries in a ClojureScript project.
  • Testing environment for Clojure-Android projects Create a testing environment/library for Clojure-Android projects that leverages commonly used Android testing solutions and integrates with existing Clojure testing frameworks. The testing enviroment has to be capable of running tests without device or emulator. Provide test coverage for existing Clojure-Android build tool and toolkit libraries. Mentor: Daniel Solano Gómez
  • Typed Clojure Core Annotations Typed Clojure is an optional type system for Clojure. It helps Clojure programmers write correct and idiomatic Clojure code by providing a type system a la carte, as a library. To be useful, Typed Clojure requires annotations for all top level vars, protocols and datatypes. Those are added through this project.
  • Typed Transients for Clojure The goal of this project is to add support for type checking transient data structures and the functions which use them (assoc!, conj!), by adding the required type annotations used for type checking and document the issues that arise while trying to express the types for transient data structures.