From KDE Community Wiki
< GSoC‎ | 2016‎ | StatusReports

Title: Plasma PublicTransport

Plasma's Publictransport project in KDE4 was an applet that displayed useful public transport timetable data for your location. This is a handy application to have at it doesn't need internet connectivity, barring the initial setup, and all the data you would otherwise browse in a web browser was just a click away in your desktop.

Over time, the public transport applet developed into a rather large suite, providing useful features like adding multiple locations/service providers, configuring alarms for a stop/vehicle and also provided stop completion when adding a stop name.

This applet is however, incompatible with the latest Plasma frameworks, KDE Frameworks 5(KF5) and Qt5 and porting the applet to Plasma5/Qt5 was the aim of this project.

Work report

During the summer the following were achieved,

  • The publictransport dataengine was ported to KF5/Qt5
    • Now accessible via plasmaengineexplorer
  • Data from the publictransport dataengine is now consumable in Qml
    • Needed porting the dataengine to QVariantMap from QVariantHash
  • Designed a simple plasmoid that consumes data coming from the publictransport dataengine and displays data in a timetable format


FItZB97.png OyYFhV7.png

Challenges faced

Working on this project has been an awesome experience but it has thrown up it's fair share of challenges. Listing some of them below:

  • Unfamiliarity with the coding language to be used
    • I'm a Qml noob, but had contributed some minor patches in Qml, to the plasma-mediacenter repository in the past.
    • Qml being so similar/based on a Javascript engine helped a great deal as I've had some exposure to Javsascript in the past
  • Unfamiliarity with the codebase and the application
  • Inability to test real-time data for my location
    • General Transit Feed Specification(GTFS) data for public transport are not existent to the best of my knowledge, in India
    • Even if they did, they'd be rather useless/misleading. Lot of factors determine the arrival/departure time of a vehicle.
    • I eventually ended up testing a transit feed for Oslo, Norway.
  • QtScript deprecation in Qt 5.5 and onwards
    • Scripted type service providers made use of QScriptEngine. Because of QtScript being obsolete now, it was impossible to pass qt.* extensions to QScriptEngine, rendering Scripted service providers useless as things stand.

Work to be done

The publictransport applet/plasmoid is near complete at the moment, but still needs some tweaking before it becomes release-ready. Some of them are,

  • Replace scripted service providers with GTFS service providers
    • This has nothing to do with the applet or the engine code
  • Add an option in the plasmoid to download new service providers via GHNS
  • Design and usability review
    • At this stage, we'd have a minimal release ready plasmoid
  • Display meta-data like route stops and delay in a journey
  • Implement advanced features like alarm configurations and stop completion
  • Port timetablemate to Plasma5.
    • timetablemate is a simple editor which provides support for users to add new service providers