Clojure wrapper around symphony-java-client

Description

has started work on a Clojure wrapper around the symphony-java-client, and would like to host it with the Foundation. This was one of the Hackathon ideas.

Value:
Clojure, as a modern, advanced JVM-hosted programming language, has a vibrant community of developers, many of whom do not come from a Java-the-language background. Requiring such developers to learn the idiosyncrasies of Java-the-language is an impediment that will turn off some percentage of this community. This library is intended to provide an idiomatic Clojure experience, allowing these developers to leverage Symphony's capabilities from their Clojure programs, with a minimum of incidental complexity. The benefit to the Symphony community is in having a more diverse range of contributors, from non-traditional (for FinSrv) backgrounds.

also has an interest in implementing some of the other Hackathon ideas, and would strongly prefer to do so in Clojure. This library is a requirement for that work.

Proposed roadmap:

  1. Wrap enough of the symphony-java-client for to form a solid overall impression of the capabilities the current Symphony HTTP APIs offer. The underlying Java library is a good way to expedite this exploration.

  2. Refactor and refine the library until the public Clojure API that it exposes has stabilised (note: the implementation behind that contract will continue to evolve - see below).

  3. v1.0 release, including sample documentation, sample REPL interactions, potentially a sample standalone Bot, etc.

Possible future innovations:

  • Remove dependency on symphony-java-client and instead switch to native Clojure mechanisms for interacting with the Symphony HTTP APIs.

  • Investigate wrapping some of Symphony's other extension points in idiomatic Clojure and/or ClojureScript façades.

Current state:
Some preliminary code has been written that demonstrates basic functioning of authentication, presence detection, and a few other sample interactions. This code is at a point where source control is desired, so that controlled incubation can commence.

Risks:

  • It is inevitable that the symphony-java-client will continue to evolve, potentially in backwards-compatibility-breaking ways. The Clojure library, as with any other consumer of the symphony-java-client, is at risk of breakage when such innovations occur. It is assumed that the symphony-java-client project team will follow robust version management processes, to allow consumers (including, but not limited to, this library) to gracefully adapt in these cases.

  • It is inevitable that the Symphony HTTP APIs will continue to evolve, potentially in backwards-compatibility-breaking ways. The Clojure library, as with any other consumer of the Symphony HTTP APIs, is at risk of breakage when such innovations occur. It is assumed that the Symphony HTTP API project team will follow robust version management processes, to allow consumers (including, but not limited to, this library) to gracefully adapt in these cases.

Copyright holder:
Symphony Software Foundation, as per employment contract ("Employee Invention Assignment, Confidentiality and Non-Competition Agreement"). No ICLA / CCLA required.

License:
Apache License, version 2.0

Assignee

Maurizio Pillitu

Reporter

Peter Monks

Due date

None

Priority

Medium
Configure