Go for client side development

Registered by Thomas Voß on 2013-11-04

Go is a programming language that embraces concurrency right on a language-design level. It engraves policy decisions within the language specification and the compiler. A vibrant community of developers is using Go for developing large-scale server-side applications and successful applications written in Go have been reported all over the industry.

This blueprint covers the essential steps to enable Go for client side development, both as an integral part of the platform as well as another runtime exposed via the Ubuntu SDK.

Blueprint information

Status:
Started
Approver:
Thomas Voß
Priority:
High
Drafter:
Thomas Voß
Direction:
Approved
Assignee:
Thomas Voß
Definition:
Discussion
Series goal:
Accepted for trusty
Implementation:
Needs Infrastructure
Milestone target:
None
Started by
Thomas Voß on 2013-11-21

Related branches

Sprints

Whiteboard

Integrating Go with the platform requires at least the following high-level steps to address maintainability and security issues:

 * Decide on the compiler that should be used: gccgo vs gc
 * Decide on the compiler version/runtime version that should be used for development
 * Clarify with security/foundations on maintenance burden and potential security impact
 * Clarify on armhf support and identify work items to ensure flawless operation on mobile targets
 * Clarify on arm64 support, at least for releases after 14.04.
 * Identify minimal required platform integration to allow for developing useful apps
 * Prepare for platform integration by leveraging the existing go-dbus implementation at https://code.launchpad.net/~jamesh/go-dbus/trunk:
     - Develop the sensor service in Go using go-dbus
 * Decide on coding standards / conventions, targeted language versions (1.1/1.2)
 * Start of sensor/haptics service replacement: https://launchpad.net/usensord

(?)

Work Items

Work items:
[thomas-voss] niemeyer lool Go language roadmap and alignment in terms of features/architecture support: TODO
[lool] thomas-voss Setup meeting cadence to check on progress: TODO
[niemeyer] Ensure that gc 1.2 is available in the archive: TODO
[mcgowan] Make sure that Gustavo is in the loop for shipped Qt version: TODO

Dependency tree

* Blueprints in grey have been implemented.