Skip to content
This repository has been archived by the owner on Jun 27, 2019. It is now read-only.

Ideas for Google Summer of Code 2016

Guilherme Íscaro edited this page Feb 19, 2016 · 49 revisions

Idea Template (title)

Mentors: Bruno Dilly, Gustavo Lima ...

Difficulty: [Easy|Medium|Hard]

Short description of the idea (1 paragraph)

Requirements:

  • Language
  • Protocol
  • Technology
  • [Basic|Heavy] understanding of something

Long description (optional)

Port Soletta to Brillo

Mentors: Bruno Dilly

Difficulty: Medium

Short description of the idea (1 paragraph)

Requirements:

  • Language
  • Protocol
  • Technology
  • [Basic|Heavy] understanding of something

Long description (optional)

Implement Python bindings for Soletta

Mentors: Bruno Dilly, Gustavo Barbieri, Rodrigo Chiossi

Difficulty: Medium

Short description of the idea (1 paragraph)

Requirements:

  • Previously knowledge about Python is highly recommended. Don't need to be an expert, but should be comfortable with Python programming idioms. We don't want to end up with a C API on Python.

Long description (optional)

Implement Python metatype for Soletta

Mentors: Flavio Ceolin

Difficulty: Medium

Allows Soletta node's type development using python. Soletta already supports the development of metatypes using javascript.

Requirements:

  • Previously knowledge about Python is highly recommended. Don't need to be an expert, but should be comfortable with Python programming idioms. Also would be nice a general knowledge about mainloop.

Long description (optional)

Implement Go bindings for Soletta

Mentors: Bruno Dilly

Difficulty: Medium

Short description of the idea (1 paragraph)

Requirements:

  • Previously knowledge about Go is highly recommended. Don't need to be an expert, but should be comfortable with Go programming idioms. We don't want to end up with a C API on Go.

Long description (optional)

Implement Go metatype for Soletta

Mentors: Flavio Ceolin

Difficulty: Medium

Allows Soletta node's type development using Go. Soletta already supports the development of metatypes using javascript.

Requirements:

  • Previously knowledge about Go is highly recommended. Don't need to be an expert, but should be comfortable with Go programming idioms. Also would be nice a general knowledge about mainloop.

Long description (optional)

Port to ESP8266

Mentors: Leandro Pereira

Difficulty: Medium

Port Soletta to run on cheap ESP8266 modules. It's already possible to run a Lua runtime on them, so it must be possible to run Soletta as well. Modules can be obtained from online stores for about $3 with S&H included, which makes it a very desirable target.

Requirements:

  • Language: Good knowledge of C.
  • Cross compilation experience not required but desirable.

Implement auto-complete in Soletta Dev-App

Mentors: Bruno Bottazzini

Difficulty: Easy

Auto-complete the code in the Soletta Development Application editor while the FBP is being programmed.

It's possible to get what nodetypes Soletta has. Now it will have to get these nodetypes, processing it and make auto-completion tips for the users when they are programming with Soletta Dev-App. We can also auto-complete the syntax to make the FBP development easier and faster.

The auto-complete should have the same behavior as the majority IDE. It will open a box allowing the user of Soletta Dev-App to choose what code to be completed.

Requirements:

  • Language: Knowledge in Javascript. Experience with NodeJS, AngularJS or Jquery would be good

Implement missing features on Contiki's port

Mentors: Flavio Ceolin, Ivan Briano

Difficulty: Medium

Soletta already has a basic port for Contiki, it means build integration, mainloop and basic IO (only GPIO). It's missing network support and others IO, such as, I2C and SPI.

Requirements:

  • Language: Good knowledge of C.
  • Cross compilation experience not required but desirable.

sol-gatt: Implement GATT profile in Soletta

Mentors: Vinicius Gomes, Andre Guedes

Difficulty: Medium

In Bluetooth Smart (also known as Bluetooth Low Energy) the most interoperable way of communicating with devices is using the GATT protocol. GATT provides a low overhead protocol, with high level concepts (services, characteristics, decriptors) ideal for low power devices, which may be coin cell battery operated.

The Bluetooth Special Interest Group (SIG) already defines many protocols implemented on top of GATT for many common applications[2].

sol-gatt will provide a high-level API (initially for Zephyr[3] and Linux) for registering and manipulating local and remote services and characteristics.

Requirements:

  • C programming language experience;
  • Knowledge of networking programming, Bluetooth technology has many analogs with TCP/IP/Ethernet;

[1] https://learn.adafruit.com/introduction-to-bluetooth-low-energy/gatt

[2] https://www.bluetooth.com/specifications/adopted-specifications

[3] https://www.zephyrproject.org/

sol-fbp-runner: Implement remote inspection

Mentors: Murilo Belluzzo

Difficulty: Easy

Add the capability to attach to sol-fbp-runner remotely (ip:port) and receive the inspection output for the flow being executed as well the logging messages.

Requirements:

  • C programming language experience;
  • Knowledge of networking programming;

sol-joyn: Soletta API for AllJoyn

Mentors: Vinicius Gomes

Difficulty: Medium

AllSeen[1] is a notable protocol in the IoT market, AllJoyn is the implementation of the protocol, providing a unified way for discovering devices and services over multiple transports.

Requirements:

  • C programming language experience;
  • Knowledge of networking programming;

[1] https://allseenalliance.org/

sol-lwm2m: Implement missing features.

Mentors: Guilherme Iscaro

Difficulty: Medium

Soletta has its own implementation of the lightweight machine to machine (LWM2M) [1] protocol. The LWM2M protocol is used to remotely control IoT devices, these include: Firmware updates, status reporting and etc. Although Soletta already implements the LMWM2M server and the LWM2M client, Soletta implementation is lacking some main features, that are: a bootstrap server, message encryption and data access control.

Expected Deliveries:

  • A LWM2M bootstrap server.
  • CoAP message encryption.
  • Data access control.

Requirements:

  • C programming language experience.
  • LWM2M knowledge is desirable.

[1] http://technical.openmobilealliance.org/Technical/technical-information/release-program/current-releases/oma-lightweightm2m-v1-0

Clone this wiki locally