Quantcast
Viewing latest article 11
Browse Latest Browse All 13

GSoC 2013 proposal

Here is the text of my proposal for Google Summer of Code 2013. I will dwell on these points more thoroughly later on when I start working on them.

I'm willing to work on the Enhance Neko for Android project. The original lein-droid and Neko projects gave a possibility to conveniently develop Clojure on Android (further CoA) projects, but Neko as a main library still lacks the maturity. Not all necessary UI elements are wrapped to be used in neko.ui's code generation facilities, some macros (like for defining an Activity) still do not cover all the usecases. Also, new Android 4.0-specific features (like ActionBars and Fragments) were beyond the scope of last year's work, but they should be implemented in Neko for it to be usable in modern Android applications. Besides that the differences in Android versions should be somehow reflected in Neko as well, either through conditional loading, or by relocating all 4.0-specific parts to a separate sublibrary.

UI being on the most paramount sides of mobile development, it would be nice to conceptually change the way to think of it besides simply wrapping it for Clojure. On way it can be improved is leveraging Clojure's data manipulation capabilities (like destructuring or core.match) to handle the UI. There are already similar attempts in Neko, like destructuring Intents or neko.data.sqlite, and doing this for UI could really improve development experience. As an additional feature, neko.ui facilities could have a XML backend to create Android-compatible XML files.

Finally there still are issues untackled on the toolchain side. Auto-completion and go-to-definition features, which most Clojure users are used to, are currently unavailable in CoA due to platform peculiarities and need a dedicated effort to be implemented. Since this would most probably be made on the nREPL side, both nrepl.el and CCW could leverage these features thereafter. The last month of development will be devoted to resolve these issues, besides most of the documentation for the implemented features will be written during this period.
My approximated timeline for the duration of GSoC looks like this:
  • Weeks 1-2.5: Add support for Android 4.0+ and devise a way to handle API differences.
  • Weeks 2.5-3: Integrate all UI elements (including 4.0-ones) into neko.ui.
  • Week 4: Complete all utility macros for services and fragments.    
  • Weeks 5-6: Redesign neko.ui to support runtime UI generation without dropping the compile-time generation capabilities.
  • Week 7: Add XML backend for a subset of neko.ui.
  • Weeks 8-9: Devise and include a set of desctructuring and/or core.match operations on UI widgets to extract data from them.
  • Week 10-11: Implement auto-completion and jump-to-definition for nREPL front-ends (like CCW and nrepl.el).
  • Week 12-13: Fixing loose screws - contribute more to UI part, convenience macros or tooling, whichever needs more attention, start writing extensive docs.
  • Week 14-15: Documentation time, for new features and those that will change throughout the program (especially the neko.ui).

Viewing latest article 11
Browse Latest Browse All 13

Trending Articles