We've launched our new site at www.openlighting.org. This wiki will remain and be updated with more technical information.
Difference between revisions of "OLP SOC Ideas Page"
From wiki.openlighting.org
Peternewman (talk | contribs) m (→Port to Android: Switch to interwiki links) |
Peternewman (talk | contribs) m (→Port to Windows: Switch to interwiki links) |
||
Line 74: | Line 74: | ||
This project would include: | This project would include: | ||
− | * Refactoring the base classes under [ | + | * Refactoring the base classes under [[code:common/network|common/network]] to use the Windows network & event management APIs and ensuring that all unit tests pass. |
− | * Cleaning up various parts of the code which use POSIX APIs (see | + | * Cleaning up various parts of the code which use POSIX APIs (see [[issue:140|issue 140]] for an example) |
A Windows port would enable lighting controller applications like [[QLC]] and [[D::Light]] to move to OLA entirely, and not have to maintain their own plugins. | A Windows port would enable lighting controller applications like [[QLC]] and [[D::Light]] to move to OLA entirely, and not have to maintain their own plugins. |
Revision as of 04:56, 11 January 2015
This page lists some ideas for Google Summer of Code 2014 projects for the Open Lighting Project. You can use these ideas as a basis for your application, or come up with something different. Please see the Google SOC site for the 2014 timeline. If you would like to discuss any of these ideas, or are thinking of applying to work with us, please send an email to the Open Lighting List introducing yourself.
Before asking questions on the list, please read ESR's How To Ask Questions The Smart Way. Remember, when deciding who to select, we're looking for students who are self-starters and won't start asking questions the first time they run into something they don't understand. A quick Google search goes a long way.
If you'd like to apply, please complete the OLA GSOC Challenge. This is a prerequisite for being selected. We suggest you start it at least a week before, in case you need to ask questions.
Contents
Adding support for more RDM PIDS to the Web UI
Our current WebUI lacks support for a lot of the really cool parameters and features that RDM is capable of. The main task of this project would to add support for RDM sub-devices and Ack Timer.
This project would include:
- Adding support for RDM sub-devices in the UI and supporting code in the web server back-end
- Adding support for Ack Timer packets in the RDM flow
- Adding support for additional parameter ids or (PIDS).
Skills Required: HTML, Javascript, C++
Estimated Difficulty: Medium
Raspberry Pi UI
The Raspberry Pi is a great platform but lacks a good user interface. With the addition of a small touchscreen, a portable DMX/RDM debugger can be created.
This project would include:
- Designing, writing and testing the new UI
Skills Required: Python ?
Estimated Difficulty: Easy
RESTful API
The current API that the website uses is a bit old and needs updated to allow full use of OLA's inner working in a general RESTful way. This would allow third parties to easily build new web based apps that could connect to RDM and DMX devices.
This project would include:
- Writing and testing the new API
- Modifying our current Web app to use the new web api
Skills Required: C++, Javascript, HTML, JSON
Estimated Difficulty: Easy
Web Based Configuration of Preferences
User Preferences for OLA are stored in text files but the web UI provides no method for changing any preferences beyond port patchings. At the moment the user is required to stop the OLA Daemon, edit the text files and restart if settings are to be changed. This project would involve building a generic preference store and exposing it through the web UI. Changing preferences on the fly is likely to expose bugs in some of the OLA plugins. These will need to be fixed.
Skills Required: C++, Javascript, HTML
Estimated Difficulty: Easy
Asynchronous Web Notification of RDM Messages
Thanks to sites like GMail and Facebook, users have come to expect asynchronous notification of events in their web browser. RDM enabled lighting devices can generate events such as Over Temperature and Lamp Faulty so it would be nice to alert the users to this. This project would involve work with two Open Source efforts. The student would need to work with libmicrohttpd to add WebSocket support (see the email thread).
The second step would involve using WebSockets to deliver events to the browser, and building a UI to notify the user. The OLA UI is built with Google Closure.
Skills Required: C++, Network Programming, Javascript, HTML, Google Closure
Estimated Difficulty: Medium
Port to Android
Android is an obvious target for OLA. Not only does it make perfect sense to use phones & tablets as lighting control interfaces but the Android platform could be used to build embedded lighting control devices. A small amount of this has been done, see OLA on Android. Bug #222 covers this work.
This project would include:
- Building OLA as a Android Application
- Adding a Java client or wrapping the C++ client with a Java library.
- Writing a frontend in Java to demonstrate the capabilities of OLA.
Skills Required: C++, Java, Android
Estimated Difficulty: Hard
Port to Windows
This is the most requested 'feature' and would significantly expand the reach of the project especially as we approach v1.0. The current supported method of running OLA on Windows is using VMWare (instructions). This is sub optimal, since it requires the use of non-free software, is challenging for users without Unix command line experience, and doesn't allow Windows applications to communicate with OLA. Work on a Windows port commenced in mid 2011 (see these notes), but was postponed due to lack of resources.
This project would include:
- Refactoring the base classes under common/network to use the Windows network & event management APIs and ensuring that all unit tests pass.
- Cleaning up various parts of the code which use POSIX APIs (see issue 140 for an example)
A Windows port would enable lighting controller applications like QLC and D::Light to move to OLA entirely, and not have to maintain their own plugins.
Skills Required: C++, Windows Network Programming & Windows Event Handling
Estimated Difficulty: Hard
Patcher v2
Patcher v2 is one of the next big projects for OLA it requires a rewrite of our current daemon to allow users to patch a specific channel:universe to a different channel:universe. It would most likely not be entirely up to the student but would be a small team effort as this touches all major points of our system. This would also require a change in the web interface to possibly allow drag and drop of patching. Depending on the students knowledge they may help with the web interface, web backend or the OLA daemon.
See https://github.com/OpenLightingProject/ola/issues/280 for some additional features and thoughts.
Skills Required: C++, Javascript, HTML
Estimated Difficulty: Hard