Connected Devices/Projects/Project Link: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
(→‎Repositories: Restore link to github which was accidentally removed (checked this with Yoric on irc))
(Inserted experiment ended message)
 
(81 intermediate revisions by 11 users not shown)
Line 1: Line 1:
{{caution|This experiment has concluded.  We have retained the content on this page so others can take advantage of these learnings. For the latest on what Mozilla is doing, visit [https://www.mozilla.org www.mozilla.org].}}
{{Sidebar <!-- Project Infobox -->
{{Sidebar <!-- Project Infobox -->
  | navbar = off
  | navbar = off
  | headingstyle = background-color:#eee;
  | headingstyle = background-color:#eee;
  | heading1 = Project Link <!-- Project Title -->
  | heading1 = Project Link <!-- Project Title -->
  | content1 = [[image:Mozilla_wordmark_25%.png|300px]] <!-- Logo for Connected Devices, not product or team -->
  | content1 = [[image:Connected-devices.jpg|300px]] <!-- Logo for Connected Devices, not product or team -->
  | heading2 = <!-- Screenshot caption --> <!-- Screenshot caption -->
  | heading2 = <!-- Screenshot caption --> <!-- Screenshot caption -->
  | content2 = <!-- [[image:Mozilla_wordmark_25%.png|300px]] --> <!-- Screenshot or photo of product/prototype, not logo -->
  | content2 = <!-- [[image:Mozilla_wordmark_25%.png|300px]] --> <!-- Screenshot or photo of product/prototype, not logo -->
Line 12: Line 15:
  | content5 = 2016.01.11 (Pitch Update) <!-- Latest Release Date -->
  | content5 = 2016.01.11 (Pitch Update) <!-- Latest Release Date -->
  | heading6 = Innovation Status <!-- Innovation Status -->
  | heading6 = Innovation Status <!-- Innovation Status -->
  | content6 = [[Connected_Devices/Product_Innovation_Process#Process Gates|Stage 1 (Validation)]] <!-- Innovation Status -->
  | content6 = No longer an approved project <!-- Innovation Status -->
  | heading7 = Website <!-- Website -->
  | heading7 = Website <!-- Website -->
  | content7 = TBD <!-- Project Website -->
  | content7 = N/A <!-- Project Website -->
}}
}}
'''Project Link''' aims to be your own, personal user agent for the smart home, creating a web of things that is completely yours. Instead of entrusting your data to a third party, your Link agent understands your preferences for how you want to interact with the world of devices in your home, and can even automate your connected world for you. All of this still done conveniently and securely, but completely under your control.


If you would like to participate, you can get in touch with our [[Connected_Devices/Participation|connected devices participation team]], or find us on irc.mozilla.org, channel #foxlink.  
After the successful completion of a Project Link prototype and further study by team members, the team closed Project Link and pivoted to a project called Cue, that is focused on making the lives of busy families easier by using voice and a smart screen to manage reminders, lists, and schedule coordination.  Please visit the [https://wiki.mozilla.org/Connected_Devices/Projects/Project_Cue Project Cue wiki] for information about the learning taken from Project Link that has resulted in the studies and experiments being conducted for Project Cue.
 
If interested in learning more about what Project Link was and what experiments were conducted, please read further.
 
'''Project Link''' had a goal of being your own, personal user agent for the smart home, creating a web of things that is completely yours. Instead of entrusting your data to a third party, a goal of the Link agent was to understand your preferences for how you wanted to interact with the world of devices in your home, and to automate your connected world for you. All of this still was to be done conveniently and securely, but completely under your control.
 
== Project Overview ==
Project Link (formerly Foxlink) was a short-term experiment to build software building blocks that can interact with various "things". Most code was done in [https://www.rust-lang.org/ Rust].
 
We used the "Design Thinking" innovation approach by IDEO, where the philosophy of Product Innovation is at the center of technology (feasibility), person (desirability) & business (viability).
 
== Validation Stage ==
 
In the Validation stage, the Link team conducted investigations and studies to answer the questions:
* Does it fit the Mozilla mission?
* Is there a problem worth solving?
* What is the MVP?
* Is it something customers want?
* Can it be solved?
 
Early in the Validation stage, the team experimented with consumer smart devices available today, as described in Phase 1 in the Archive section below, and developed a prototype that enabled device discovery, rule configuration for how the devices should automatically interact, and the push of notifications to the user.
 
=== Team Participants ===
 
* Aleh Zasypkin
* Andrew Osmond
* Christiane Ruetten
* Dave Hylands
* David Rajchenbach-Teller
* Fabrice Desré
* Fernando Jiménez Moreno
* Francisco Jordano
* Guillaume Marty
* Hema Koka
* Johan Lorenzo
* Julie McCracken
* Julien Wajsberg
* No-Jun Park
* Preeti Sanketh
* Sam Giles
 
== Development ==
 
===Proposals===
 
* [[Project Link Proposal/home automation hub|Home Automation Hub]]
* [[Project_Link_Proposal/intelligent_calendar_for_busy_mums|Intelligent Calendar for Busy Mums]]
* [[Project_Link_Proposal/The_Home_User_Agent|The Home User Agent]]
* [[Project_Link_Proposal/Voice_browser|Voice browser]]
 
=== Technical documentation === <!-- Very early documentation -->
* [https://public.etherpad-mozilla.org/p/foxlink Straw-man PoC description on etherpad]
* [https://drive.google.com/a/mozilla.com/folderview?id=0B6jZCAHNVaWEdzNIWXhteHM2MUE Google Drive folder]
* [https://wiki.mozilla.org/Connected_Devices/Projects/Project_Link/Box-Client_networking Box-Client networking (draft)]
* [https://wiki.mozilla.org/Project_Link/Auth Authentication]
* [[Connected Devices/Projects/Project Link/Taxonomy|Taxonomy]]
* [http://www.developers.meethue.com/philips-hue-api Philips Hub API]
* [http://www.openzwave.com/ OpenZWave Library]
* [[Connected Devices/Projects/Project Link/Registration Server and Tunneling|Registration Server and Tunneling]]
* [[Connected Devices/Projects/Project Link/TLS|TLS]]
 
=== Presentations ===
The following were presentations made during the 2016/03 workweek.
* [https://drive.google.com/open?id=0B6jZCAHNVaWEbVpZbkI5ZEIxWVZSTUJJUjVHbVVTYnBJSWNv Overall Architecture Diagram]
* [https://docs.google.com/presentation/d/1otXlJiy5uiOOZJI8IkWSI9YXspuJ6YHzk4taYGl-xrE/edit#slide=id.p4 Pilot Scenes]
* [https://drive.google.com/a/mozilla.com/file/d/0BzpS-SDqaHnAOGtsUjdiZGlvb1k/view UI (Theme View v0.75)]
* [https://drive.google.com/a/mozilla.com/file/d/0BzpS-SDqaHnAbktaaUxmdnpaLTQ/view UI (Home View v1.0)]
* [http://gmarty.github.io/2016-03-Project-Link-App/ Web App Implementation]
* [https://drive.google.com/open?id=0B7vYTsFxSq6uY3A2SDRBdk9aNm8 UPnP and SSDP]
* [https://drive.google.com/open?id=0B7vYTsFxSq6uR2cxWXBnVFZqalk WebPush]
* [https://docs.google.com/a/mozilla.com/drawings/d/1W6KVkiBqPPfCkYEkLrD7_QhVXz3g-Zr0nT995iZfwSY/edit?usp=sharing Networking Overview]
* [http://slides.com/ferjm/authentication#/ Authentication and Tunneling]
* [https://docs.google.com/presentation/d/1GTuLiwPYuOEBgiPTG-fFfVtaNQtbasDS5BVwErmQ9DU/edit?usp=sharing Market Research]
 
=== Repositories ===
 
All code was open source and hosted on https://github.com/fxbox. Please file bugs on Github issues for these repositories.


== Project overview ==
* [https://github.com/fxbox/foxbox foxbox: foxbox daemon]
Project Link (formerly Foxlink) is a short-term experiment to build a software building block that can interact with various devices. Most code is done in [https://www.rust-lang.org/ Rust].
* [https://github.com/fxbox/openzwave-adapter openzwave-adapter: the foxbox adapter for openzwave]
* [https://github.com/fxbox/openzwave-rust openzwave-rust: Rust wrapper for the open-zwave library]
* [https://github.com/fxbox/app app for Project Link]
* [https://github.com/fxbox/thinkerbell thinkerbell: scripting engine for the Foxbox ]
* [https://github.com/fxbox/openzwave-stateful-rust openzwave-stateful-rust]
* [https://github.com/fxbox/taxonomy taxonomy: shared implementation of the taxonomy data structures]
* [https://github.com/fxbox/registration_server registration-server: to help with foxbox discovery]
* [https://github.com/fxbox/users users: project Link user management and authentication lib]
* [https://github.com/fxbox/multicast-dns-utils multicast dns utils: basic command line utils that demonstate multicast-dns lib capabilities]
* [https://github.com/fxbox/multicast-dns multicast dns: experimental mDNS Rust wrapper around Avahi C libraries]
* [https://github.com/fxbox/RFC RFC: discussion about design decisions]
* [https://github.com/fxbox/dns-server dns server: server that helps the Box to announce its local IP address without relying on mDNS, and to register its LetsEncrypt cert for use on its local IP address]
* [https://github.com/fxbox/open-zwave open zwave: a C++ and DotNet library to control Z-Wave Networks via a Z-Wave Controller]
* [https://github.com/fxbox/iron-cors iron cors: helping to add CORS to an Iron server]
* [https://github.com/fxbox/adapters adapters: API for defining and registering adapters for the Foxbox
* [https://github.com/fxbox/standalone-ipcam standalone ipcam: standalone IP camera (uses USB camera or RPi camera) and also IP camera simulator]
* [https://github.com/fxbox/libxbee-rust libxbee-rust: A wrapper for libxbee]


Complex and/or breaking changes are discussed as [https://github.com/fxbox/RFC Requests For Comments].


== Participation ==
== Participation ==


Project Link is at a very early stage and we are still figuring out many thing, including how to best accept contributions. But don't let this deter you!
The core of Project Link was developed in [https://www.rust-lang.org/ Rust]. The front-end is developed in HTML5/JS using REST/WebSocket.
 
=== Help Wanted ===
 
We also maintained a full, unclassified, list of ongoing issues, but they may not have been as easy or as detailed:


The core of Project Link is developed in [https://www.rust-lang.org/ Rust]. The front-end is developed in HTML5/JS using REST/WebSocket.
* [https://github.com/issues?utf8=%E2%9C%93&q=user%3Afxbox+is%3Aissue+no%3Aassignee+-label%3A%22Help+wanted%3A+Help+found%22+ Other issues]


=== Help Wanted ===
And all our source code could be found on [https://github.com/fxbox/ GitHub repositories].


We maintain lists of issues for which we are looking for help.
=== Getting In Touch ===


* [https://github.com/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+label%3A%22Help+wanted%22+user%3Afxbox+no%3Aassignee+-label%3AAssigned+-label%3A%22Help+wanted%3A+Help+found%22 Help Wanted].
[https://lists.mozilla.org/listinfo/dev-project-link mailing-list].
* Help Wanted... [https://github.com/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+label%3A%22Help+wanted%22+user%3Afxbox+no%3Aassignee+-label%3A%22Help+wanted%3A+Help+found%22+label%3A%22Skill%3A+Rust%22+ in Rust].
* Help Wanted... [https://github.com/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+label%3A%22Help+wanted%22+user%3Afxbox+no%3Aassignee+-label%3A%22Help+wanted%3A+Help+found%22+label%3A%22Skill%3A+Web+App%22+ in HTML5/JS ].
* Help Wanted... [https://github.com/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+label%3A%22Help+wanted%22+user%3Afxbox+no%3Aassignee+-label%3A%22Help+wanted%3A+Help+found%22+label%3A%22Skill%3A+Story%22+ coming up with use cases and stories ]


We also maintain a full, unclassified, list of ongoing issues. If you wish to help, don't hesitate to look at them, but they may not be as easy or as detailed:
We established [https://discourse.mozilla-community.org/c/connected-devices/project-link Project Link on Discourse]


* [https://github.com/issues?utf8=%E2%9C%93&q=user%3Afxbox+is%3Aissue+no%3Aassignee+-label%3A%22Help+wanted%3A+Help+found%22+ Other issues]
Otherwise, the best way to get in touch with us was to come and chat through irc. We could be found on [http://chat.mibbit.com/?channel=%23foxlink&server=irc.mozilla.org channel #foxlink of irc.mozilla.org].


And all our source code may be found on [https://github.com/fxbox/ GitHub repositories].
Issues were filed at [https://github.com/fxbox/ GitHub repositories].


=== Getting in touch ===
Discussions about design, improvements or radical new directions could be joined at [https://github.com/fxbox/RFC Requests For Comments].


The best way to get in touch with us is to come and chat through irc. We can be found on [http://chat.mibbit.com/?channel=%23foxlink&server=irc.mozilla.org channel #foxlink of irc.mozilla.org].
=== IRC ===


We should have a public mailing-list available within a few days.
You could find us on irc.mozilla.org, channel #foxlink.  Team members are still using this channel for Project Cue.


If you wish to file a bug, please visit our [https://github.com/fxbox/ GitHub repositories] and file an issue.
=== Team Meetings ===


We are planning to offer a communication channel to suggest featuers, improvements or radical new directions. We will post details once we are satisfied with the mechanics.
We used agile practices:
* "Stand-up" meetings were held on [https://public.etherpad-mozilla.org/p/foxlink-standup on etherpad] and on IRC every weekday between 5pm and 5:15pm UTC.
* Weekly meetings were held in Vidyo and [https://public.etherpad-mozilla.org/p/foxlink-weekly on etherpad] every monday between 5pm and 6pm UTC.


== Development process ==
=== QA ===
[https://docs.google.com/a/mozilla.com/document/d/1-3-CpYiiLYtZKKenjh5O_SdDxFB0ZMJBrXgTosX6mWE/edit?usp=sharing Project Link Test Plan]<br />
[https://docs.google.com/a/mozilla.com/spreadsheets/d/19l74YZVagQJTuWZpJ1ohmtNFR8p3AOo6YUpbv9A-LtU/edit?usp=sharing Project Link Test Cases]<br />
[https://docs.google.com/a/mozilla.com/document/d/1-HeFKZeO98-7RgFvE3KHwMuZGrGNBwDNx9V-GxwgmE0/edit?usp=sharing Integration Test Environment Design Document]<br />


=== Repositories ===
== ARCHIVE ==


All code is open source and hosted on https://github.com/fxbox. Please file bugs on Github issues for these repositories.
== Phase 1 ==
As the first step, we worked toward delivering a prototype that allows a user to -
# Setup "Link"
# Have their devices that use Z-wave/WiFi protocols be discovered by Link
# Interact & control their devices whether they are home or remote via a web-app.
# Configure rules around how these devices should automatically interact with each other for specific scenarios
# Receive notifications


=== IRC ===
=== Devices Supported in Phase 1 ===


You can find us on irc.mozilla.org, channel #foxlink.
{| class="wikitable"
! style="text-align: center;" | Device
! style="text-align: center;" | Standard
|-
| rowspan="1" | D-Link Pan & Tilt Wi-Fi Camera DCS-5020L
! style="text-align: center;" | WiFi 
|-
| rowspan="1" | Fibaro Motion Sensor
! style="text-align: center;" | Z-Wave 
|-
| rowspan="1" | Philips Hue Lights
! style="text-align: center;" | Zigbee (via Phillips Hue Bridge) 
|-
| rowspan="1" | Kwikset Door Lock SmartCode 910
! style="text-align: center;" | Z-Wave 
|-
| rowspan="1" | Schlage Door Lock BE469NXCAM619
! style="text-align: center;" | Z-Wave 
|-
|}


=== Methodology ===
For more details, see [https://docs.google.com/presentation/d/1otXlJiy5uiOOZJI8IkWSI9YXspuJ6YHzk4taYGl-xrE/edit#slide=id.p4 Pilot Scenes]


We are using some agile practices:
=== Phase 1 Status - Completed ===
* "Stand-up" meetings happen [https://public.etherpad-mozilla.org/p/foxlink-standup on etherpad] and on IRC every weekday between 5pm and 5:15pm UTC.
* Weekly meetings happen in Vidyo and [https://public.etherpad-mozilla.org/p/foxlink-weekly on etherpad] every monday between 5pm and 6pm UTC.


== References == <!-- Very early documentation -->
{| class="wikitable"
'''Very early documentation:'''
|-
* [https://public.etherpad-mozilla.org/p/foxlink Straw-man PoC description on etherpad]
! Milestone !! Date !! Status
* [https://drive.google.com/a/mozilla.com/folderview?id=0B6jZCAHNVaWEdzNIWXhteHM2MUE Google Drive folder] (everything is behind closed doors so far but we're working on opening this up.)
|-
* [https://wiki.mozilla.org/Connected_Devices/Projects/Project_Link/Box-Client_networking Box-Client networking (draft)]
| Gate 0 approval || 2016.1.11
! style="background:#00B2FF;" | Done
|-
| Project kickoff || 2016.2.1
! style="background:#00B2FF;" | Done
|-
| Integration Meetup || 2016.3.21
! style="background:#00B2FF;" | Done
|-
| [https://docs.google.com/presentation/d/1otXlJiy5uiOOZJI8IkWSI9YXspuJ6YHzk4taYGl-xrE/edit#slide=id.p19 Pilot Scene 1 End to End Integration] || 2016.4.15
! style="background:#00B2FF;" | Done
|-
| [https://docs.google.com/presentation/d/1otXlJiy5uiOOZJI8IkWSI9YXspuJ6YHzk4taYGl-xrE/edit#slide=id.p23 Pilot Scene 2 End to End Integration] || 2016.4.15
! style="background:#00B2FF;" | Done
|}

Latest revision as of 23:15, 2 February 2017

Warning signThis experiment has concluded. We have retained the content on this page so others can take advantage of these learnings. For the latest on what Mozilla is doing, visit www.mozilla.org.


After the successful completion of a Project Link prototype and further study by team members, the team closed Project Link and pivoted to a project called Cue, that is focused on making the lives of busy families easier by using voice and a smart screen to manage reminders, lists, and schedule coordination. Please visit the Project Cue wiki for information about the learning taken from Project Link that has resulted in the studies and experiments being conducted for Project Cue.

If interested in learning more about what Project Link was and what experiments were conducted, please read further.

Project Link had a goal of being your own, personal user agent for the smart home, creating a web of things that is completely yours. Instead of entrusting your data to a third party, a goal of the Link agent was to understand your preferences for how you wanted to interact with the world of devices in your home, and to automate your connected world for you. All of this still was to be done conveniently and securely, but completely under your control.

Project Overview

Project Link (formerly Foxlink) was a short-term experiment to build software building blocks that can interact with various "things". Most code was done in Rust.

We used the "Design Thinking" innovation approach by IDEO, where the philosophy of Product Innovation is at the center of technology (feasibility), person (desirability) & business (viability).

Validation Stage

In the Validation stage, the Link team conducted investigations and studies to answer the questions:

  • Does it fit the Mozilla mission?
  • Is there a problem worth solving?
  • What is the MVP?
  • Is it something customers want?
  • Can it be solved?

Early in the Validation stage, the team experimented with consumer smart devices available today, as described in Phase 1 in the Archive section below, and developed a prototype that enabled device discovery, rule configuration for how the devices should automatically interact, and the push of notifications to the user.

Team Participants

  • Aleh Zasypkin
  • Andrew Osmond
  • Christiane Ruetten
  • Dave Hylands
  • David Rajchenbach-Teller
  • Fabrice Desré
  • Fernando Jiménez Moreno
  • Francisco Jordano
  • Guillaume Marty
  • Hema Koka
  • Johan Lorenzo
  • Julie McCracken
  • Julien Wajsberg
  • No-Jun Park
  • Preeti Sanketh
  • Sam Giles

Development

Proposals

Technical documentation

Presentations

The following were presentations made during the 2016/03 workweek.

Repositories

All code was open source and hosted on https://github.com/fxbox. Please file bugs on Github issues for these repositories.

Complex and/or breaking changes are discussed as Requests For Comments.

Participation

The core of Project Link was developed in Rust. The front-end is developed in HTML5/JS using REST/WebSocket.

Help Wanted

We also maintained a full, unclassified, list of ongoing issues, but they may not have been as easy or as detailed:

And all our source code could be found on GitHub repositories.

Getting In Touch

mailing-list.

We established Project Link on Discourse

Otherwise, the best way to get in touch with us was to come and chat through irc. We could be found on channel #foxlink of irc.mozilla.org.

Issues were filed at GitHub repositories.

Discussions about design, improvements or radical new directions could be joined at Requests For Comments.

IRC

You could find us on irc.mozilla.org, channel #foxlink. Team members are still using this channel for Project Cue.

Team Meetings

We used agile practices:

  • "Stand-up" meetings were held on on etherpad and on IRC every weekday between 5pm and 5:15pm UTC.
  • Weekly meetings were held in Vidyo and on etherpad every monday between 5pm and 6pm UTC.

QA

Project Link Test Plan
Project Link Test Cases
Integration Test Environment Design Document

ARCHIVE

Phase 1

As the first step, we worked toward delivering a prototype that allows a user to -

  1. Setup "Link"
  2. Have their devices that use Z-wave/WiFi protocols be discovered by Link
  3. Interact & control their devices whether they are home or remote via a web-app.
  4. Configure rules around how these devices should automatically interact with each other for specific scenarios
  5. Receive notifications

Devices Supported in Phase 1

Device Standard
D-Link Pan & Tilt Wi-Fi Camera DCS-5020L WiFi
Fibaro Motion Sensor Z-Wave
Philips Hue Lights Zigbee (via Phillips Hue Bridge)
Kwikset Door Lock SmartCode 910 Z-Wave
Schlage Door Lock BE469NXCAM619 Z-Wave

For more details, see Pilot Scenes

Phase 1 Status - Completed

Milestone Date Status
Gate 0 approval 2016.1.11 Done
Project kickoff 2016.2.1 Done
Integration Meetup 2016.3.21 Done
Pilot Scene 1 End to End Integration 2016.4.15 Done
Pilot Scene 2 End to End Integration 2016.4.15 Done