Maemo.org Coding Competition 2016

Maemo Developer Regatta logo, thanks to gri4994

Contents

[edit] Introduction

Welcome to the maemo.org Developer Regatta 2016-2017 wiki page! Beginning on Tuesday 1 of November, and running for 3 months. This year's competition has the following three categories: Something new, Fixing/Updating and Beginner. Whether you are an experienced developer, porter, hacker or just a beginner on your very first hacks/codes, we have a category that suits you and your codings! Entries for Maemo & Mer-based devices are eligible.


We are relying on your donations towards the Community Prize Fund.

Entry is free. If there are any questions we have a discussion thread for the competition at http://talk.maemo.org/showthread.php?p=1517602

If you are new to the Maemo community, please feel free to check out our introduction page to learn more about us.

Thanks for your interest in taking part, we can't wait to see what you'll develop! :)

(NB: The final details are still being ironed out, so the below is subject to change. Keep watching this space!)

[edit] Devices & Platforms

  • Maemo
    • Includes all Maemo devices and MeeGo Harmattan devices.
  • Mer-based
    • Includes all Mer-based devices. E.g. SailfishOS, NemoMobile, AsteroidOS etc.


[edit] Categories

The 3 categories:

  • Something new
    • In this category all new creations, for example applications, device ports, cross-platform, any kind hacks, and et cetera, are viable.
  • Fixing/Updating
    • Anykind of fixes, updates, backporting, exploiting/reverse engineering closed packages in to this category.
  • Beginners
    • First contribution

Of course these are not strict categories. So if your developments doesn't seem to fit any category, submit the entry and we will fit it.

[edit] Results

Voting results are available here: Something new and Fixing/Updating


Something new
Placement Entry
1tIDE by eekkelund
2GPXSee by Halftux
3Docker for Maemo by uvatbc
4Shmoose - XMPP Client by schorsch
5AirSail Transfer by 6uvNPR
6Defender by nodevel
7Droplet Browser by saidinesh5
8Editor by GoAlexander
9MaeMoneyPot by Justmemory
10MeeTeleGram by hedayat
11VNC Screen by marcellodgl
12Bootyhunter by tadzik
13Prostogram by neochapay
14PingYou by Feathers McGraw
15Pyrrha by comee
16Serra by Osanwe
17DartsScore by rgrnetalk
18RGB WiFi by Modulebaan
19Mak by john_god
Fixing/Updating
Placement Entry
1GPG in email by dcaliste
2modRana improvements by MartinK
3OpenSSH Status Widget by Rasmarc
4OSM Scout by karry
5Update Glacier-home by neochapay
6oscp by KotCzarny
7Saera updates by taixzo
8Wunderfitz by Ygriega
9OSM2go updates by Dakon
10Fast chess by rikujolla
11Sailfinder by Modulebaan
12NecroPlayer2 by Rasmarc
13Sailaqua by kuba77

Congratulations to all participants! Maemo Community is very grateful for all entries recieved. :)

[edit] Competition Timeline

The competition is currently scheduled to accept submissions for 3 months, starting on Tuesday 1 November 2016 and ending on Wednesday 1 February 2017. Competition entries must be submitted by 12 midnight on Tuesday 31 January(UTC time). Testing/reviewing will take two weeks, from 01.02.2017 to 15.02.2017 and voting will run from 16th of February until 28th of February 2017, 23:59 UTC.

[edit] How to Submit an Entry

To enter, you can submit your entry via one of two ways - the thread in TMO available at [1] or by emailing directly to the email address maemo-community<*at*>maemo<*dot*>org(first subscribe here). You will also align your entry to one of the judging categories[2] at that time. in addition, you will also need to provide some details for the judging thread, including 2 screenshots, a brief description of your entry, and an outline of what work you personally completed on it.

It would be appreciated if entries would also be posted to openrepos.net[3].

Only entries received via TMO thread or emailed directly to the competition email address will be counted as valid entries in the competition. New participants are welcome to join at any time up until the closing date.

  • Project Name:
  • Author:
  • Brief description:
  • Category:
  • Screenshot(s):
  • Features/work to be judged:
  • Package name and where to find the app/repository:
  • talk.maemo.org thread(if exists):

[edit] Prizes

What From Selected by winner Received OK
JollaC JollaOy MartinK Received ~05.05
JollaC JollaOy rasmarc Received 03.05
Intex Aquafish aspergerguy karry Received 09.10
Jolla1 TFO with 3 TOH's (Black, Aloe, Orange) + KBDTOH Carbon + SolarTOH + QI-TOH + Screenprotector Maemo Community e.V. Halftux
Jolla1 with 2 TOH's (Black, Aloe) + KBDTOH with bad keypad + LastuWallet Maemo Community e.V. schorsch Received ~15.10
JollaC eekkelund eekkelund
Jolla Tablet with lastucase juiceme dcaliste Received 14.04
N900 nieldk 6uvNPR Received 17.05
N9/64GB n0x KotCzarny Received
N9/16GB juiceme

uvatbc who is winner #5 has graciously decided to pass by his selection so that more winners can be rewarded.

neochapay who is winner #10 has graciously decided to pass by his selection so that more winners can be rewarded.

[edit] Donations for the Community Prize Fund

The following list shows all of the donations and pledges made to the community prize fund so far. There is no fixed amount - all donations are very welcome!


Please mark your donation as Competition Reward or it will not be bound to the Competition and taken as random donation!

Monetary donation methods and information can be found from here: [4]. Please use direct SEPA wire if applicable.

Please don't forget to include your maemo.org username in the transfer message to be mentioned in the following list. If no maemo.org username is included, the donation will be marked as anonymous. You can find more information on the donation paypal process (with screenshots) on this post


Monetary donations will be converted to physical prizes. There will be no refunding of any such donation. Donations not marked as Competition Rewards will be taken as random donations and are not bound to the Competition or any future competition.

Physical donations are just the same; if they are not shipped clearly marked as Competition Rewards Donation, they become property of MCeV and are not bound to be taken as Rewards for the Competition or any future competition.

Funds and hardware, not directed towards the competition fond, may be used to support future developers on special tasks e.g. given out as Developer Loaner.



Our special thanks to the following people for their generous contributions:

Date Nickname Amount in € Account Paid
30/09/2016 <anonymous> 20,00 Deutsche Bank yes, 30/09/2016
03/10/2016 (reinob) 100,00 Deutsche Bank yes, 03/10/2016
05/10/2016 <anonymous> 25,00 Deutsche Bank yes, 05/10/2016
09/10/2016 <anonymous> 39,65 Bitcoin yes, 11/10/2016
11/10/2016 (sausset) 5,00 Deutsche Bank yes, 11/10/2016
11/10/2016 <anonymous> 10,00 Deutsche Bank yes, 11/10/2016
12/10/2016 <anonymous> 20,00 Deutsche Bank yes, 12/10/2016
27/10/2016 (eekkelund) 20,00 Deutsche Bank yes, 27/10/2016
31/10/2016 <anonymous> 27,10 PayPal yes, 31/10/2016
31/10/2016 (pavi) 10,00 Deutsche Bank yes, 31/10/2016
31/10/2016 <anonymous> 100,00 Bitcoin yes, 01/11/2016
08/11/2016 <anonymous> 50,00 Deutsche Bank yes, 08/11/2016
11/11/2016 (Halftux) 30,00 Deutsche Bank yes, 11/11/2016
16/11/2016 (P@t) 30,00 Deutsche Bank yes, 16/11/2016
17/11/2016 [(Shube)] 20,00 Deutsche Bank yes, 17/11/2016
17/11/2016 (LameDuck) 25,00 Deutsche Bank yes, 17/11/2016
17/11/2016 [(cemoi71)] 30,00 Deutsche Bank yes, 17/11/2016
07/12/2016 <anonymous> 5,00 Deutsche Bank yes, 07/12/2016
13/12/2016 (munozferna) 51,79 Deutsche Bank yes, 13/12/2016
15/12/2016 <anonymous> 25,00 Deutsche Bank yes, 15/12/2016
03/01/2017 <anonymous> 20,00 Deutsche Bank yes, 03/01/2017
06/01/2017 <anonymous> 50,00 Deutsche Bank yes, 06/01/2017
30/01/2017 <anonymous> 20,00 Deutsche Bank yes, 30/01/2017
31/01/2017 <anonymous> 3,00 Deutsche Bank yes, 31/01/2017
02/03/2017 <anonymous> 100,00 Deutsche Bank yes, 02/03/2017
Total Donated Bank fees Total received
839,75 3,21 836,54


[edit] Participants

The final list of participants for voting is available at http://talk.maemo.org/showthread.php?p=1517602

And you can see the application submissions listed by category on forum posts via the links below:

  • Something new []
  • Fixing/Updating []
  • Beginners []


The below table displays the submission details, as received, for each entry. (The table is currently in process of being updated with the final details.)

Developer Entry Category Platform (Maemo/Mer-based) Entry Received?
6uvNPR AirSail Transfer Something new Mer-based(SFOS) YES
karry OSM Scout for SFOS Fixing/Updating Mer-based(SFOS) YES
Halftux GPXSee Something new Maemo (Maemo5) YES
GoAlexander Editor. Something new Mer-based(SFOS) YES
uvatbc Docker for Maemo

[5]

Something new Maemo YES
schorsch Shmoose - XMPP Client for SFOS Something new Mer-based(SFOS) YES
Modulebaan Sailfinder Fixing/Updating Mer-based(SFOS) YES
Modulebaan RGB WiFi Something new Mer-based(SFOS) YES
rikujolla Fast chess Fixing/Updating Mer-based(SFOS) YES
neochapay Prostogram Something new Mer-based(SFOS) YES
neochapay Update Glacier-home Fixing/Updating Mer-based(SFOS) YES
Ygriega Wunderfitz Fixing/Updating Mer-based(SFOS) YES
tadzik Bootyhunter Something new Mer-based(SFOS) YES
rgrnetalk DartsScore Something new Mer-based(SFOS) YES
eekkelund tIDE Something new Mer-based(SFOS) YES
comee Pyrrha Something new Mer-based(SFOS) YES
Dakon OSM2go updates Fixing/Updating Maemo YES
[marcellodgl] VNC Screen Something new Mer-based(SFOS) YES
Osanwe Serra Something new Mer-based(SFOS) YES
Feathers McGraw PingYou Something new Mer-based(SFOS) YES
dcaliste GPG in email application Fixing/Updating Mer-based(SFOS) YES
john_god Mak Something new N9/Harmattan & Mer-based(SFOS) YES
saidinesh5 Droplet Browser Something new Mer-based(SFOS) YES
MartinK modRana improvements Fixing/Updating Mer-based(SFOS) YES
Justmemory MaeMoneyPot Something new Maemo YES
taixzo Saera updates Fixing/Updating Mer-based(SFOS), more to come later YES
KotCzarny oscp Fixing/Updating Maemo YES
Rasmarc OpenSSH Status Widget Fixing/Updating Maemo YES
Rasmarc NecroPlayer2 Fixing/Updating Maemo YES
hedayat MeeTeleGram Something new N9/Harmattan YES
nodevel Defender Something new Mer-based(SFOS) YES
kuba77 Sailaqua Fixing/Updating Mer-based(SFOS) YES

[edit] Rules

To ensure that the event runs properly, there are a few essential rules:

  • Only individuals may participate. Companies are excluded from the competition because of equity reasons.
  • If you have coded your app in a team and you win one of the prizes, your team has to designate one person as the winner.
  • Any number of apps can be submitted and elected as winners but, as communally agreed, there will be one prize per developer.
  • Entries must be available as executable or equivalent and your entry should include at least two screen shots/pictures and a brief description to take part in the election. Entries have to run on Maemo or Mer-based devices/platforms. Device ports have to work on informed hardware.
  • All applications, which are created and uploaded during the duration of the competition and do not violate any laws or copyright will take part in the election.
  • A new application, in the context of the competition, is one which has not been previously developed for the Maemo or Mer-based platform.
  • Ported applications are welcome, however only the work of porting will be considered (unless the original program is from the same developer and was developed or extended within the competition timeframe). These entries should include a description of work done during the porting process to enable the application to run on the platform.
  • Already released software must have a substantial upgrade from previous releases to qualify for entry to the 'Update' category. These entries should also include a list of changes the author has made to the previous version.
  • Coding competition entries marked as beginner will also automatically be entered into the beginners contest if they meet the following criteria: entries to the beginners competition should be the authors first released coding project(s) for the Maemo or Mer-based platforms, and must have been first released between the competition start and end dates.
  • Entries that are not stand alone software will have to include any libraries or files required to run, or they should be easily available via the normal repositories. Clear instructions will have to be provided. In the case of interpreters and emulators copyrighted files should not be included.
  • There will be a feature freeze on entries during the voting stage of the competition. Please limit your code changes to bug fix only for any competition entry release during this period, and this restriction should remain until the end of the vote.
  • Only users of maemo.org who are registered at the start of the competition and have at least 10 karma at the time of voting are entitled to vote.
  • There is no legal right to win.

[edit] Voting

Voting will run from February 16 through February 28 2017, 23:59 UTC

The voting frontend, the webinterface via which you enter your vote, is the same as for the Maemo Council elections. So you can establish an order among the participating applications indicating your preferences. Thereby, the first choice has the most impact. With following choices the impact gets less and less. The last choice has the least impact. Every voter has one vote / category.

[edit] Counting Votes

After the voting period has finished the votes are counted. The ranking order of participants is determined based on all valid votes.

The tool used for counting the votes is OpenSTV. We use OpenSTV version 1.6.1-1 which can be publicly downloaded from http://packages.debian.org/squeeze/openstv . The openstv executable used is extracted from the *.deb package.

For each category, the ranking of candiates is determined individually.

As general "vote counting system" Fractional Transfer Single Transferable Vote (FTSTV) is used. FTSTV, however, does not provide a way for determining the order of participants out of the box.

For determining the ranking among the participating applications the following approach is used:

  • The winner is determined by running OpenSTV for one seat.
  • Subsequently, the second place is determined by running OpenSTV for two seats. Thereby, the winner from step 1 plus another participant will be elected. The newly added/elected participant is placed second.
  • For determining the third place, OpenSTV is run for three seats. The newly added/elected participant takes the third place.
  • This process is repeated until the number of seats reaches n-1 with n being the number of participants. The remaining participant not being added or elected yet takes the last place.

For automating this counting process the following script is used

election=$1

tail -n 1 $election | sed 's/"//g'

>/tmp/result
for i in $(seq $(expr $(head -c 2 $election) - 1))
do
  openstv-run-election -r CsvReport -s $i FTSTV $election \
    | awk -F, '/Elected/ { print $1 }' \
    | while read w
        do if ! grep -q "$w" /tmp/result
          then
            echo $w >> /tmp/result
            break
          fi
        done
done
awk 'BEGIN { i = 1; } { print i, $0; i++; }' /tmp/result | sed 's/"//g'

This script should be saved to a file named "results" and can be called as follows:

for i in *.blt; do sh results $i; done

Assuming the script + openstv-run-election are in the same directory as the result files (the *.blt files) for all categories and the current directory is this directory, this way of calling the script will perform the counting for all categories. The only thing that may be changed in the above script is the passage "openstv-run-election" for adding a proper path to the actual location of the OpenSTV executable, e.g., to point to "/usr/bin/openstv-run-election". Aside from this exception the script must not be changed at all.

However it is still possible to also do the vote counting manually using the described process. Vote counting process, OpenSTV version used, and counting script are all publicly available so everyone can perform the voting and verify the final official results.

[edit] App Developer Resources

[edit] Getting started with Maemo application development

##TODO

The Nokia Qt SDK is the official set of tools with everything needed to design and create applications for the N900. The development wiki is a great place to start, it contains lots of code examples and development guides. The "Windows Python and Qt in 30 mins" thread is a great PyQt tutorial for beginners and will have you coding your first app in minutes, and here's a tutorial from Linuxuser.co.uk.

The 'Developer' forum on maemo.org is an excellent resource to find answers and ask questions of your own.

[edit] FAQ

[edit] Spreading the word

[edit] Q: Which Twitter Hashtag to use for this Competition?

A: Please use #mccXVI

[edit] Application requirements

[edit] Q: It is obligatory to code in Qt?

A: No, it isn't, but it would make your life probably a lot easier because you will be able to reach more platforms. We encourage everyone to use Qt.

[edit] Q: It is obligatory to open source the code?

A: No, it isn't, but it highly encouraged. Community tends to give better votes for open sourced entry.

[edit] App/Application submission process

[edit] Q: Where to submit my application?

A: You can enter your application via talk.maemo.org thread available at http://talk.maemo.org/showthread.php?p=1517602 or by emailing your application to maemo-community<*at*>maemo<*dot*>org directly.


[edit] Q: Who selects the category of the application?

Will the developers select the category when they join the competition or will someone sort it into the correct category before the voting begins?

A: They will choose the category for their app, but everyone should keep an eye on that. Before the voting process starts we'll check if every app is in a reasonable category, so that it is not possible to cheat by choosing the category with the lowest competition.

[edit] Wishlist

If you would like to have an App, a Port, a Fix, a Hack or etc. but you can't code yourself, write it down here! Many devs are happy to get a new idea input. (Rom Manager was a proposal from year 2011).

application name short description features link to similar app or screenshots
AsteroidOS client for SFOS Developing a synchronization app between SFOS phones and AsteroidOS watches Several Bluetooth Low Energy profiles have already been implemented on the Android client and the watch's daemon, they would be great to have on a native SailfishOS client:
  • Notification profile
  • Weather profile
  • Media profile

Adding new profiles or improving them can also be a great contribution. Help and details can be found on the #asteroid IRC channel on freenode.

Bitcoin/Cryptocurrency wallet for SFOS A wallet for sending and receiving cryptocurrency Basic features:
  • Send and receive cryptocurrency.
  • Scan and display QR-codes of wallet addresses
  • Secure the wallet with a passphrase and encryption

Advanced:

  • multi cryptocurrency wallet and exchange between them using shapeshift or similar

Original Bitcoin wallet was done in Qt so you could get some help from there

Rom Manager A rom manager for emulators. Choose folders for roms of different systems.

Rom audition and fixing using Romcenter databases

Rom downloading.

Integration with most popular emulators (DrNokSnes, PicoDrive, ...)

Rom Gripper for Android.
GNU Backgammon port A port of GNU Backgammon to Maemo/N900 GNU Backgammon is a backgammon program with a really good AI and Maemo has no backgammon program.

Its GPL, uses GTK+ and has packages for Debian already.

Mumble for SFOS Porting Mumble written for N900 to SFOS Mumble is a low latency VOIP Server and a client. N900 or Maemo has a Mumble application which included a server. It would be nice to have a SailfishOS client for Mumble.
  • First of all Maemo application was written for X11 while SFOS one needs to be written for Wayland.
  • Its now new Qt version ( 4.5 -> 5.6(target))
  • It was suggested in #Mumble channel that its hard to port as most of the protobuff stuff needs to be written
  • A new app should be able to query the mumble protocol.

Alternate Suggestion:

  • An easy solution would be to write a PyQt app using the Mumble Python API.
Matrix client for SFOS Porting any Matrix client to SFOS - Riot is actually a nice example IMHO. Matrix is an open standard for interoperable, decentralised, real-time communication over IP. It can be used to power Instant Messaging, VoIP/WebRTC signalling, Internet of Things communication - or anywhere you need a standard HTTP API for publishing and subscribing to data whilst tracking the conversation history. Matrix’s initial goal is to fix the problem of fragmented IP communications: letting users message and call each other without having to care what app the other user is on - making it as easy as sending an email.
Ring client for SFOS Porting any existing Ring client to SFOS Ring is for the time being, the most promising privacy oriented chat/voice/share client, imho. I know it's still in beta phase, but it works really well on both Linux and Windows (haven't tried the others). Ideally this would be fully integrated into the system through Telepathy rather than a separate client.
Orrery for SFOS An open source amateur astronomy app The orrery program is a program to display stars, planets and other astronomical objects on devices running the Maemo 5 software suite.
Vevo videos on YTplayer implement the ability to watch Vevo videos on SFOS (YTplayer/LLSplayer/standalone app) Currently is not possibile to watch Vevo videos apart using browser cause it gives some kind of error. it would be nice to have a way to watch them in an app
strato hidrive a native app for the online-storage of hidrive. that already exists in android , but a native app would be better. features like: up- and downloads, automatic sync * google-app
Sail-harbour or jolla-radar A on the phone based standalone-leave-alone Suite, managing main feature of a phone through a web-frontend in a separate desktop. Connectivity: USB Networking, wlan, BT Networking.

Export: Filesystem,Controls,Settings,Screen,Internet
Frontend-features: Filebrowser, Mediaplayer (remote), Messaging, Calendar(manager), Gallery, Videoplayer, Accountmanagement, Screen remote, Backup&Restore.
complete description on jolla tjc

  • ajenti
  • Airdroid
  • KDE Konnect
  • Sailserver (native sailfish-app) minimalist concept like airdroid, apparently not maintained any more.
Subliminal messaging for SFOS A native SFOS app that displays text or images messages for a few milliseconds on a regular interval (every 5 seconds or so). Currently no such app exits for SFOS. It is good for learning something easily, positive auto-suggestions and the like. On Android, there are several apps. Example: Subliminal Messages Lite [6]
Cutespot Every platform needs some apps which everybody knows and a lot people needs, Cutespot(Spotify) is one of them. As can be seen herethere are enough bugs that needs to be squeezed. I hope with the attention from this competition the app will grow in towards a stable nice Sailfish app.

The topichere at TMO.

Tweetian Tweetian is a Twitter client which has some work to be done, but also a app that is important for the platform SailfishOS as it is almost the only native Twitter client. There are over 60 issues in Github which can use some time and investigation.

[edit] Discussion

Please participate in the discussion at talk.maemo.org

[edit] Contact

You still have questions? Contact us!

  • @maemo_council in Twitter
  • council<*at*>maemo<*dot*>org

[edit] Previous competitions

[edit] Events