GSoC

From sigrok
Revision as of 22:43, 14 February 2016 by Abraxa (talk | contribs) (Update)
Jump to navigation Jump to search

This page is about the Google Summer of Code and how sigrok may be able to benefit from taking part in it.

Administrative stuff

For GSoC 2016, sigrok needs to apply between Feb 8th and Feb 19th, 2016.

According to the FAQ, several roles have to be filled by project staff:

  • Two organization admins who are google's main point of contact (abraxa?, uwe?)
  • A person or group to review student applications (abraxa, uwe?, biot?, jhol?)
  • A mentor for each student (abraxa, anyone else?)
  • A backup for each mentor (?)

There's also a Mentors Guide that's worth checking out.


Project ideas

The following list of ideas contains projects that we think can be managed in the short period of GSoC and they cover topics where the sigrok project is wishing to improve. However, these are not the only things that could be done: it's worth checking the to-do list, for example. Or maybe you have a great idea that we just didn't think of yet. Don't be shy to ask!

The format is:

  • (difficulty)(languages used) description of task that can be completed in 12 weeks


High priority:

  • (medium)(C,C++,python) Implement the new session file format, then make libsigrokdecode and PulseView be able to handle the run-length encoded data.
  • (easy)(C) Currently, libsigrok uses a single thread per session which leads to problems when drivers stall during transfers and timeouts. We need to have device threads that can run independently of the session thread.
  • (easy/medium)(C++) Implement some of the features that PulseView needs in order to be a professional tool: better analog support (e.g. filtering, FFT), a signal overview, a tabular decoder data view (ideally with export), provide libsigrok output in a message window, etc.


Normal priority:

  • (medium)(C++) Implement auto-measurements on mouseover, similar to what saleae logic does. (screenshot,implementation details)
  • (medium)(C++) PV currently only supports a single data view. However, we need a tabbed GUI with one data view each, much like a web browser.
  • (hard)(8051 asm,C,maybe C++) Add support for analog in/out support in fx2lafw, libsigrok and possibly also PulseView (think of analog capture and replay).
  • (medium)(C) Implement the improved configuration enumeration and adapt the drivers to use it
  • (easy)(C,C++) Create more transform modules and make them usable in PulseView (e.g. a D->A converter module that creates a new analog channel).
  • (medium)(C++) Expand on the PulseView unit tests to increase coverage and allow them to actually reveal bugs.
  • (easy)(C++) Work on PulseView in the context of android devices, i.e. improve compatibility and usability.
  • (medium/hard)(C++) Figure out a way to perform automated GUI tests of PulseView under Windows (and linux) that can be included in Jenkins. That way we wouldn't rely on Windows users as much to tell us when things break there.
  • (unknown)(C) Come up with a sensible method of interfacing libsigrok with Wireshark so that a bidirectional data flow is possible. Use cases: logic analyzer captures ethernet frames to dissect with Wireshark; TCP/IP packets contain analog data to be analyzed using libsigrok
  • (unknown)(C) Come up with a sensible method of interfacing libsigrok with GNU Radio so that digitally transmitted data can be examined using libsigrok
  • (easy)(C) Enabling sigrok-cli to be an automation tool: e.g. reading one value from a file (could be a voltage), setting it on device A, reading a value from device B and writing it into a file
  • (medium/hard)(C,C++) Make libsigrok, PulseView and their dependencies compilable with Microsoft Visual Studio so that Windows developers can more easily participate


Potential mentors

While there are lots of people actively working on the sigrok suite, many of us have a full-time job and limited spare time. That's why we want to start small by appointing one or two mentors for now. Abraxa has volunteered already, maybe someone else will join in.