July 23, 2015

GSoC: Week 7/8 - Clojure Berlin & Google Closure compiler

I have been accepted to this years Google's Summer of Code to work on ClojureScript. The goal of my project is to improve the integration of ClojureScript with the existing JavaScript ecosystem. I will post weekly updates about the progress of the project here. For more details about the project have a look at the ClojureScript GitHub wiki page.

Writing those posts still takes me some time since writing doesn't come natural to me. Or maybe it's because English is not my first language. So, I didn't write a post for week 7, because I already spent some time on preparing slides about GSoC, and wanted to use the rest of the time for coding. Long story short, I now have a more time again, so here goes the post for week 7 and 8 ;)

ClojureBridge Berlin and Clojure Berlin Dojo

I was in Berlin during the last couple of weeks. During this time I was lucky enough to meet some great people (Malwine, Martin and Jelle to only mention a few) from the Berlin Clojure community and gave two talks about GSoC and my project. The first talk was a short lightning talk at the Clojure Bridge Berlin workshop and was intended to inform the attendees about the GSoC program and motivate them to apply. I've also managed to sneak some ClojureScript into the talk and tried to explain what ClojureScript is about :)

The second talk was at the Clojure Berlin Dojo meetup and was more focused on the project itself rather than the GSoC program. Personally, I wasn't sure if I put too much/little detail into the talk, but people seemed to be interested, since there were some questions afterwards. Overall, it was really great meeting people I've only known from the Internet so far and everyone was as nice and welcoming as they are online.

Google Closure compiler

Regarding the progress of the project, we managed to fix two bugs. The first one was a CommonJS processing bug in the ClojureScript compiler, where we were invoking a Google Closure compiler method to convert an AMD module to a CommonJS module even if the module was already a CommonJS module. The second was a bug in the Google Closure compiler that occurred when converting a CommonJS module to a Google Closure module. This bug fix is one of two that brings us a step closer to being able to convert more complex JavaScript libraries, such as React.js, to Google Closure modules. The other fix is still outstanding, meaning that the pull request to the Google Closure compiler has not been merged yet, and targets JavaScript libraries that are using the UMD pattern.

Additionally, some functionality of the Google Closure compiler, that we are using to convert JavaScript modules to Google Closure modules, has been rewritten and improved. So we needed to figure out how those changes would affect us and as it turns out, we will need to do some refactoring to be able to use the Google Closure compiler for converting JavaScript modules. If you want to learn more about the changes to the Google Closure compiler, check out the pull request or have a look at the Google Closure compiler mailing list thread.

Tags: clojure bridge cljs closure umd berlin gsoc