Difference between revisions of "Summer of Code 2014"

From XMPP WIKI
Jump to navigation Jump to search
(Restored from backup.)
 
(10 intermediate revisions by 3 users not shown)
Line 1: Line 1:
= Participation =
= Participation =
In order for the XSF to participate in [http://www.google-melange.com/gsoc/homepage/google/gsoc2014 Google Summer of Code 2014] we need to find out now if we will have Project and Mentor participation.


This page should be used to track any Project Idea so we can determine interest.
The XSF didn't apply for GSoC 2014. These were the ideas that were being considered.


== Dates ==
== Dates ==
Opening of [http://www.google-melange.com/gsoc/homepage/google/gsoc2014 GSoC] applications: February 03 at 19:00 UTC
Opening of [http://www.google-melange.com/gsoc/homepage/google/gsoc2014 GSoC] applications: February 03 at 19:00 UTC


= Volunteering Project Orgs and Mentors =
= Volunteering Project Orgs and Mentors =
* [http://wiki.xmpp.org/web/User:Jocke Joachim lindborg] coordination and mentoring IoT related projects
 
* [http://wiki.xmpp.org/web/User:ZoolDK Steffen Larsen] mentoring of client / server projects. (will write some projects proposals later!)
* [[User:Jocke]] coordination and mentoring IoT related projects
* [[User:ZoolDK]] mentoring of client / server projects. (will write some projects proposals later!)
* Yann Leboulanger mentoring Gajim related projects
* Yann Leboulanger mentoring Gajim related projects


= Project Ideas =
= Project Ideas =
== Buddycloud and Social XMPP related topics ==


* Secure XMPP messaging using public keys stored in XMPP nodes
== Buddycloud ==
* An XMPP component that provides contextual location services - rehashed for 2014 technology that can be embedded into any XMPP application (runs as an XMPP component).
 
* Writing tests for XMPP XEP compliance that extend the work on http://protocol.buddycloud.com/ to support other XEPs and XMPP things (code at: https://github.com/buddycloud/buddycloud-tests-framework)
=== Android SDK ===
* Jingle WebRTC integration integration within a buddycloud chanel (mentored by the famous WebRTC developer, Philipp Hanke)
 
* Standalone buddycloud server (XMPP server + buddycloud-server-java)
* '''Summary''': Create an Android SDK to help developers create XMPP and buddycloud apps
* buddycloud SDKs for other languages and platforms: using XMPP, XMPP-FTW or the HTTP-API
* '''Difficulty''': Medium-Difficult
* '''Details''': Android clients currently use [https://github.com/Flowdalic/asmack aSmack]. This get's them half way there. What's missing are extensions to aSmack that enable push notifications, message resumption, posting messages when the user is back online, retrieving archived messages. This project will help make XMPP more mobile friendly.
* '''Skills'''
** Strong Java skills
** Familiarity with Android abstractions eg.: Content provider, observer pattern to receive push notifications, caching
** Ability to work write good documentation
** Git version control
** Understanding of XMPP messaging, MAM, PubSub and Carbon XEPs
* [http://www.google-melange.com/gsoc/proposal/submit/google/gsoc2014/xsf Apply Now!]
 
=== Buddycloud to MUC gateway ===


== Ignite Realtime, Smack to target Android and JavaSE project==
* '''Summary''': One way or two way connection to MUC to or from Buddycloud channels.
[http://community.igniterealtime.org/docs/DOC-2678 A GSOC 2014 project idea: Allow Smack to target Android and JavaSE]
* '''Difficulty''': Medium
Smack should target Android and Java SE, therefore making aSmack obsolete. In order to achieve this goal, components of Smack need to be abstracted so that they can be impleted with Java SE APIs and their Android counterpart (if any). This abstraction also requires a modular build system.
* '''Details''': Buddycloud makes it easy to follow lots of channels and quickly reynchronise messages when coming back online (especially nice in a mobile environment). This project is to build a gateway so that users can access MUCs from their familiar Buddycloud interface or API. The gateway would take care of reconnecting and rejoining the right MUCs.
* '''Skills'''
** Programming skills in your language of choice.
** Ability to work write good documentation
** Git version control
** Understanding of XMPP messaging, MAM, PubSub and MUC specs
* [http://www.google-melange.com/gsoc/proposal/submit/google/gsoc2014/xsf Apply Now!]


Used Technologies: Java, Gradle, Android, Groovy, XMPP, XML
== Smack to target Android and JavaSE ==


Prerequisites: Knowledge of Java. Helpful: XMPP enthusiast and interest in designing elaborate build systems
[http://www.igniterealtime.org/projects/smack/index.jsp Smack], a FOSS XMPP client library in Java, should target Android and Java SE, therefore making aSmack obsolete. In order to achieve this goal, components of Smack need to be abstracted so that they can be impleted with Java SE APIs and their Android counterpart (if any). This abstraction also requires a modular build system.
 
* '''Used Technologies:''' Java, Gradle, Android, XMPP, Groovy
* '''Prerequisites:''' Knowledge of Java. Helpful: XMPP enthusiast and interest in designing elaborate build systems
* '''Project Description:''' [http://community.igniterealtime.org/docs/DOC-2678 A GSOC 2014 project idea: Allow Smack to target Android and JavaSE]


== IoT connected devices and smart services projects ==
== IoT connected devices and smart services projects ==
Internet of Things has become very big and the main game changer from early connected m2m systems is the very close connection between humans and Devices over Internet.
 
To facilitate interoperability between these devices and towards user interactions. Standards are crucial there are several such ongoing standardisations some backed by big companies.  
Internet of Things has become very big and the main game changer from early connected m2m systems is the very close connection between humans and Devices over Internet. To facilitate interoperability between these devices and towards user interactions. Standards are crucial there are several such ongoing standardisations some backed by big companies. XMPP is with its openness and the XSF to govern it's functionality is a perfect match to create a real open interoperable communication tool for IoT.
XMPP is with its openness and the XSF to govern it's functionality is a perfect match to create a real open interoperable communication tool for IoT.


To help in this effort we need alot of support at various levels and therfore we turn to the GSoC to help us in creating the open tools for the Internet of Things
To help in this effort we need alot of support at various levels and therfore we turn to the GSoC to help us in creating the open tools for the Internet of Things
 
=== Add IoT support in chat klient of choice ===
=== Add IoT support in chat klient of choice ===
* '''Summary''': Implement the IoT extensions into a client for example [http://psi-im.org/ Psi] [http://www.xabber.org/ Xabber].
* '''Summary''': Implement the IoT extensions into a client for example [http://psi-im.org/ Psi] [http://www.xabber.org/ Xabber].
* '''Difficulty''': Easy-Medium
* '''Difficulty''': Easy-Medium
* '''Details''': The IoT extensions ex [http://xmpp.org/extensions/xep-0323.html XEP-0323] and [http://xmpp.org/extensions/xep-0325.html XEP-0325] creates possibility to read and write fields to IoT devices. To be able to interact with devices a good interface is needed to edit control data and read sensor data to show diagrams of collected data and even to act as a [http://xmpp.org/extensions/xep-0324.html provisioning client]. With this tool any provider of a open IoT device would instantly have a uniform interface.
* '''Details''': The IoT extensions ex [http://xmpp.org/extensions/xep-0323.html XEP-0323] and [http://xmpp.org/extensions/xep-0325.html XEP-0325] creates possibility to read and write fields to IoT devices. To be able to interact with devices a good interface is needed to edit control data and read sensor data to show diagrams of collected data and even to act as a [http://xmpp.org/extensions/xep-0324.html provisioning client]. With this tool any provider of a open IoT device would instantly have a uniform interface.
* '''Skills (to have)'''
* '''Skills'''
** Ability to code in language of the client of choice
** Ability to code in language of the client of choice
** Ability to work with user interfaces
** Ability to work with user interfaces
Line 50: Line 70:


=== IoT smart logic ===
=== IoT smart logic ===
* '''Summary''': Use any XMPP library for ex [http://sleekxmpp.com/ SleekXMPP] to create a logic environment to control devices and collect data.
 
* '''Summary''': Use any XMPP library for ex [http://sleekxmpp.com/ SleekXMPP] to create a logic environment to control devices and collect data.
* '''Difficulty''': Easy-Medium
* '''Difficulty''': Easy-Medium
* '''Details''': The IoT extensions ex [http://xmpp.org/extensions/xep-0323.html XEP-0323] and [http://xmpp.org/extensions/xep-0325.html XEP-0325] creates possibility to read and write fields to IoT devices. To let this create smart services there needs to be logic like [https://ifttt.com/ IFTTT] or [http://en.wikipedia.org/wiki/IEC_61131 IEC 61131] or other. The idea is to create such an environment and management of devices and fields to build smart logic and services in any IoT related domain. ´prefarably the logic should be visual [https://github.com/node-red/node-red Node red project]
* '''Details''': The IoT extensions ex [http://xmpp.org/extensions/xep-0323.html XEP-0323] and [http://xmpp.org/extensions/xep-0325.html XEP-0325] creates possibility to read and write fields to IoT devices. To let this create smart services there needs to be logic like [https://ifttt.com/ IFTTT] or [http://en.wikipedia.org/wiki/IEC_61131 IEC 61131] or other. The idea is to create such an environment and management of devices and fields to build smart logic and services in any IoT related domain. ´prefarably the logic should be visual [https://github.com/node-red/node-red Node red project]
* '''Skills (to have)'''
* '''Skills'''
** Ability to code
** Understand creation of logic
* '''Skills (to have or to learn)'''
** Git version control
** Git version control
** Understanding of XMPP IoT extensions
** Understanding of XMPP IoT extensions
** Understanding of SleekXMPP
** Understanding of SleekXMPP
** Rule engines [http://en.wikipedia.org/wiki/Ladder_logic Ladder Logic] or  
** Rule engines [http://en.wikipedia.org/wiki/Ladder_logic Ladder Logic] or
* [http://www.google-melange.com/gsoc/proposal/submit/google/gsoc2014/xsf Apply Now!]
* [http://www.google-melange.com/gsoc/proposal/submit/google/gsoc2014/xsf Apply Now!]


=== Add IoT support in a language package and hardware system ===
=== Add IoT support in a language package and hardware system ===
* '''Summary''': Implement the IoT extensions into a programming language of you choice and run it on sensing hardware.
* '''Summary''': Implement the IoT extensions into a programming language of you choice and run it on sensing hardware.
* '''Difficulty''': Easy-Medium
* '''Difficulty''': Easy-Medium
* '''Details''': The IoT extensions ex [http://xmpp.org/extensions/xep-0323.html XEP-0323] and [http://xmpp.org/extensions/xep-0325.html XEP-0325] creates possibility to read and write fields to IoT devices. To leverage the thresholds for others to use these extensions implementations is needed in common programming languages and hardware platforms as an example the [https://github.com/joachimlindborg/SleekXMPP/tree/xep_0323_325/examples/IoT SleekXMPP python package] has an implementation. Or perhaps you would like to integrate some other environment such as the [http://www.dexterindustries.com/BrickPi.html Lego BrickPi] into an open robotics platform  
* '''Details''': The IoT extensions ex [http://xmpp.org/extensions/xep-0323.html XEP-0323] and [http://xmpp.org/extensions/xep-0325.html XEP-0325] creates possibility to read and write fields to IoT devices. To leverage the thresholds for others to use these extensions implementations is needed in common programming languages and hardware platforms as an example the [https://github.com/joachimlindborg/SleekXMPP/tree/xep_0323_325/examples/IoT SleekXMPP python package] has an implementation. Or perhaps you would like to integrate some other environment such as the [http://www.dexterindustries.com/BrickPi.html Lego BrickPi] into an open robotics platform
* '''Skills (to have)'''
* '''Skills'''
** Ability to code in language of the client of choice
** Ability to code in language of the client of choice
* '''Skills (to have or to learn)'''
** Git version control
** Git version control
** Understanding of XMPP IoT extensions
** Understanding of XMPP IoT extensions
Line 76: Line 96:


== Gajim projects ==
== Gajim projects ==
=== Multi-user Audio / Video conference ===
=== Multi-user Audio / Video conference ===
We already have jingle audio / video for one to one chat. Find the better way to attack this problem (several things exist, like MUJI, Jitsi Videobridge) and implement it in Gajim.
We already have jingle audio / video for one to one chat. Find the better way to attack this problem (several things exist, like MUJI, Jitsi Videobridge) and implement it in Gajim.


=== MAM ===
=== MAM ===
[http://xmpp.org/extensions/xep-0313.html MAM] is a way to store our logs server side, so we can share it in different locations.
[http://xmpp.org/extensions/xep-0313.html MAM] is a way to store our logs server side, so we can share it in different locations.


=== End-to-End Encryption using TLS ===
=== End-to-End Encryption using TLS ===
Gajim already support E2E, GPG, OTR. The next protocol that should be implemented is chat over TLS. There is a [https://tools.ietf.org/id/draft-meyer-xmpp-e2e-encryption-02.html proto-XEP] and a [https://tools.ietf.org/id/draft-meyer-xmpp-e2e-encryption-02.html IETF draft] about that.
Gajim already support E2E, GPG, OTR. The next protocol that should be implemented is chat over TLS. There is a [https://tools.ietf.org/id/draft-meyer-xmpp-e2e-encryption-02.html proto-XEP] and a [https://tools.ietf.org/id/draft-meyer-xmpp-e2e-encryption-02.html IETF draft] about that.

Latest revision as of 09:34, 23 June 2017

Participation

The XSF didn't apply for GSoC 2014. These were the ideas that were being considered.

Dates

Opening of GSoC applications: February 03 at 19:00 UTC

Volunteering Project Orgs and Mentors

  • User:Jocke coordination and mentoring IoT related projects
  • User:ZoolDK mentoring of client / server projects. (will write some projects proposals later!)
  • Yann Leboulanger mentoring Gajim related projects

Project Ideas

Buddycloud

Android SDK

  • Summary: Create an Android SDK to help developers create XMPP and buddycloud apps
  • Difficulty: Medium-Difficult
  • Details: Android clients currently use aSmack. This get's them half way there. What's missing are extensions to aSmack that enable push notifications, message resumption, posting messages when the user is back online, retrieving archived messages. This project will help make XMPP more mobile friendly.
  • Skills
    • Strong Java skills
    • Familiarity with Android abstractions eg.: Content provider, observer pattern to receive push notifications, caching
    • Ability to work write good documentation
    • Git version control
    • Understanding of XMPP messaging, MAM, PubSub and Carbon XEPs
  • Apply Now!

Buddycloud to MUC gateway

  • Summary: One way or two way connection to MUC to or from Buddycloud channels.
  • Difficulty: Medium
  • Details: Buddycloud makes it easy to follow lots of channels and quickly reynchronise messages when coming back online (especially nice in a mobile environment). This project is to build a gateway so that users can access MUCs from their familiar Buddycloud interface or API. The gateway would take care of reconnecting and rejoining the right MUCs.
  • Skills
    • Programming skills in your language of choice.
    • Ability to work write good documentation
    • Git version control
    • Understanding of XMPP messaging, MAM, PubSub and MUC specs
  • Apply Now!

Smack to target Android and JavaSE

Smack, a FOSS XMPP client library in Java, should target Android and Java SE, therefore making aSmack obsolete. In order to achieve this goal, components of Smack need to be abstracted so that they can be impleted with Java SE APIs and their Android counterpart (if any). This abstraction also requires a modular build system.

IoT connected devices and smart services projects

Internet of Things has become very big and the main game changer from early connected m2m systems is the very close connection between humans and Devices over Internet. To facilitate interoperability between these devices and towards user interactions. Standards are crucial there are several such ongoing standardisations some backed by big companies. XMPP is with its openness and the XSF to govern it's functionality is a perfect match to create a real open interoperable communication tool for IoT.

To help in this effort we need alot of support at various levels and therfore we turn to the GSoC to help us in creating the open tools for the Internet of Things

Add IoT support in chat klient of choice

  • Summary: Implement the IoT extensions into a client for example Psi Xabber.
  • Difficulty: Easy-Medium
  • Details: The IoT extensions ex XEP-0323 and XEP-0325 creates possibility to read and write fields to IoT devices. To be able to interact with devices a good interface is needed to edit control data and read sensor data to show diagrams of collected data and even to act as a provisioning client. With this tool any provider of a open IoT device would instantly have a uniform interface.
  • Skills
    • Ability to code in language of the client of choice
    • Ability to work with user interfaces
    • Git version control
    • Understanding of XMPP IoT extensions
    • Understanding of XMPP forms
  • Apply Now!

IoT smart logic

  • Summary: Use any XMPP library for ex SleekXMPP to create a logic environment to control devices and collect data.
  • Difficulty: Easy-Medium
  • Details: The IoT extensions ex XEP-0323 and XEP-0325 creates possibility to read and write fields to IoT devices. To let this create smart services there needs to be logic like IFTTT or IEC 61131 or other. The idea is to create such an environment and management of devices and fields to build smart logic and services in any IoT related domain. ´prefarably the logic should be visual Node red project
  • Skills
    • Understand creation of logic
    • Git version control
    • Understanding of XMPP IoT extensions
    • Understanding of SleekXMPP
    • Rule engines Ladder Logic or
  • Apply Now!

Add IoT support in a language package and hardware system

  • Summary: Implement the IoT extensions into a programming language of you choice and run it on sensing hardware.
  • Difficulty: Easy-Medium
  • Details: The IoT extensions ex XEP-0323 and XEP-0325 creates possibility to read and write fields to IoT devices. To leverage the thresholds for others to use these extensions implementations is needed in common programming languages and hardware platforms as an example the SleekXMPP python package has an implementation. Or perhaps you would like to integrate some other environment such as the Lego BrickPi into an open robotics platform
  • Skills
    • Ability to code in language of the client of choice
    • Git version control
    • Understanding of XMPP IoT extensions
    • Understanding of XMPP forms
    • Usage of XMPP in small devices such as raspberries, Cubieboard etc
  • Apply Now!

Gajim projects

Multi-user Audio / Video conference

We already have jingle audio / video for one to one chat. Find the better way to attack this problem (several things exist, like MUJI, Jitsi Videobridge) and implement it in Gajim.

MAM

MAM is a way to store our logs server side, so we can share it in different locations.

End-to-End Encryption using TLS

Gajim already support E2E, GPG, OTR. The next protocol that should be implemented is chat over TLS. There is a proto-XEP and a IETF draft about that.