https://community.kde.org/api.php?action=feedcontributions&user=Shantanu+Tushar&feedformat=atomKDE Community Wiki - User contributions [en]2024-03-29T08:18:59ZUser contributionsMediaWiki 1.40.2https://community.kde.org/index.php?title=Promo/Events/Parties/KDE_6th_Megarelease&diff=100236Promo/Events/Parties/KDE 6th Megarelease2024-02-29T15:37:52Z<p>Shantanu Tushar: /* Berlin */ removed myself as I won't be able to make it</p>
<hr />
<div>This page is for '''KDE's 6th Megarelease release party''' listings. Please follow the following template for readability and keep it sorted.<br />
<br />
KDE's 6th Megarelease is planned for February 28 2024, of course there is no need to celebrate the same day.<br />
<br />
We use the term "party" but it can be anything you want, a dinner, a meeting in a cafeteria, a talk in your local Free Software group, be creative!<br />
<br />
If you have questions email aacid@kde.org or kde-promo@kde.org. <br />
<br />
An example of how you need to enter the information is given below :<br />
<br />
= Continent =<br />
== Country ==<br />
=== Place ===<br />
<br />
*Date: DD/MM/YY (preferably within two weeks of the anniversary)<br />
*Time: 00:00 - 00:00 <br />
*Place: 12 Krazy Ave, Krazytown, Krazyland (link to map) <br />
*Organizer: Airplane (email) <br />
*Other info:<br />
** Bring your own beer!<br />
<br />
*Who is coming? (Add yourself here if you want to come!)<br />
** Brian<br />
** Melissa<br />
<br />
*What are we doing?<br />
** Melissa will give a talk about cool KDE srugg, demoing new features<br />
** have a few beers<br />
** We sing KDE songs and play guitar<br />
** eat cake with a nice 20 + KDE logo on it<br />
** have fun<br />
<br />
<br />
'''[https://umap.openstreetmap.fr/hu/map/kde-6-megarelease-launch-parties_1012771?scaleControl=false&miniMap=true&scrollWheelZoom=true&zoomControl=true&editMode=disabled&moreControl=true&searchControl=null&tilelayersControl=null&embedControl=null&datalayersControl=true&onLoadPanel=undefined&captionBar=false&captionMenus=true#6/48.085/14.063 View the events on a map]'''<br />
= Europe =<br />
== Germany ==<br />
=== Berlin ===<br />
<br />
*Date: Friday 1 March 2024<br />
*Time:<br />
** Dinner: 19:00-20:15<br />
** Party: 20:30-22:00+<br />
*Places:<br />
** Dinner: Karabach Holzkohlegrill (Azerbaijan), [https://www.openstreetmap.org/?mlat=52.47491&mlon=13.4276&zoom=19 Hermannstr. 198, 12049 Berlin], U8 Leinestrasse station<br />
** Party: 'offline' ([https://offline.place/ website]), [https://www.openstreetmap.org/?mlat=52.4766106903553&mlon=13.420510590076447&zoom=19 Lichtenrader Str. 49, 12049 Berlin], U8 Boddinstrasse station<br />
<br />
*Organizers:<br />
** Joseph P. De Veaugh-Geiss joseph@kde.org<br />
** Lydia Pintscher lydia@kde.org<br />
<br />
*Who is coming? (Add yourself here if you want to come; make sure Lydia or Joseph has your contact info or join https://matrix.to/#/#kde-berlin:kde.org so we can contact you when we finalize date/time/place!)<br />
** Lydia Pintscher<br />
** Joseph P. De Veaugh-Geiss<br />
** Aleix Pol<br />
** Aniqa Khokhar<br />
** Carl Schwan<br />
** Volker<br />
** Michal R. (vadorovsky)<br />
** Shinjo Park<br />
** Eike Hein<br />
** Tobias D. (party only)<br />
** Minh Tran<br />
** Leonard Menzel <br />
<br />
* What are we doing?<br />
** Eat, drink, be merry<br />
** Game ideas: https://discuss.kde.org/t/party-games-for-kdes-megarelease-6-in-february/9435<br />
<br />
=== Nürnberg ===<br />
<br />
* Date: 2024 February 29<br />
* Time: 19:00 - 21:00<br />
* Place: '''Newer Than New location: SUSE Office, Frankenstraße 146, 90461 Nürnberg'''<br />
[https://paste.opensuse.org/pastes/23820944854b Subway/Bus Station "Frankenstraße". Car to "Frankencampus". Follow walking path as highlighted here]<br />
* The main entry door wouldn't open automatically, if no SUSE person is there waiting for you '''look for a KDE poster with a phone number or QR code to scan'''<br />
<br />
* Organizers:<br />
** Klaas Freitag (kfreitag@owncloud.com)<br />
** Dirk Müller (dmueller@suse.com)<br />
<br />
* Who is coming? <br />
** Dirk Müller<br />
** Cornelius Schumacher<br />
** Hannah von Reth<br />
** Klaas Freitag<br />
** Tobias Fella<br />
** Robert Simai<br />
** Ignaz Forster<br />
** Fabian Vogt<br />
** Remko van Wagensveld<br />
** Christopher Hock<br />
** Nico Krapp<br />
** Christian Hagenest<br />
** Marvin Friedrich<br />
** Marc-Elias Travitzky<br />
** Robert Richardson<br />
** Kai Uwe Broulik<br />
** Janik Haag<br />
** Peter Lehmann<br />
** Rafael Sadowski<br />
** (David Redondo, if I can make it)<br />
** Cathy Hu<br />
** Nicolas Fella<br />
<br />
* What are we doing?<br />
* Presentations ([https://meet.google.com/ekg-vktv-jbv option to attend presentations virtually]): <br />
** Refresher on KDE History (Cornelius Schumacher)<br />
** Plasma 6.0 (Kai Uwe Broulik)<br />
** What's new in KDE 6 (the non-Plasma bits, anyone, please ;)<br />
* Drinks, chat and snacks<br />
<br />
== Hungary ==<br />
=== Budapest ===<br />
<br />
*Date: February 28, 2024<br />
*Time: 18:00<br />
*Place: [https://www.openstreetmap.org/node/1937976045 A Grund (1082 Budapest, Nagy Templom utca 30.)]<br />
*More info:<br />
** [https://gettogether.community/events/48137/kde-plasma-6-kiad%C3%A1si-party/ GetTogether]<br />
** [https://ubuntu.hu/blog/46535-kde-plasma-6-kiadasi-party Ubuntu.hu]<br />
** [https://www.facebook.com/events/752625316822820 Facebook]<br />
<br />
*Who is coming?<br />
** Áron (aronkvh)<br />
** Meskó Balázs (meskobalazs)<br />
** Kiszel Kristóf (ulysses)<br />
** More people on GetTogether<br />
<br />
*What are we doing?<br />
** Demo of the new features in Plasma<br />
** Informal chat afterwards<br />
<br />
== Slovenia ==<br />
=== Ljubljana ===<br />
<br />
* Date: 2024 March 4<br />
* Time: 19:00 - 21:00+<br />
* Place: [https://www.racunalniski-muzej.si/ Računalniški muzej (Computer Museum)], [https://www.openstreetmap.org/node/3797424410 Celovška cesta 111 Ljubljana]<br />
* Organizers:<br />
** [[User:JLP|Jure Repinc]] (jlp@holodeck1.com) - [https://mstdn.io/@JRepin/111942750833745198 see this Mastodon thread for updates]<br />
** Matija Šuklje (matija@suklje.email)<br />
<br />
* Who is coming? (add yourself, helps us know how many snacks/drinks to buy, you can also RSVP on [https://dogodki.kompot.si/events/b11f41ce-9edf-4863-a015-8dabd64fef5b Mobilizon event])<br />
** Jure Repinc<br />
** Matija Šuklje<br />
** Mihael S. (verjetno)<br />
** ...<br />
<br />
* What are we doing?<br />
** Presentation: Refresher on KDE History, show new KDE Plasma 6 features<br />
** Try the old KDE 1.1 and Pingo Linux on a real old computer<br />
** Play games on Steam Deck (gaming handheld coming with GNU/Linux and KDE software)<br />
** Drinks and snacks<br />
** Just chat<br />
<br />
== Spain ==<br />
=== Barcelona ===<br />
<br />
*Date: March 2nd<br />
*Time: 19:00 for drinks, 21:00 for dinner<br />
*Place: [https://www.openstreetmap.org/node/9569226412#map=19/41.37493/2.13904 Craft Beer ArteSants, carrer Guadiana, 08014-Barcelona]<br />
*Organizer: Albert Astals Cid aacid@kde.org<br />
<br />
*Who is coming? (Add yourself here if you want to come, make sure Albert has your contact so he can contact you when we finalize date/time/place!)<br />
** Albert Astals Cid<br />
** Josep M. Ferrer<br />
** Carlos Cabezas<br />
** Albert Vaca Cintora <br />
<br />
* What are we doing?<br />
** Drinks & Dinner - Email aacid@kde.org to be told if the plans change at last minute<br />
<br />
=== Málaga ===<br />
<br />
*Date: 26th February<br />
*Time: 20:30<br />
*Place: [https://www.openstreetmap.org/node/2883801603 Mesón Astorga]<br />
<br />
*Organizer: Agustín Benito (abenito@kde.org), Paul Brown (paul.brown@kde.org)<br />
<br />
*Who is coming? (Please add yourself to the list or ping directly Agustin or Paul since we will need to make a reservation since it is a popular restaurant, close to the main train station in Málaga (María Zambrano))<br />
** Agustín Benito<br />
** Paul Brown<br />
** Antonio Larrosa<br />
** Alberto Planas Domínguez<br />
** Daniel Garcia Moreno<br />
** Jonathan Riddell<br />
<br />
* What are we doing?<br />
** Dinner in a good restaurant specialized in grilled meat. We will celebrate like there is no Plasma 7 :-)<br />
** Team picture<br />
<br />
=== València ===<br />
<br />
*Date: 9th March<br />
*Time: 10:00<br />
*Place: [https://www.openstreetmap.org/#map=19/39.54387/-0.46466 Linux Center]<br />
<br />
*Organizer: Alejandro López (), Baltasar Ortega (bortega@kde-espana.org)<br />
<br />
*Who is coming? Please register at [https://linuxcenter.es/aprende/proximos-eventos/77-taller-9-marzo-2?date=2024-03-09-10-00 Linux Center] or ping directly Baltasar [https://t.me/baltolkien]. There are limited places because we have limited places at the restaurant.<br />
** Alejandro López<br />
** Borja Lopez<br />
** Baltasar Ortega<br />
** 1 annomymous<br />
** up to a maximum capacity of 33 people<br />
<br />
<br />
* What are we are going?<br />
** Two talks<br />
*** Bash to surf Linux "like a PRO" by Borja López<br />
*** News about Plasma 6, the new and improved desktop from the KDE Community by Baltasar Ortega<br />
** After we eat a paella<br />
** Finally make a Team picture<br />
<br />
* I need to register?<br />
** Yes, you must register at [https://linuxcenter.es/aprende/proximos-eventos/77-taller-9-marzo-2?date=2024-03-09-10-00 Linux Center]<br />
<br />
== UK ==<br />
=== Cambridge ===<br />
<br />
*Date: 29th Feb<br />
*Time: 19:00<br />
*Place: The Haymakers, High Street, Cambridge<br />
<br />
*Organizers:<br />
** David Edmundson davidedmundson@kde.org<br />
<br />
*Who is coming? (Add yourself here if you want to come or drop me an email)<br />
** David Edmundson<br />
** Emil Velikov<br />
<br />
* What are we doing?<br />
** Going to the pub, have a nice cold pint and a hot pizza, and avoid looking at the incoming bugzilla emails<br />
<br />
= America =<br />
== Canada ==<br />
=== Montréal ===<br />
<br />
*Date: 08/03/2024 (2024-03-08)<br />
*Time: to be decided<br />
*Place: [https://www.google.com/maps/place/999+Rue+du+Coll%C3%A8ge,+Montr%C3%A9al,+QC+H4C+2S2,+Canada Suite 33B, 999 du Collège, Montréal, Quebec, Canada, H4C 2S3]<br />
* Language / Langue: English / Français<br />
* More info: currently ask on [irc://irc.libera.chat/foulab #foulab on irc.libera.chat] (see also [https://foulab.org/contact/ here]) and see [https://foulab.org/news/events-february-2024/ the events during february].<br />
<br />
*What are we doing?<br />
** Demonstration of the new Plasma 6 features & bug fixes<br />
** Exploration of the lesser-known apps that are part of KDE (like KGeography, Boko…)<br />
** Play around with older Plasma versions? It could be fun<br />
** Hopefully convince some people to move away from proprietary software<br />
<br />
= Asia =<br />
== Republic of Korea ==<br />
=== Seoul ===<br />
<br />
*Date: 03/03/2024 (2024-03-03)<br />
*Time: PM 2:00 - PM 7:00 (UTC+09:00)<br />
*Place: [https://www.google.com/maps/place/198-2+Hangangno+2(i)-ga,+Yongsan-gu,+Seoul/data=!3m1!4b1!4m6!3m5!1s0x357ca21ce1e60815:0xbd064bcb1768a9ae!8m2!3d37.5268513!4d126.9664803!16s%2Fg%2F11bz7vs6cr?entry=ttu Central Park Tower 23th Floor Fast Five, 198-2 Hangangno 2(i)-ga, Yongsan-gu, Seoul]<br />
* Language / Langue: English / Korean<br />
* More info: This event is on Seoul North Western Linux Meeting Group, Yong San. To manage seats for participants, plesae mail to kde6megarelease@kde.or.kr.<br />
<br />
*What are we doing?<br />
** Live building KDE 6 on compile cluster<br />
** Code Review KDE 6 Codes and repositories<br />
** Discuss how to bring information about KDE 6<br />
<br />
== Nepal ==<br />
=== Dharan ===<br />
<br />
*Date: 27/02/2024 (2024-02-27)<br />
*Time: PM 2:00 - PM 5:00 (UTC+05:45)<br />
*Place: [https://www.google.com/maps/place/Archi+Courtyard/@26.7931472,87.2897937,17z/data=!4m9!1m2!2m1!1spurwanchal+campus!3m5!1s0x39ef410032b039a9:0x32dfa2fd5f40f10f!8m2!3d26.7919649!4d87.29369!16s%2Fg%2F11vst79zxr?entry=ttu (Archi Courtyard) Purwanchal Campus, Dharan]<br />
*Language : English / Nepali<br />
*Organizer: Spandan Guragain (spandanguragain@gmail.com)<br />
<br />
*Who is coming?<br />
** Spandan (scientiac)<br />
** Students from the campus.<br />
<br />
*What are we doing?<br />
** Introduce KDE Network Nepal<br />
** Talk about FOSS and KDE<br />
** Have Fun<br />
<br />
== Japan ==<br />
=== Tokyo ===<br />
<br />
*Date: 08/03/2024 (2024-03-08)<br />
*Time: 18:30 - 20:30 (UTC+09:00)<br />
*Place: TBD<br />
*Organizer: Mathieu Jobin (somekool/webchat: @somekool:matrix.org)<br />
*Other info:<br />
** [https://tokyo-kde.connpass.com/event/311763/ Connpass] (Please apply from this link to attend this release party)<br />
** [https://discuss.kde.org/t/plasma-6/10888 KDE Discuss]<br />
** Japan KDE Webchat: https://matrix.to/#/!qXdDlUMIbAZqgebJAJ:kde.org/$170893166344556AuEWA:matrix.org (https://webchat.kde.org/#/room/#jp:kde.org )<br />
<br />
*Who is coming? (Add yourself here if you want to come!)<br />
** Mathieu Jobin (somekool)<br />
** Please refer [https://tokyo-kde.connpass.com/event/311763/ Connpass event page] for other attendees<br />
<br />
*What are we doing?<br />
** ...<br />
** have fun</div>Shantanu Tusharhttps://community.kde.org/index.php?title=Promo/Events/Parties/KDE_6th_Megarelease&diff=100059Promo/Events/Parties/KDE 6th Megarelease2024-02-19T16:14:05Z<p>Shantanu Tushar: Add myself to /* Berlin */</p>
<hr />
<div>This page is for '''KDE's 6th Megarelease release party''' listings. Please follow the following template for readability and keep it sorted.<br />
<br />
KDE's 6th Megarelease is planned for February 28 2024, of course there is no need to celebrate the same day.<br />
<br />
We use the term "party" but it can be anything you want, a dinner, a meeting in a cafeteria, a talk in your local Free Software group, be creative!<br />
<br />
If you have questions email aacid@kde.org or kde-promo@kde.org. <br />
<br />
An example of how you need to enter the information is given below :<br />
<br />
= Continent =<br />
== Country ==<br />
=== Place ===<br />
<br />
*Date: DD/MM/YY (preferably within two weeks of the anniversary)<br />
*Time: 00:00 - 00:00 <br />
*Place: 12 Krazy Ave, Krazytown, Krazyland (link to map) <br />
*Organizer: Airplane (email) <br />
*Other info:<br />
** Bring your own beer!<br />
<br />
*Who is coming? (Add yourself here if you want to come!)<br />
** Brian<br />
** Melissa<br />
<br />
*What are we doing?<br />
** Melissa will give a talk about cool KDE srugg, demoing new features<br />
** have a few beers<br />
** We sing KDE songs and play guitar<br />
** eat cake with a nice 20 + KDE logo on it<br />
** have fun<br />
<br />
<br />
'''[https://umap.openstreetmap.fr/hu/map/kde-6-megarelease-launch-parties_1012771?scaleControl=false&miniMap=true&scrollWheelZoom=true&zoomControl=true&editMode=disabled&moreControl=true&searchControl=null&tilelayersControl=null&embedControl=null&datalayersControl=true&onLoadPanel=undefined&captionBar=false&captionMenus=true#6/48.085/14.063 View the events on a map]'''<br />
= Europe =<br />
== Germany ==<br />
=== Berlin ===<br />
<br />
*Date: Friday 1 March 2024<br />
*Time: 19:00-20:15 Dinner, 20:15-22:00+ Party<br />
*Place: restaurant to be decided, party at [https://offline.place/ 'offline'], [https://osm.org/go/0MbEjgwWT?m= Lichtenrader Str. 49, 12049 Berlin] (U8 Boddinstrasse)<br />
<br />
*Organizers:<br />
** Joseph P. De Veaugh-Geiss joseph@kde.org<br />
** Lydia Pintscher lydia@kde.org<br />
<br />
*Who is coming? (Add yourself here if you want to come; make sure Lydia or Joseph has your contact info or join https://matrix.to/#/#kde-berlin:kde.org so we can contact you when we finalize date/time/place!)<br />
** Lydia Pintscher<br />
** Joseph P. De Veaugh-Geiss<br />
** Aleix Pol<br />
** Aniqa Khokhar<br />
** Shantanu Tushar<br />
<br />
* What are we doing?<br />
** Eat, drink, be merry<br />
** Game ideas: https://discuss.kde.org/t/party-games-for-kdes-megarelease-6-in-february/9435<br />
<br />
=== Nürnberg ===<br />
<br />
* Date: 2024 February 29<br />
* Time: 19:00 - 21:00<br />
* Place: '''New location: ownCloud GmbH, Rathsbergstr. 17, 90411 Nürnberg'''<br />
* Organizers:<br />
** Klaas Freitag (please contact for logistics)<br />
** Dirk Müller<br />
<br />
* Who is coming? <br />
** Dirk Müller<br />
** Cornelius Schumacher<br />
** Hannah von Reth<br />
** Klaas Freitag<br />
** Tobias Fella<br />
<br />
* What are we doing?<br />
* Presentation: Refresher on KDE History (Cornelius Schumacher)<br />
* What's new in KDE 6<br />
* Drinks and snacks<br />
<br />
== Hungary ==<br />
=== Budapest ===<br />
<br />
*Date: 28/02/2024<br />
*Time: 18:00 (to confirm)<br />
*Place: [https://www.openstreetmap.org/node/1937976045 A Grund (1082 Budapest, Nagy Templom utca 30.)]<br />
*More info: https://gettogether.community/events/48137/kde-plasma-6-kiad%C3%A1si-party/<br />
<br />
*Who is coming?<br />
** Áron (aronkvh)<br />
** More people on Gettogether<br />
<br />
*What are we doing?<br />
** Demo of the new features in Plasma<br />
** informal chat afterwards<br />
<br />
== Slovenia ==<br />
=== Ljubljana ===<br />
<br />
* Date: 2024 March 4<br />
* Time: 19:00 - 21:00+<br />
* Place: [https://www.racunalniski-muzej.si/ Računalniški muzej (Computer Museum)], [https://www.openstreetmap.org/node/3797424410 Celovška cesta 111 Ljubljana]<br />
* Organizers:<br />
** [[User:JLP|Jure Repinc]] (jlp@holodeck1.com) - [https://mstdn.io/@JRepin/111942750833745198 see this Mastodon thread for updates]<br />
** Matija Šuklje (matija@suklje.email)<br />
<br />
* Who is coming? (add yourself, helps us know how many snacks/drinks to buy)<br />
** Jure Repinc<br />
** Matija Šuklje<br />
** ...<br />
<br />
* What are we doing?<br />
** Presentation: Refresher on KDE History, show new KDE Plasma 6 features<br />
** Try the old KDE 1.1 and Pingo Linux on a real old computer<br />
** Play games on Steam Deck (gaming handheld coming with GNU/Linux and KDE software)<br />
** Drinks and snacks<br />
** Just chat<br />
<br />
== Spain ==<br />
=== Barcelona ===<br />
<br />
*Date: March 2nd<br />
*Time: 19:00 for drinks, 21:00 for dinner<br />
*Place: to be decided<br />
<br />
*Organizer: Albert Astals Cid aacid@kde.org<br />
<br />
*Who is coming? (Add yourself here if you want to come, make sure Albert has your contact so he can contact you when we finalize date/time/place!)<br />
** Albert Astals Cid<br />
** Josep M. Ferrer<br />
** Carlos Cabezas<br />
** Albert Vaca Cintora <br />
<br />
* What are we doing?<br />
** Drinks & Dinner - Email aacid@kde.org to be told if the plans change at last minute<br />
<br />
=== Málaga ===<br />
<br />
*Date: 26th February<br />
*Time: 20:30<br />
*Place: [https://www.openstreetmap.org/node/2883801603 Mesón Astorga]<br />
<br />
*Organizer: Agustín Benito (abenito@kde.org), Paul Brown (paul.brown@kde.org)<br />
<br />
*Who is coming? (Please add yourself to the list or ping directly Agustin or Paul since we will need to make a reservation since it is a popular restaurant, close to the main train station in Málaga (María Zambrano))<br />
** Agustín Benito<br />
** Paul Brown<br />
** Antonio Larrosa<br />
** Alberto Planas Domínguez<br />
** 5th person<br />
** 6th person<br />
<br />
* What are we doing?<br />
** Dinner in a good restaurant specialized in grilled meat. We will celebrate like there is no Plasma 7 :-)<br />
** Team picture<br />
<br />
== UK ==<br />
=== Cambridge ===<br />
<br />
*Date: 29th Feb<br />
*Time: 19:00<br />
*Place: The Haymakers, High Street, Cambridge<br />
<br />
*Organizers:<br />
** David Edmundson davidedmundson@kde.org<br />
<br />
*Who is coming? (Add yourself here if you want to come or drop me an email)<br />
** David Edmundson<br />
** Jose Millan Soto<br />
** Emil Velikov<br />
<br />
* What are we doing?<br />
** Going to the pub, have a nice cold pint and a hot pizza, and avoid looking at the incoming bugzilla emails<br />
<br />
= America =<br />
== Canada ==<br />
=== Montréal ===<br />
<br />
*Date: 08/03/2024 (2024-03-08)<br />
*Time: to be decided<br />
*Place: [https://www.google.com/maps/place/999+Rue+du+Coll%C3%A8ge,+Montr%C3%A9al,+QC+H4C+2S2,+Canada Suite 33B, 999 du Collège, Montréal, Quebec, Canada, H4C 2S3]<br />
* Language / Langue: English / Français<br />
* More info: currently ask on [irc://irc.libera.chat/foulab #foulab on irc.libera.chat] (see also [https://foulab.org/contact/ here])<br />
<br />
*What are we doing?<br />
** Demonstration of the new Plasma 6 features & bug fixes<br />
** Exploration of the lesser-known apps that are part of KDE (like KGeography, Boko…)<br />
** Hopefully convince some people to move away from proprietary software</div>Shantanu Tusharhttps://community.kde.org/index.php?title=25th_birthday&diff=9311125th birthday2021-09-06T18:00:09Z<p>Shantanu Tushar: /* Events */</p>
<hr />
<div>KDE will celebrate its 25th anniversary on the 14th of October 2021. It all started with [https://www.kde.org/announcements/announcement.php this email].<br />
<br />
== Celebration ==<br />
We would like you to host an event in your city in the month of October 2021. It can be a small get together or a big event. You can just meet over coffee or drink and share pictures with us.<br />
<br />
== Events ==<br />
{| class="wikitable"<br />
|-<br />
! S. No. !! Date !! City !! Hosts !! People joining<br />
|-<br />
| 1 || 16 October 2021 || Berlin || Lydia and Aniqa || Lydia, Aniqa, Eike, Hyerim & Carl, Volker, Shantanu & Sinny<br />
|-<br />
| 2 || || || || <br />
|-<br />
| 3 || || || || <br />
|-<br />
| 4 || || || || <br />
|-<br />
| 5 || || || || <br />
|}<br />
<br />
== Materials ==</div>Shantanu Tusharhttps://community.kde.org/index.php?title=GSoC/2015/Ideas&diff=41893GSoC/2015/Ideas2015-03-17T17:10:48Z<p>Shantanu Tushar: Cancel Plasma media center idea because we don't have mentors to commit</p>
<hr />
<div>[[File:GoogleSummer 2015logo.jpg |200px|thumb|right|GSoC 2015 logo]]<br />
See also: [[../../|GSoc Instructions]], [[../../2014/Ideas|Last year ideas]]<br />
<br />
== Guidelines ==<br />
<br />
=== Information for Students ===<br />
<br />
These ideas were contributed by our developers and users. They are sometimes vague or incomplete. If you wish to submit a proposal based on these ideas, you may wish to contact the developers and find out more about the particular suggestion you're looking at.<br />
<br />
Being accepted as a Google Summer of Code student is quite competitive. Accepted students typically have thoroughly researched the technologies of their proposed project and have been in frequent contact with potential mentors. Simply copying and pasting an idea here will not work. On the other hand, creating a completely new idea without first consulting potential mentors is unlikely to work out.<br />
<br />
When writing your proposal or asking for help from the general KDE community don't assume people are familiar with the ideas here. KDE is really big!<br />
<br />
If there is no specific contact given you can ask questions on the general KDE development list kde-devel@kde.org. See [http://www.kde.org/mailinglists/ the KDE mailing lists page] for information on available mailing lists and how to subscribe.<br />
<br />
=== Adding a Proposal ===<br />
<br />
{{Note|Follow the template of other proposals!}}<br />
<br />
==== Project: ====<br />
<br />
'''Brief explanation:'''<br />
<br />
'''Expected results:'''<br />
<br />
'''Knowledge Prerequisite:'''<br />
<br />
'''Mentor:'''<br />
<br />
When adding an idea to this section, please try to include the following data:<br />
<br />
:*if the application is not widely known, a description of what it does and where its code lives<br />
:*a brief explanation<br />
:*the expected results<br />
:*pre-requisites for working on your project<br />
:*if applicable, links to more information or discussions<br />
:*mailing list or IRC channel for your application/library/module<br />
:*your name and email address for contact (if you're willing to be a mentor)<br />
<br />
If you are not a developer but have a good idea for a proposal, get in contact with relevant developers first.<br />
<br />
<br />
==Ideas==<br />
<br />
===Your Own Idea ===<br />
<br />
==== Project: Something that you're totally excited about ====<br />
<br />
'''Brief explanation:''' Do you have an awesome idea you want to work on with KDE but that is not among the ideas below? That's cool. We love that! But please do us a favor: Get in touch with a mentor early on and make sure your project is realistic and within the scope of KDE. That will spare you and us a lot of frustration.<br />
<br />
'''Expected results:''' Something you and KDE loves<br />
<br />
'''Knowledge Prerequisite:''' Probably C++ and Qt but depends on your project<br />
<br />
'''Mentor:''' Try to see who in KDE is interested in what you want to work on and approach them. If you are unsure you can always ask in #kde-soc on Freenode IRC.<br />
<br />
===Plasma===<br />
<br />
==== Project: Port various KDE4 Plasmoids to Plasma 5 ====<br />
<br />
'''Brief explanation:''' When we ported from Plasma 4 to Plasma 5 some useful Plasmoids ended up not being initially ported. We want the more important existing applets to continue to run which . Students should select a few Plasmoids which they deem useful for their proposal along with some innovative ideas for improvements. Students should show knowledge of the level of work related. <br />
<br />
'''Expected results:''' A few fully working plasmoids, polished and better than before.<br />
<br />
'''Knowledge Prerequisite:''' QML skills. Ideally some Plasmoid experience<br />
<br />
'''Mentor:''' Sebastian Kugler with help of the Plasma team.<br />
<br />
==== Project: Port KSystemLog to use journald as a backend ====<br />
<br />
'''Brief explanation:''' KSystemLog is a tool for viewing log files. This has slowly started to fail as log files moved in various distributions. Journald provides a common interface to query programatically system and user logs which will fix the main issue. Applications should impress me with their ideas utilising the available features. <br />
<br />
'''Expected results:''' A ported to frameworks journald powered log viewer. <br />
<br />
'''Knowledge Prerequisite:''' C++, Qt. <br />
<br />
'''Mentor:''' David Edmundson with help of the Plasma team.<br />
<br />
==== Project: Port various Systemsettings KCMs to QML ====<br />
<br />
'''Brief explanation:''' The codebase of the systemsettings modules is old and needs a redesign both code-wise and UI-wise. Students should select a few KCMs and propose how to port them to the new QML/C++ hybrid with some ideas on the improvement of their UI.<br />
<br />
'''Expected results:''' A few fully working KCM modules ported to a mix of QML and C++ that still load correctly in Systemsettings and KCMshell.<br />
<br />
'''Knowledge Prerequisite:''' QML and C++ skills.<br />
<br />
'''Mentor:''' Marco Martin with help of the Plasma team.<br />
<br />
=== Various Places ===<br />
==== Project: package install for 3rd party applications ====<br />
<br />
'''Brief explanation:''' KDE software needs to install software in various places. Investigate the best way to do this which is probably to use packagekit. Then implement this in the places which need it.<br />
<br />
'''Expected results:''' Work out best way for 3rd party programs to query and install packages. Then adapt the following pieces of software to install the packages they need:<br />
* dolphin file share install samba<br />
* kcm access to install orca<br />
* gwenview to install kipi-plugins<br />
* kcm locale should install kde-l10n-xx<br />
* kickoff to implement package install like kicker?<br />
* k3b needs to install codecs (on ubuntu at least)<br />
all this should be done in a way which works for the major distributions. <br />
<br />
Appstream could be used to find package names to install although support for this in Ubuntu is incomplete.<br />
<br />
'''Knowledge Prerequisite:''' C++<br />
<br />
'''Mentor:''' Jonathan Riddell (Riddell in #plasma on freenode IRC) with help of the Plasma team.<br />
<br />
=== Plasma and Gluon ===<br />
<br />
==== Project: Extend gamingFreedom.org framework to be more generic ====<br />
<br />
'''Brief explanation:''' Over the last couple of years, the gamingFreedom.org website and server side components have been created, which implement Open Collaboration Services (OCS) in a generic and reusable form. We are now at a point where it would make sense to attempt to use this for further purposes, rather than only for gamingFreedom.org. Specifically, a new implementation of the server component employed for hosting Plasma related content is needed, and a website for presenting this content on the web.<br />
<br />
'''Expected results:''' A new website based on gamingFreedom.org's OCS client libraries, and a server implementation for hosting Plasma content.<br />
<br />
'''Knowledge Prerequisite:''' PHP for the client and server code<br />
<br />
'''Mentor:''' Claudio Desideri and Dan Leinir Turthra Jensen with help of the Plasma team.<br />
<br />
=== Kdenlive ===<br />
<br />
Kdenlive is an intuitive and powerful multi-track video editor, including most recent video technologies. Our software is completely free, as defined by the GNU foundation. Using Kdenlive is investing in a community driven project, which aims to establish relationships between people in order to built the best video tools.<br />
<br />
* [http://www.kdenlive.org Kdenlive project web site]<br />
* [http://community.kde.org/Kdenlive Kdenlive wiki]<br />
* [https://mail.kde.org/mailman/listinfo/kdenlive Mailinglist]<br />
* [http://webchat.freenode.net/?channels=kdenlive #kdenlive IRC channel on Freenode]<br />
<br />
==== Project: Add support for new Animation capabilities ====<br />
<br />
'''Brief explanation:''' MLT, the media frameworks we use for rendering, has recently added a new [http://mltframework.blogspot.com/2013/06/v090-released-with-new-property.html property animation] to its objects. This allows much simpler, smoother and more general animations than the traditional keyframes technology. We then need new widgets to edit these properties, and eventually evolve our on-monitor interactions.<br />
<br />
'''Expected results:''' At the end of the project, we should be able to add and graphically adjust these animation parameters through controls in the effects stack panel, and bonus on the monitor.<br />
<br />
'''Knowledge Prerequisite:''' In the end you will assemble QtWidgets and interact with MLT data through C++. So you should be at ease with C++ and Qt (no need to be an expert), and have a look to the MLT manual page about animation.<br />
<br />
'''Mentor:''' Vincent Pinon with help of the Kdenlive team.<br />
<br />
==== Project: Redesign titler using WebVFX ====<br />
<br />
'''Brief explanation:''' Our titler, the tool we use to add text and drawing objects over the video, relies on a home made module added to the MLT framework. Our module is limited in features, quite slow to render, and demands work to maintain. MLT has since then been plugged into WebVFX engine, which provides infinite possibilities through web technologies, and it is certainly more robust. The goal is then to port our titler to this engine, then maybe evolve the interface to offer new possibilities.<br />
<br />
'''Expected results:''' At the end of the project, the titler should rely only on MLT WebVFX module. Bonus we should be able to add and easily edit more objects types.<br />
<br />
'''Knowledge Prerequisite:''' First step is to translate our XML to Web formats inside the C++ code, so you should understand those dialects. For the UI rework, you would then work with Qt, in either C++ or QML.<br />
<br />
'''Mentor:''' Vincent Pinon with help of the Kdenlive team.<br />
<br />
==== Project: add import/export filters for video editors exchange formats ====<br />
<br />
'''Brief explanation:''' To reduce the barrier to switch to Kdenlive, users should be able to import and export with commercial editing softwares (at least partially). Some scripts already exist to crudely parse EDL or AAF formats, the goal is to do it cleanly integrated in Kdenlive.<br />
<br />
'''Expected results:''' At the end of the project, we should be able to exchange projects with one or more commercial tools. Effects and transitions will probably be limited, but timeline construction should be transferable.<br />
<br />
'''Knowledge Prerequisite:''' The work will consist in manipulating XML data with Qt (C++), so you should understand those dialects.<br />
<br />
'''Mentor:''' Vincent Pinon with help of the Kdenlive team.<br />
<br />
==== Project: make Kdenlive work on Windows and OSX ====<br />
<br />
'''Brief explanation:''' All the frameworks Kdenlive relies on are working on other platforms, and Kdenlive used run on those long time ago. The goal here is to setup build environments on one or two other OS's, and fix the things that prevent Kdenlive to work.<br />
<br />
'''Expected results:''' At the end of the project, Kdenlive should work reliably on one or two commercial OS's.<br />
<br />
'''Knowledge Prerequisite:''' Setting up and running builds, fixing things in C++, CMake, dependencies.<br />
<br />
'''Mentor:''' Vincent Pinon with help of the Kdenlive and KDE porting teams.<br />
<br />
=== Amarok ===<br />
<br />
Amarok is a Music player that helps you organize and rediscover your music. <br />
<br />
* [http://amarok.kde.org Amarok project web site]<br />
* [http://community.kde.org/Amarok Amarok wiki]<br />
* [https://mail.kde.org/mailman/listinfo/amarok-devel Mailinglist]<br />
* [https://plus.google.com/+amarok Google+ page]<br />
* [http://webchat.freenode.net/?channels=amarok #amarok IRC channel on Freenode]<br />
<br />
==== Project: Port Amarok to Qt5/Kf5/Plasma5 ====<br />
<br />
'''Brief explanation:''' Currently Amarok still depends on kdelibs 4.x and Qt4.<br />
<br />
'''Expected results:''' Amarok should compile with Qt 5.x, kdelibs4 dependencies should be replaced with kf5. Port most existing plasma widgets of the Context View to Plasma 5 (at least the most important should be ported). The default system themes should apply to Amarok flawlessly. A very important part of this project is testing the port and adapting the unit tests.<br />
<br />
'''Knowledge Prerequisite:''' good knowledge of C++/Qt, ideally being familiar with kf 5 and Plasma 5. The student should have some basic knowledge of the Amarok project and its functions as well as its architecture. All relevant information about Amarok, Qt5, kf5 and Plasma 5 can be found online, every suitable applicant should be able to find this documentation on their own.<br />
<br />
'''Mentor:''' To be determined. All discussions about the project should be held on the mailinglist and/or on IRC<br />
<br />
===digiKam===<br />
<br />
digiKam is an advanced digital photo management application for Linux, Windows, and Mac-OSX.<br />
<br />
* [http://www.digikam.org digiKam project web site]<br />
* [http://www.exiv2.org Exiv2 project web site]<br />
* [https://techbase.kde.org/Projects/Digikam/CodingSprint2014 digiKam port to KF5 status]<br />
* [https://mail.kde.org/mailman/listinfo/digikam-devel Mailinglist]<br />
* [https://plus.google.com/+digikam Google+ page]<br />
* [http://webchat.freenode.net/?channels=digikam #digikam IRC channel on Freenode]<br />
<br />
==== Project: Re-write database KIO-slaves as pure Qt5 using multithreading ====<br />
<br />
'''Brief explanation:''' Originally, KIO-Slaves have been implemented to run database queries in a separated process to prevent problem with SQlite. Since SQlite support re-entrancy and queries from separated threads, digiKam KIO-slaves used to process complex and long database queries can be re-written as core implementation using Qt thread API. This will improve digiKam availability in time when system is updated in low-level, and permit to adjust finely CPU cores assigned to database process.<br />
<br />
'''Dependencies:''' : digiKam core from "framework" branch (KF5) <br />
<br />
'''Links:''' [https://www.sqlite.org/threadsafe.html Using Sqlite in multi-threaded application], [https://bugs.kde.org/show_bug.cgi?id=146557 Bug #146557]<br />
<br />
'''Knowledge Prerequisite:''' C/C++, Qt, database, multi-threading<br />
<br />
'''Expected results:''' Identify all parts of digiKam core which query database through KIO-slaves mechanism, factorize code in same interface and write a multi-threaded wrapper to run SQlite queries. Write test code to check quickly if database core implementation changes don't affect wrapper functionality. Note : digiKam use internally URL + XML formating to pass data to KIO-slaves and this not be changed.<br />
<br />
'''Difficulty:''' high<br />
<br />
'''Lead Mentor:''' Gilles Caulier <caulier dot gilles at gmail dot com><br />
<br />
==== Project: Advanced Metadata HUB ====<br />
<br />
'''Brief explanation:''' digiKam has already some options to manage workflow between image metadata and database, through the setup/metadata configuration panel. The goal of this project is to write a more advance setup to control finely the most important metadata field in order to read from image and populate database and vis versa. The list of metadata to drive must be easily extensible and configurable. Also, the metadata workflow to synchronize image with database must be more flexible and must provide a way to synchronize files at end of digiKam session and not only in real time (typical case : editing image tags to write in images). <br />
<br />
'''Dependencies:''' : digiKam core and libkexiv2 from "framework" branch (KF5) <br />
<br />
'''Links:''' [https://bugs.kde.org/buglist.cgi?bug_status=UNCONFIRMED&bug_status=CONFIRMED&bug_status=ASSIGNED&bug_status=REOPENED&component=Metadata&list_id=1205997&product=digikam&query_format=advanced&short_desc=HUB&short_desc_type=allwordssubstr Bugs list from bugzilla]<br />
<br />
'''Knowledge Prerequisite:''' C/C++, Qt, database, multi-threading<br />
<br />
'''Expected results:''' Create metadata hub widget for settings panel, adjust current hub and image scanner implementations, add test code.<br />
<br />
'''Difficulty:''' high<br />
<br />
'''Lead Mentor:''' Gilles Caulier <caulier dot gilles at gmail dot com><br />
<br />
==== Project: Add WebP and WebM support ====<br />
<br />
'''Brief explanation:''' WebP/WebM is new wavelets based image/video format from Google, based on RIFF/MKV container. This format become more popular on the Web and both can be used through an open-source library. We need to support these formats as editable in digiKam (WebP) and manageable by database mechanism through metadata (WebP and WebM).<br />
<br />
'''Dependencies:''' : digiKam core and libkexiv2 from "framework" branch (KF5), Exiv2 library<br />
<br />
'''Links:''' [http://en.wikipedia.org/wiki/WebM WebM format], [http://en.wikipedia.org/wiki/WebP WebP format]<br />
<br />
'''Knowledge Prerequisite:''' C/C++, Qt, Metadata<br />
<br />
'''Expected results:''' Patch Exiv2 library to support both formats in read/write meta-data mode and add optional WebP support in digiKam core to be able to edit images (read/write image contents in 16 bits color depth). Write test code to check new functionality in time.<br />
<br />
'''Difficulty:''' high<br />
<br />
'''Mentors:''' Gilles Caulier <caulier dot gilles at gmail dot com> + Someone from Exiv2 team<br />
<br />
==== Project: Factorize and port to KF5 all web service Import/Export KIPI tools ====<br />
<br />
'''Brief explanation:''' All tools dedicated to import or export items from KIPI host applications to web services as Flickr, GDrive, Dropbox, Facebook, Picasa, etc... need to be factored and ported to KF5/Qt5. Factorization include to make common widgets (settings, GUI layout, rules, etc), and background processing to prevents duplicate code. Also, in order to reduce KIPI host application time loading, the number of tools must be limited. Tools must be grouped by categories, as Social Networks, Cloud Service, Photo Hosting, etc...<br />
<br />
'''Dependencies:''' : digiKam KIPI interface, KIPI Plugins <br />
<br />
'''Bugzilla entries:''' [https://bugs.kde.org/show_bug.cgi?id=221704 221704]<br />
<br />
'''Knowledge Prerequisite:''' C/C++, Qt/KDE, GUI<br />
<br />
'''Expected results:''' KIPI web services tools ported to KF5 and running with digiKam 5.0.0.<br />
<br />
'''Difficulty:''' high<br />
<br />
'''Lead Mentor:''' Gilles Caulier <caulier dot gilles at gmail dot com><br />
<br />
===Marble===<br />
Marble is a virtual globe and world atlas — your swiss army knife for maps. Find your way and explore the world!<br />
<br />
* [http://marble.kde.org/ Marble project website]<br />
* [https://mail.kde.org/mailman/listinfo/marble-devel Mailinglist]<br />
* [http://webchat.freenode.net/?channels=marble #marble IRC channel on Freenode]<br />
<br />
==== Project: Starting to edit OpenStreetMap Data ====<br />
<br />
'''Brief explanation:''' During the last Google Summer of Code 2014 Cruceru Calin worked on an Edit mode for Marble. Right now it's possible to draw elementary shapes and features (Polygons/Polylines, Placemarks, GroundOverlays, etc.). These geometry primitives can be saved as KML files and there is some experimental OSM support already.<br />
This project will be about extending the current Edit Maps mode. Focus will be especially towards enabling advanced editing that allows for more sophisticated drawing capabilities but also for tagging and other features that are required for OSM support. A special focus might also be on refactoring the existing code base where it's useful.<br />
<br />
<br />
'''Expected results:''' Reliable and useful means to create and edit OSM files using Marble.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt,<br />
<br />
'''Mentors:''' Torsten Rahn, Cruceru Calin, Dennis Nienhüser<br />
<br />
==== Project: Turning Marble into a small GIS system ====<br />
<br />
'''Brief explanation:''' During the last Google Summer of Code 2014 Cruceru Calin worked on an Edit mode ("Annotation Plugin") for Marble. Right now it's possible to draw elementary shapes and features (Polygons/Polylines, Placemarks, GroundOverlays, etc.). These geometry primitives can be saved as KML files.<br />
During this project we'd like to extend the feature set towards classical requirements of a GIS system. Focus will be especially towards enabling advanced editing that allows for more sophisticated drawing capabilities but also for tagging and other features that are required for a GIS Editor. Depending on the experience of the student we might also focus on other topics like Data analysis or PostGIS support. <br />
<br />
'''Expected results:''' Adding capabilities to Marble that allow for using it for simple tasks that people would usually do using Quantum-GIS.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt<br />
<br />
'''Mentors:''' Torsten Rahn, Cruceru Calin, Dennis Nienhüser<br />
<br />
==== Project: Statistical Data Visualization and Extending Marble Game ====<br />
<br />
'''Brief explanation:''' During the last Google Summer of Code 2014 Abhinav Gangwar created the "Marble Game". This project is about extending Marble's library in a way so that it's easy to display statistical data on maps in a color coded way. The Marble Game should be further improved and it should be possible to make use of the Statistics feature.<br />
<br />
'''Expected results:''' Marble provides a tool that allows to visualize a ready-made dataset of statistical data in a color-coded way. The Marble Game should also be extended to make use of that feature. <br />
<br />
'''Knowledge Prerequisite:''' C++, Qt<br />
<br />
'''Mentors:''' Torsten Rahn, Abhinav Gangwar, Dennis Nienhüser<br />
<br />
=== KStars ===<br />
<br />
KStars is a very powerful tool for anyone interested in astronomy. It is part of the KDE Edu suite.<br />
<br />
==== Project: Ekos Scheduler ====<br />
<br />
'''Brief explanation:''' [http://www.indilib.org/about/ekos.html Ekos] is an advanced astrophotography tool for Linux. It utilizes [http://www.indilib.org INDI] for device control. With Ekos, the user can use the telescope, CCD, and other equipment to perform Astrophotography tasks. However, the user has to be present to configure the options and to command the actions to perform all the astrophotography related tasks, and hence a scheduler is required to automate observations to be constrained within certain limitations such as required minimum angular separation from the moon, whether conditions...etc. Furthermore, the observations should be triggered when certain conditions are met such as observation time, object's altitude...etc. The prospective student is expected to develop a ''Simple'' [http://indilib.org/forum/general/560-simple-ekos-schedular.html Ekos scheduler] to trigger observation runs when certain conditions are met and when the limitations are required.<br />
<br />
'''Expected results:''' Simple scheduler to automate astrophotography runs based on some conditions and within user-configurable limitations.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt, INDI<br />
<br />
'''Mentors:''' Jasem Mutlaq (IRC: knro)<br />
<br />
The student will need to:<br />
<br />
* Look at the relevant code, and propose a tractable plan for implementing some of the improvements within the GSoC timeframe.<br />
* Implement some of the improvements, producing production-ready code that can be included in the next release of KStars after GSoC 2015.<br />
<br />
==== Project: Constellation art ====<br />
<br />
'''Brief explanation:''' KStars currently draws constellation lines, names, and boundaries, but constellation art is missing. The student is expected to study KStars API and develop a new SkyComponent to superimpose the constellation artwork unto the sky map while re-working other components in KStars to support this. The structure must support multiple sky cultures. The artwork itself must be available under a permissible license. New constellation artwork should be available for download using the KNewStuff framework. The user should be able to select the sky culture.<br />
<br />
'''Expected results:''' High quality artwork for Western constellations in addition to one non-western constellation artwork that can be switched on/off in the sky map.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt<br />
<br />
'''Mentors:''' Jasem Mutlaq (IRC: knro)<br />
<br />
The student will need to:<br />
<br />
* Look at the relevant code, and propose a tractable plan for implementing some of the improvements within the GSoC timeframe.<br />
* Implement some of the improvements, producing production-ready code that can be included in the next release of KStars after GSoC 2015.<br />
<br />
==== Project: Fix our deep-sky data handling ====<br />
<br />
'''Brief explanation:''' Currently, KStars handles data from deep-sky object catalogues in an SQLite database. While this is working well, there are some more features we would like to have, and some that should be implemented in order to sanitize the deep-sky data handling, such as automatic cross-referencing of deep-sky objects across catalogs, organizing deep-sky data better in the database etc using Hierarchical Triangular Mesh, etc.<br />
<br />
More details here: http://techbase.kde.org/Projects/Edu/KStars/Better_deep-sky_handling<br />
<br />
'''Expected results:''' Some, or all of the improvements to deep-sky handling suggested above (or maybe even your own suggestions), implemented completely in solid, release-worthy code.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt, understanding of astronomical catalogues, some experience with data structures.<br />
<br />
'''Mentors:''' Rafal Kulaga (IRC: rkulaga)<br />
<br />
The student will need to:<br />
<br />
* Look at the relevant code, and propose a tractable plan for implementing some of the improvements within the GSoC timeframe.<br />
* Implement some of the improvements, producing production-ready code that can be included in the next release of KStars after GSoC 2015.<br />
<br />
PS: If all this looks daunting, that's because you have not (yet) talked to us. If you're really interested, get onto #kde-kstars and ping the mentors.<br />
<br />
==== Project: Propose your own project ====<br />
<br />
'''Brief explanation:''' If you have some interesting ideas about KStars that can be implemented within the GSoC timeframe, you are very welcome to propose them, because we seem to have run out of ideas.<br />
<br />
'''Mentors:''' Rafal Kulaga (IRC: rkulaga)<br />
<br />
=== KDE Edu ===<br />
<br />
==== Project: Integrate Cantor into LabPlot====<br />
[http://labplot.sourceforge.net/ LabPlot] is a KDE-application for interactive graphing and analysis of scientific data.<br />
<br />
'''Brief explanation:''' The integration is twofold:<br />
<br />
# currently, for the created plots LabPlot uses either the data provided by hand in a spreadseet or by using data imported from external ascii-files. By having Cantor within LabPlot it should be possible to access the data sets created in a computer algebra session (say Maxima) provided by Cantor. Cantor's session have to be integrated into LabPlot's model-view framework and have to be put onto the same foot as all the other objects managable in LabPlot (spreadsheet, worksheets etc.).<br />
# By calling a CAS-specific command for creating a 2D-plot in Cantor, Cantor creates an external process that renders the plot and embeds the result as a pixmap. Instead of such a static pixmap, LabPlot's plots should be embeded. This would provide high degree of control of the plot appearance as provided by LabPlot.<br />
<br />
'''Mentor:''' Alexander Semke<br />
<br />
==== Project: Integrate [http://en.wikipedia.org/wiki/VTK VTK] into LabPlot, investigate [http://en.wikipedia.org/wiki/Tulip_(software) Tulip] ====<br />
[http://labplot.sourceforge.net/ LabPlot] is a KDE-application for interactive graphing and analysis of scientific data.<br />
<br />
'''Brief explanation:'''<br />
# LabPlot lacks 3D-functionality. In the old KDE3-based LabPlot qwt3D was used for this that is not an option anymore. The task consists of the integration of [http://en.wikipedia.org/wiki/VTK VTK] -libs. Also, the relevant widgets for 3D-plot editting should be created in a manner similar for all the other objects available in LabPlot now.<br />
# Investigate whether it's reasonable to use LabPlot as a frontend (or to extend it to be a frontend) to the functionality provided by [http://en.wikipedia.org/wiki/Tulip_(software) Tulip] yes, how?<br />
<br />
'''Mentor:''' Alexander Semke<br />
<br />
==== Project: Port of GCompris in Qt Quick====<br />
<br />
[http://gcompris.net GCompris] is a an educational software suite comprising of numerous activities for children aged 2 to 10. Originaly written in Gtk+ it's development team decided to rewrite it from scratch in [http://qt-project.org/doc/qt-5/gettingstartedqml.html Qt Quick]. It has also been decided that this version will be integrated in KDE which is the reason of the project being here.<br />
<br />
'''Goals:''' <br />
# Porting several GCompris activities in Qt Quick. There is a page that tracks the [http://gcompris.net/wiki/Qt_Quick_Migration_status porting effort] that will help you select the activity set you are interested in.<br />
# Creating new activities. There is a [http://gcompris.net/wiki/Ideas_for_activities list of ideas] of activities that have been identified as something we would like to have. You can also propose original ideas not on the list.<br />
<br />
'''Knowledge Prerequisite:''' By the start of GSoC you should<br />
# Be interested in children education<br />
# Be familiar with GCompris concept and content<br />
# Basic knowledge in a programming language (a 1 year school course is enough)<br />
# Be able to build the Qt Quick version of GCompris<br />
<br />
'''Application guide:'''<br />
# Writing or porting an activity takes about the same time. The advantage of the porting is that the tuning, the graphishm and the sounds are already available. You can count 2 weeks of development for an activity.<br />
# To keep the work interesting it is recommended to propose a mix of porting some activities and creating new one, either from the idea list or from an original idea you come with.<br />
# You have to follow the [http://gcompris.net/wiki/An_exercise_for_new_contributors instructions here] and provide your exercise as a pull request.<br />
<br />
'''Mentor:''' Bruno Coudoin (IRC: bdoin #gcompris on freenode)<br />
<br />
=== Keyboard Layouts ===<br />
<br />
Keyboard layouts in KDE allow user to use multiple keyboard layouts and switch between them. It consists of keyboard configuration module (in System Settings), keyboard layout widget/applet, and keyboard layout daemon.<br />
<br />
==== Project: Integrating Input Methods with keyboard layout configuration ====<br />
<br />
'''Brief explanation:''' Input method and keyboard layout configuration are serving the same purpose - to allow users to type text in non-default language. Currently KDE has integrated system to configure keyboard layouts but IM need to be configured somewhere else. Also when IM is configured it takes over some functions of keyboard layout configuration. So it would be nice if we could have IM and keyboard layout configuration in one place.<br />
It seems that IBus has already gained community acceptance so this will be the target for integration into KDE keyboard module.<br />
<br />
'''Expected results:''' Keyboard configuration module in System settings will include IM configuration and it will be integrated with existing keyboard layout options.<br />
<br />
'''Knowledge Prerequisite:''' good knowledge of C++, development experience with Qt and KDE, understanding of Input Methods (IBus)<br />
<br />
=== KDevelop ===<br />
<br />
==== Project: Clang Integration ====<br />
<br />
'''Brief explanation:''' Finish the kdev-clang plugin to make it a usable replacement for the existing C++ plugin.<br />
<br />
'''Expected results:''' Find the still missing features from the KDevelop4's C++ support and port them over to kdev-clang, so it can become the mainstream C/C++ Solution<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt. Knowledge about Clang is helpful<br />
<br />
'''Mentor:''' Kevin Funk<br />
<br />
==== Project: Checker Framework ====<br />
<br />
'''Brief explanation:''' A generic framework should be created which provides the foundation for other plugins to report errors. <br />
<br />
'''Expected results:''' Right now we have the problems toolview but it is tightly coupled to the DUChain. This should be changed to use a separate item repository which stores the problems for a given path. The data stored would be: Path and range of where the issue is found, a short error message and optionally a long description. Furthermore, plugins might want to store additional info from which the problem could be fixed (compare to the 'add include path' or similar wizards we have already in the language framework).<br />
<br />
This framework should then be used to integrate various tools.<br />
<br />
First of all the existing language plugins should show the problems they find there.<br />
The existing playground plugins for krazy and cppcheck integration should reuse that framework<br />
any other linters could be integrated, such as jslint, pylint, clang-check, etc. pp.<br />
runtime checkers could be integrated, such as valgrind's memcheck, ptrcheck, helgrind, drd, ...<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt. Knowledge of debugging tools is helpful.<br />
<br />
'''Mentor:''' Milian Wolff<br />
<br />
==== Project: SVN Plugin Rewrite ====<br />
<br />
'''Brief explanation:''' Rewrite the SVN plugin to use the C-API directly.<br />
<br />
'''Expected results:''' The existing SVN plugin uses an outdated kdevsvncpp checkout internally which causes troubles, warnings and licensing issues. Port the plugin to either the C-API of svn or alternatively try to reuse code from current kdevsvn. The result should be a tested, working plugin for SVN integration without licensing issues nor compile time warnings about usage of deprecated API.<br />
<br />
'''Knowledge Prerequisite:''' C, C++, Qt, SVN<br />
<br />
'''Mentor:''' Milian Wolff<br />
<br />
==== Project: LLDB Support ====<br />
<br />
'''Brief explanation:''' Write a new plugin to support LLDB on KDevelop<br />
<br />
'''Expected results:''' Come up with a new kdevelop plugin so that LLDB can be used as a debugging solution, especially on Mac OS X and Windows, where gdb support is rather scarce.<br />
<br />
'''Knowledge Prerequisite:''' C, C++, Qt, debugging intrinsic problems<br />
<br />
'''Mentor:''' KDevelop team<br />
<br />
=== KDE PIM ===<br />
<br />
The KDE PIM community work on a set of libraries and applications for Personal Information Management, including email, calendaring, contacts, and feed aggregation.<br />
<br />
==== Project: OpenHolidays ====<br />
<br />
'''Brief explanation:''' The KHolidays library provides KDE applications with information on public holidays around the world, however the file format is very hard to use and maintain and the library features are very limited and restricted to Qt users. The goal of the OpenHolidays project is to develop a new open standard and data repository that can be used by any project that needs the data. See http://community.kde.org/KDE_PIM/KHolidays for more details.<br />
<br />
'''Expected results:''' Define the new JSON file format and port the existing data files to the new format. Develop a shared Qt-only library to parse the holiday files and provide access to them with a iCal style event-based api. Implement an Akonadi resource to access the data. Extended goals: Develop a JavaScript library to use the files. Develop a web site and web service at openholidays.org to provide online access to the data files.<br />
<br />
'''Knowledge Prerequisite:''' C++ and Qt for core goals, JavaScript and web services for extended goals.<br />
<br />
'''Mentor:''' John Layt and other KDE PIM community members.<br />
<br />
==== Project: QtQuick ToDo API / Plasmoid====<br />
<br />
'''Brief explanation:''' KDE PIM wants to make it's data accessible for applications which use QML to declare their user interfaces, e.g. applications using QtQuick. For that they need data handling objects that are accessible through QML, e.g. item models that have a mapping of string based role names to enum value based roles in C++, etc.<br />
<br />
'''Expected results:''' Define and implement a general QML API for accessing and creating Akonadis ToDo data. Write / Port a ToDo Plasmoid for Plasma Desktop or Plasma Active to show off the new API. Bonus: Port Kontact Touch Task to the new API instead of, or in addition to the Plasmoid.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt, QtQuick<br />
<br />
'''Possible Mentors:''' Kevin Krammer, and other KDE PIM community members<br />
<br />
=== Simon ===<br />
Simon is a speech recognition suite.<br />
<br />
[http://simon.kde.org Website] - [https://mail.kde.org/mailman/listinfo/kde-speech Mailing list] - IRC channel: #kde-speech on Freenode.<br />
<br />
==== Project: Streamline handling of various resources ====<br />
<br />
'''Brief explanation:''' Simon uses a multitude of different components: Scenarios, Base models, Shadow vocabulary, Language profiles, etc.<br />
<br />
While many of these components can be downloaded from within Simon, some can't and even for those that are better integrated, end-users still have to read additional documentation to know which components work together and which don't.<br />
<br />
The aim of this project is to bring the handling of these resources under a uniform and user-friendly interface.<br />
Specifically, the interface should resolve conflicts automatically and deduce an optimal default setup by itself (e.g. based on the system language and installed programs).<br />
<br />
'''Expected results:''' Much more user friendly setup.<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt<br />
<br />
'''Mentor:''' Peter Grasch <peter {+at+} grasch.net><br />
<br />
'''Resources:''' Some work (mostly brainstorming and UI design) was already conducted during Season of KDE 2013. Please contact me for details. This does not mean that this project is already assigned!<br />
<br />
=== Okular ===<br />
<br />
Okular is a Document Viewer. <br />
<br />
* [http://okular.kde.org Okular project web site]<br />
* [https://mail.kde.org/mailman/listinfo/okular-devel Mailinglist]<br />
* [http://webchat.freenode.net/?channels=okular #okular IRC channel on Freenode]<br />
<br />
==== Project: Better Accessibility for Okular ====<br />
'''Brief explanation:''' We should implement Qt accessibility APIs to make Okular usable by more users. This would allow blind people to read documents.<br />
<br />
'''Expected results:''' You should be able to "read" Okular documents using Orca or other "screen reading" software. As long as the document exposes the contents in text form, we can let assistive technology pick it up and present it to the user in a different way (for example non-textual). An important goal is to transfer as much of the structure of the document as possible, so that ideally the sematics (this is a heading, here is normal text, page number) are preserved. Finding well working PDF solutions is still a challenge for blind people on any operating system. For now the focus will be on Orca since it's the best working screen reader on Linux used by most blind users.<br />
<br />
'''Knowledge Prerequisite:''' C++<br />
<br />
'''Mentor:''' Albert, Frederik helping out with the accessibility parts<br />
<br />
==== Project: Implement PDF Poppler features ====<br />
'''Brief explanation:''' Poppler has some support for features we don't support, implement them<br />
<br />
'''Expected results:''' Poppler has support for pdf layer views, tagged pdf support, linearized pdf support yet we in Okular don't offer that features to our users. The result from this project is having those exposed to the final users<br />
<br />
'''Knowledge Prerequisite:''' C++<br />
<br />
'''Mentor:''' Albert<br />
<br />
==== Project: Implement SecurityHandler V6 in Poppler ====<br />
'''Brief explanation:''' Poppler needs to support SecurityHandler V6 to be able to open some pdf files<br />
<br />
'''Expected results:''' Poppler (and hence Okular) can open files with SecurityHandler V6 like the ones in https://bugs.freedesktop.org/show_bug.cgi?id=85368 and https://bugs.freedesktop.org/show_bug.cgi?id=88151<br />
<br />
'''Knowledge Prerequisite:''' C++<br />
<br />
'''Mentor:''' Albert<br />
<br />
=== KDE Connect ===<br />
==== Project: Improve KDE Connect encryption ====<br />
'''Brief explanation:''' We want to implement a better encrypted protocol for KDE Connect, as discussed here: http://albertvaka.wordpress.com/2013/09/19/how-kde-connect-encryption-works/ I would like to see a solid and peer-reviewed design before accepting this project.<br />
<br />
'''Expected results:''' Have a secure encryption algorithm implemented in both KDE (C++/Qt) and Android (Java) clients.<br />
<br />
'''Knowledge Prerequisite:''' Deep knowledge about encryption and security.<br />
<br />
'''Mentor:''' Albert Vaca <albertvaka {+at+} gmail.com><br />
<br />
'''Resources:''' kdeconnect<br />
<br />
==== Project: Build a Qt-only multiplatform KDEConnect client ====<br />
'''Brief explanation:''' We want to implement a cross platform client written in Qt that can run in virtually any platform supported by Qt (Windows Phone, Jolla, iOS, OSX, etc.) using the QPA (Qt Platform Abstraction) and QML. It will be challenging because Qt5 for phones is still quite new and implementing some features might not be possible yet, but it will be worth it to investigate what is possible and what not, and even contribute patches to Qt for some aspects. A lot of the core classes used in KDE Connect for Plasma could be reused and shared because they are mostly Qt (and would be part of the GSOC to make sure they end only using Qt, so we can get to re-use them). Not every feature is going to be available to every platform, and some plugins will be platform-specific, but as part of this GSOC project I would love to see it running as good as possible in one of the platforms already mentioned, and with basic functionallity in a couple more. (That is: center it around a platform and make it work well there, writting platform-specific plugins and code if needed, but making sure it still compiles and runs in other platforms).<br />
<br />
'''Knowledge Prerequisite:''' Qt5 and building cross-platform code.<br />
<br />
'''Mentor:''' Albert Vaca <albertvaka {+at+} gmail.com><br />
<br />
'''Resources:''' kdeconnect<br />
=== Solid ===<br />
==== Project: Improve sharing experience ====<br />
'''Brief explanation:''' Improve the content sharing experience in Plasma by extending and improving Samba share, implementing other ways of sharing and write new ways of discovering other people's shares.<br />
<br />
'''Expected results:''' It should be possible to discover "shares" using dolphin (possibly via a new kioslave?) and it should be possible to share a folder between two Plasma computers really fast and easy (possibly implementing an http server plus discovery via avahi).<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt, extra points for KIO experience.<br />
<br />
'''Mentor:''' Àlex Fiestas <afiestas {+at+} kde.org><br />
<br />
'''Resources:''' avahi, http, kdenetwork-fileshare<br />
<br />
=== Muon ===<br />
==== Project: Better support for your distribution ====<br />
<br />
'''Brief explanation:''' Muon needs to be ensured to work perfectly on any distribution, this project should target one of the (major) distributions, enumerate the problems to solve and propose solutions.<br />
<br />
'''Expected results:''' Muon users of your distribution will be happy ever-after.<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt, the technology required for the platform<br />
<br />
'''Mentor:''' Aleix Pol<br />
<br />
<br />
=== KWin ===<br />
==== Project: DRM/KMS backend for kwin_wayland ====<br />
<br />
'''Brief explanation:'''<br />
KWin_wayland currently only supports rendering to another Wayland server. In future it should be possible to go down to the hardware directly. For this a DRM/KMS rendering backend is required. This requires that a new backend is implemented for the OpenGL compositor and maybe the QPainter compositor. As KWin needs to handle kernel mode settings in this mode the output information need to be queried from the hardware and an implementation for KWin::Screens needs to be provided and from there propagated to the Wayland clients. In addition if the time of the project permits it an interface should be exposed for KScreen to configure the outputs.<br />
<br />
'''Expected results:''' KWin_wayland can render to DRM/KMS and fetches output information from the hardware<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt, Wayland, KMS and C knowlege are from advantage<br />
<br />
'''Mentor:''' Martin Gräßlin <mgraesslin@kde.org><br />
<br />
===Trojitá===<br />
<br />
[http://trojita.flaska.net/ Trojitá] is a fast IMAP e-mail client. Since late 2012, it is a part of KDE's extragear. The project focuses on delivering a usable, fast, standards-compliant, cross-platform and reliable e-mail client which can scale from cell phones to huge e-mail archives without annoying slowdowns.<br />
<br />
==== Project: Port to BlackBerry OS 10 ====<br />
<br />
'''Brief explanation:'''<br />
This work involves improving the separation of business logic from the UI concerns, an effort started and well-underway due to the Ubuntu Touch project, and adding a new GUI wirrten in QML for BlackBerry OS 10.<br />
<br />
'''Expected results:''' Trojitá running on BlackBerry Z10 with basic features, including reading and writing e-mails<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt, QML<br />
<br />
'''Mentor:''' Jan Kundrát <jkt@kde.org><br />
<br />
=== Gluon ===<br />
[http://gamingfreedom.org Gluon] is a project to build a Qt and KDE based game engine and game development tool. The engine is designed to support both mobile and desktop game development. We have ported the engine to Qt5 last year and are currently working on releasing a first Qt5 based version.<br />
<br />
==== Project: Build a QtQml based script system ====<br />
'''Brief explanation:''' In Qt4 QtScript was the solution to scripting support for applications. With the port to Qt5 the new QtQml module was introduced, including a new scripting system, but QtScript was still available. With Qt5.5 QtScript is planned to be deprecated and completely removed in Qt5.6. This means that our scripting system, which is currently built on QtScript, needs to be ported to QtQml.<br />
<br />
'''Expected results:''' A scripting system that can be used to write scripts for games.<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt at least. Experience with QtQuick/QML is a strong advantage.<br />
<br />
'''Mentor:''' Arjen Hiemstra<br />
<br />
==== Project: Expand Gluon Input ====<br />
'''Brief explanation:''' During the port to Qt5 we also overhauled the input system in Gluon to be more capable. However, we kept the implementation rather limited since we also had other elements to work on. This project would expand GluonInput with support for additional devices and platforms.<br />
<br />
'''Expected results:''' Additional platform and device plugins for GluonInput.<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt at least. Experience with platform-specific input libraries like XInput2 for Xorg is an advantage.<br />
<br />
'''Mentor:''' Arjen Hiemstra<br />
<br />
[[Category:Mentoring]]<br />
<br />
=== Krita ===<br />
[http://www.krita.org Krita] is an advanced 2D painting application. It support creating images from scratch from begin to end. Krita is a complex application and developers need to have a fair amount of experience in order to be able to do something.<br />
<br />
==== Project: Integrate Animation in Krita's core ====<br />
'''Brief explanation:''' We have gone through three iterations of animation support code in Krita. With this experience, it's become clear that we need to work the support for animatins right into Krita's core engine. This project comprises partly that, and partly updating the existing animation gui that was created in 2014.<br />
<br />
'''Expected results:''' by the end of the summer, the animation support in Krita should be ready for end-users to create 2D animations with, whether for game sprites or short cartoons. <br />
<br />
'''Knowledge Prerequisite:''' C++/Qt at least.<br />
<br />
'''Mentor:''' Boudewijn Rempt<br />
<br />
==== Project: Add Python Scripting to Krita ====<br />
'''Brief explanation:''' Krita has had two attempts at scripting support: through kjs and through kross. Neither was good enough. The VFXindustry standard for scripting is Python, and the goal of project is to integrate Python and PyQt directly into Krita.<br />
<br />
'''Expected results:''' by the end of the summer, users should be able to automate repetitive tasks, file import and export and add gui elements such as dockers, all written in PyQt.<br />
<br />
'''Knowledge Prerequisite:''' Deep knowledge of Python, SIP, C++ and Qt.<br />
<br />
'''Mentor:''' Boudewijn Rempt<br />
<br />
==== Project: Improve Normal Mapping Workflow ====<br />
'''Brief explanation:''' Normal maps are textures that describe surface detail on a 3d model by describing how much each pixel deviates from the surface the texture is put on. A normal map gives the ability to tell the renderer there's a different normal per texel(texture pixel), this way, you can describe subtle differences in surface without requiring the polygons for it. It does so by describing the normal angle to the surface by using the R, G and B channels. Now, normal maps, due to them being quite mathematical, are usually baked. But these bakes are not always perfect. furthermore, there's a lot of interest into handpainting textures, amongst which normal maps.<br />
<br />
'''Expected results:''' by the end of the summer, a new brush engine, which takes the tilt-direction and has that control the redness and greenness. And then takes the tilt-elevation, and has that control the blueness.<br />
<br />
'''Knowledge Prerequisite:''' knowledge of C++, Qt. and mathematics<br />
<br />
'''Mentor:''' Boudewijn Rempt<br />
<br />
===Calligra===<br />
==== Project: Variable thickness lines ====<br />
<br />
'''Brief explanation:''' One of the most fundamental basics of drawing is varying the width of your lines to show shape, form and perspective. Almost every line tapers at either end, and often gets thicker and thinner in different places as needed. For purely technical and histrorical reasons though, every vector program (Illustrator, Inkscape, Karbon etc) make curves all one hard width. <br />
This proposal is to create a variable width path shape / tool, much like the path tool, would allow drawing curves, but where each node could have its width set so that the line width changed smoothly from node to node. <br />
As a plugin for the Calligra suite, this would clearly benefit apps as Karbon and also Krita.<br />
<br />
'''Expected results:''' variable width path tool is able to change the width of any path node to an arbitary percentage (say 155%) of the stroke width. See http://bugsfiles.kde.org/attachment.cgi?id=56995 for mockup. The shape needs to be able to save and load in svg/odf.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt, SVG<br />
<br />
'''Mentor:''' Thorsten Zachmann < zachmann @ kde dot org ><br />
<br />
=== KIOSK ===<br />
==== Project: KIOSK Tool ====<br />
<br />
'''Brief explanation:''' Back in KDE 3 there was a tool to help administrators to configure the KDE Kiosk framework. The idea of this project is to start working on a new tool. The new application should be developed in close collaboration with the Visual Design Group to get a useful application for the targeted audience.<br />
<br />
'''Expected results:''' a functional prototype for a new Kiosk tool with a working backend to configure and restrict actions and configuration options.<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt<br />
<br />
'''Mentor:''' Martin Gräßlin <mgraesslin@kde.org><br />
<br />
=== Kubuntu ===<br />
==== Project: Port Ubiquity to Qt 5 ====<br />
<br />
'''Brief explanation:''' Ubiquity is the installer for Kubuntu. It should be ported to Qt 5. It is written in Python and can be fiddly to test because much of the development needs to be done on a live system. Once the Qt 5 port is complete there are numerous other bugs that can be fixed. Drop into #kubuntu-devel to say hi. Code is in launchpad.net/ubiquity.<br />
<br />
'''Expected results:''' Ubiquity bug free and running with Qt 5<br />
<br />
'''Knowledge Prerequisite:''' Python, PyQt<br />
<br />
'''Mentor:''' Jonathan Riddell<br />
<br />
<br />
=== Calamares ===<br />
<br />
[http://calamares.io/about/ Calamares] is a distribution-independent installer framework ([https://github.com/calamares/calamares/ code]). Calamares is participating to Google Summer of Code with KDE as umbrella organization. We are a young project, we are developing quickly, we are working with state of the art technologies (C++11, Qt 5, KDE Frameworks 5, Boost.Python) and we are solving exciting problems.<br />
<br />
Calamares is already shipped or is about to be shipped as the default system installer for several Linux distributions, including KaOS, BBQLinux, Fedora KDE, Manjaro, Netrunner Rolling, OpenMandriva, Tanglu, and others.<br />
<br />
See [http://teom.org/blog/kde/how-to-write-a-kick-ass-proposal-for-google-summer-of-code/ this post] for instructions on how to structure your Google Summer of Code proposal for Calamares.<br />
<br />
==== Project: Python interface refactor + Python view modules ====<br />
<br />
'''Brief explanation:''' Calamares is just a job executor at its core, and Calamares jobs are provided by Calamares modules. Installer pages are also provided by Calamares modules. These modules can currently be written in C++11 (as Qt plugins) or Python. The Python interface *works*, but it is slightly different from the C++ one, and it only supports jobs, not installer pages.<br />
This Google Summer of Code project is one of several that start with the same initial subtask, and then branch out in different directions.<br />
<br />
0) Refactor the Python interface so that writing a job module is not just implementing a function that expects globals, but rather inheriting from Calamares::Job or a wrapper thereof. Port all the Python modules to this updated interface. PythonQt 3.0 has just been released with support for Qt 5, so this is an option too, as a replacement for Boost.Python.<br />
<br />
1) Further improve the Python interface to allow writing view modules (i.e. installer pages) in Python. The student should do some research on the strengths and weaknesses of different approaches and produce a detailed action plan on what to wrap, how to wrap it, and which technologies to use to achieve said goals.<br />
<br />
Once both subtasks are complete there are various related tasks to be done. Drop into #calamares to say hi and discuss your proposal.<br />
<br />
'''Expected results:''' Equivalence between the Python and C++ module interfaces, for both job modules and view modules.<br />
<br />
'''Knowledge Prerequisite:''' At least some C++ experience is required; experience with CMake, Python, Boost.Python and other language binding solutions (PyQt, SWIG...) is a plus.<br />
<br />
'''Mentor:''' Teo Mrnjavac <teo@kde.org>, teo- on Freenode<br />
<br />
==== Project: Python interface refactor + Ruby modules interface ====<br />
<br />
'''Brief explanation:''' Calamares is just a job executor at its core, and Calamares jobs are provided by Calamares modules. Installer pages are also provided by Calamares modules. These modules can currently be written in C++11 (as Qt plugins) or Python. The Python interface *works*, but it is slightly different from the C++ one, and it only supports jobs, not installer pages.<br />
This Google Summer of Code project is one of several that start with the same initial subtask, and then branch out in different directions.<br />
<br />
0) Refactor the Python interface so that writing a job module is not just implementing a function that expects globals, but rather inheriting from Calamares::Job or a wrapper thereof. Port all the Python modules to this updated interface. PythonQt 3.0 has just been released with support for Qt 5, so this is an option too, as a replacement for Boost.Python.<br />
<br />
1) After completing subtask 0 for Python modules, achieve the same level of support for Ruby. The student should research technologies such as SWIG, RubyInline, FFI and Rice and produce a detailed action plan on how to deliver a Ruby interface for Calamares job modules. The latter (Rice) seems to be the most promising for the kind of embedding we need and most similar to Boost.Python, but this must be further ascertained. Packaging and deployment should also be taken into account.<br />
<br />
Once both subtasks are complete there are various related tasks to be done. Drop into #calamares to say hi and discuss your proposal.<br />
<br />
'''Expected results:''' Equivalence between the Python, Ruby and C++ job module interfaces.<br />
<br />
'''Knowledge Prerequisite:''' At least some C++ experience is required; experience with CMake, Ruby, Python, Boost.Python and other language binding solutions (PyQt, SWIG...) is a plus.<br />
<br />
'''Mentor:''' Teo Mrnjavac <teo@kde.org>, teo- on Freenode; Rohan Garg <rohan@kde.org>, shadeslayer on Freenode<br />
<br />
==== Project: Python interface refactor + Python testing mechanism ====<br />
<br />
'''Brief explanation:''' Calamares is just a job executor at its core, and Calamares jobs are provided by Calamares modules. Installer pages are also provided by Calamares modules. These modules can currently be written in C++11 (as Qt plugins) or Python. The Python interface *works*, but it is slightly different from the C++ one, and it only supports jobs, not installer pages.<br />
This Google Summer of Code project is one of several that start with the same initial subtask, and then branch out in different directions.<br />
<br />
0) Refactor the Python interface so that writing a job module is not just implementing a function that expects globals, but rather inheriting from Calamares::Job or a wrapper thereof. Port all the Python modules to this updated interface. PythonQt 3.0 has just been released with support for Qt 5, so this is an option too, as a replacement for Boost.Python.<br />
<br />
1) Our Python testing facilities are currently limited to a single script (src/modules/testmodule.py). The student should present an action plan for a more comprehensive testing mechanism, which may or may not be based on testmodule.py, and may or may not involve libcalamares instead. This testing mechanism could further be integrated with our [http://calamares.io/ci/ Jenkins continuous integration system].<br />
<br />
Once both subtasks are complete there are various related tasks to be done. Drop into #calamares to say hi and discuss your proposal.<br />
<br />
'''Expected results:''' Equivalence between the Python and C++ job module interfaces, and a comprehensive testing mechanism for Python job modules.<br />
<br />
'''Knowledge Prerequisite:''' At least some C++ and Python experience is required; experience with CMake, Boost.Python and software testing is a plus.<br />
<br />
'''Mentor:''' Teo Mrnjavac <teo@kde.org>, teo- on Freenode<br />
<br />
==== Project: Debian installer support ====<br />
<br />
'''Brief explanation:''' Calamares is just a job executor at its core, and Calamares jobs are provided by Calamares modules. Some of these modules are common for most Linux distributions, and some might be heavily distribution-specific.<br />
<br />
Calamares is already capable of installing a Debian-based system, simply by unpacking a squashfs image like most other distributions, but this is less than ideal: Debian already provides a sophisticated install system (debian-installer), and Calamares should take advantage of it.<br />
<br />
The student should propose a detailed action plan, with the ultimate deliverable being one or more job modules that implement a system install procedure based on debian-installer. Additional changes to the user interface (view modules) may or may not be needed for this, depending on the feature set proposed by the student. From a top-down point of view, Calamares should behave like a debian-installer frontend, not unlike Ubiquity, but without compromising its distribution-agnostic design.<br />
<br />
Once all the milestones have been achieved there are various related tasks to be done and bugs to be fixed. Drop into #calamares to say hi and discuss your proposal.<br />
<br />
'''Expected results:''' Calamares should be able to install a Debian based system using debian-installer as backend.<br />
<br />
'''Knowledge Prerequisite:''' The student should have experience with a Debian based distribution and C++; experience with Python, debian-installer and Debian packaging is a plus.<br />
<br />
'''Mentors:''' Rohan Garg <rohan@kde.org>, shadeslayer on Freenode; Teo Mrnjavac <teo@kde.org>, teo- on Freenode<br />
<br />
==== Project: The Ultimate Calamares user experience ====<br />
<br />
'''Brief explanation:''' Design and development of Calamares started in June 2014, with deliverables as early as Fall 2014, so some hard choices had to be made in order to ship quickly. While Calamares doesn't look intensely unpleasant when compared to some other system installers, it is not a triumph of user experience design either.<br />
<br />
The KDE Visual Design Group has already produced [https://community.kde.org/KDE_Visual_Design_Group/Calamares_Design_Project a design for Calamares] in agreement with the Calamares team. It is now time to implement this design.<br />
<br />
The student should propose a detailed action plan, with the ultimate deliverable being a complete visual overhaul of Calamares, including libcalamaresui and essential view modules. Intermediate deliverables must be listed in the proposal, with as much granularity as possible. The implementation should not deviate from the KDE VDG's design unless otherwise discussed, and during the coding season the student is expected to closely cooperate with both the Calamares team and the KDE VDG.<br />
<br />
Once all the milestones have been achieved there are various related tasks to be done and bugs to be fixed. Drop into #calamares to say hi and discuss your proposal.<br />
<br />
'''Attention''': This is a '''very challenging''' task, somewhat more demanding than the other ones we offer, and suitable for more experienced students. First time students are encouraged to consider our Python, Ruby or Debian tasks too. Exceptionally for this project we are requiring a '''qualification task''' to be completed by the prospective student. This qualification task should be delivered as a patch against master and sent to the mentor (Teo Mrnjavac <teo@kde.org>) ''before'' submitting a proposal for this project idea through the Google Summer of Code web application. Applicants that have not submitted a qualification task for this project will not be considered. The qualification task is defined as follows: '''implement the KDE VDG's design for the Users page (the Calamares module "users")'''. The webcam picture feature does not have to be implemented, but the avatar chooser is required. See [https://dl.dropboxusercontent.com/u/6631774/CalaUsersPageDesign.png this mockup].<br />
<br />
'''Expected results:''' Calamares should look and feel as designed by the KDE Visual Design Group.<br />
<br />
'''Knowledge Prerequisite:''' The student should have experience with Qt and C++; QML experience is a big plus.<br />
<br />
'''Mentors:''' Teo Mrnjavac <teo@kde.org>, teo- on Freenode<br />
<br />
=== Kopete ===<br />
<br />
[https://kopete.kde.org Kopete] is an instant messenger supporting AIM, Bonjour, Gadu-Gadu, GroupWise, ICQ, Jabber (XMPP, Google Talk, Facebook, ...), Meanwhile, QQ, Skype, Windows Live Messenger, WinPopup, Yahoo and more. It is designed to be a flexible and extensible multi-protocol system suitable for personal and enterprise use.<br />
<br />
==== Project: Better history plugin ====<br />
<br />
'''Brief explanation:''' History plugin is responsible for archiving chat history and also searching for old chat messages in archive. Currently Kopete has two history plugins: one which stores data to XML files and another one which stores data to SQLite database. Both plugins have some diffetent limitations like slow speed, bad search support, bad support for HTML messages, bad support for multiuser chat... This project aims to fix existing history plugin(s) or designing & implementing new one.<br />
<br />
'''Expected results:''' Working fast chat history plugin with support for handling HTML messages, multichat messages, ability to search for messages in history, import/export feature (importing from services like googletalk/facebook can be great too), ...<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt, XML or SQLite (or any other data storage usefull for chat messages)<br />
<br />
'''Mentor:''' Pali Rohár <pali.rohar@gmail.com>, Pali on #kopete<br />
<br />
'''Co-Mentor:''' Kaushik Saurabh <roideuniverse@gmail.com>, roide on #kopete<br />
<br />
'''Mailing list:''' kopete-devel@kde.org (archive at: [http://lists.kde.org/?l=kopete-devel&r=1&w=2 lists.kde.org])<br />
<br />
==== Project: Jabber message archive ====<br />
<br />
'''Brief explanation:''' When you use more jabber clients and you want to have full chat history in all clients, you need to synchronize message history between all clients. To make it easier for different jabber clients, there is jabber protocol extension for storing history directly on jabber servers which allows clients to download (missing) messages:<br />
<br />
XEP-0136: Message Archiving<br />
<br />
XEP-0313: Message Archive Management<br />
<br />
'''Expected results:''' Working support for XEP-0136 or XEP-0313<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt, Jabber protocol<br />
<br />
'''Mentor:''' Pali Rohár <pali.rohar@gmail.com>, Pali on #kopete<br />
<br />
'''Mailing list:''' kopete-devel@kde.org (archive at: [http://lists.kde.org/?l=kopete-devel&r=1&w=2 lists.kde.org])<br />
<br />
==== Project: PGP plugin ====<br />
<br />
'''Brief explanation:''' Kopete has plugin which can sign or encrypt outgoing messages using GPG. It can also verify signature and decrypt incoming messages. This plugin is old, uses private kdepim library and needs fixing. It is hard to compile and use it. For this project I would except fixing this plugin to work again or writing new PGP plugin from scratch.<br />
<br />
'''Expected results:''' Working support for PGP in Kopete<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt, GPG<br />
<br />
'''Mentor:''' Pali Rohár <pali.rohar@gmail.com>, Pali on #kopete<br />
<br />
'''Mailing list:''' kopete-devel@kde.org (archive at: [http://lists.kde.org/?l=kopete-devel&r=1&w=2 lists.kde.org])<br />
<br />
==== Project: IRC protocol ====<br />
<br />
'''Brief explanation:''' Kopete KDE3 version had plugin for IRC protocol. Porting that IRC plugin to new KDE versions was never finished and Kopete does not have working support for IRC yet.<br />
<br />
'''Expected results:''' Restore IRC protocol into Kopete<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt, IRC protocol<br />
<br />
'''Mentor:''' Pali Rohár <pali.rohar@gmail.com>, Pali on #kopete<br />
<br />
'''Mailing list:''' kopete-devel@kde.org (archive at: [http://lists.kde.org/?l=kopete-devel&r=1&w=2 lists.kde.org])</div>Shantanu Tusharhttps://community.kde.org/index.php?title=GSoC/2015/Ideas&diff=41858GSoC/2015/Ideas2015-03-13T18:12:24Z<p>Shantanu Tushar: /* Project: Intelligent TV Series/Movies grouping for Plasma Media Center */</p>
<hr />
<div>[[File:GoogleSummer 2015logo.jpg |200px|thumb|right|GSoC 2015 logo]]<br />
See also: [[../../|GSoc Instructions]], [[../../2014/Ideas|Last year ideas]]<br />
<br />
== Guidelines ==<br />
<br />
=== Information for Students ===<br />
<br />
These ideas were contributed by our developers and users. They are sometimes vague or incomplete. If you wish to submit a proposal based on these ideas, you may wish to contact the developers and find out more about the particular suggestion you're looking at.<br />
<br />
Being accepted as a Google Summer of Code student is quite competitive. Accepted students typically have thoroughly researched the technologies of their proposed project and have been in frequent contact with potential mentors. Simply copying and pasting an idea here will not work. On the other hand, creating a completely new idea without first consulting potential mentors is unlikely to work out.<br />
<br />
When writing your proposal or asking for help from the general KDE community don't assume people are familiar with the ideas here. KDE is really big!<br />
<br />
If there is no specific contact given you can ask questions on the general KDE development list kde-devel@kde.org. See [http://www.kde.org/mailinglists/ the KDE mailing lists page] for information on available mailing lists and how to subscribe.<br />
<br />
=== Adding a Proposal ===<br />
<br />
{{Note|Follow the template of other proposals!}}<br />
<br />
==== Project: ====<br />
<br />
'''Brief explanation:'''<br />
<br />
'''Expected results:'''<br />
<br />
'''Knowledge Prerequisite:'''<br />
<br />
'''Mentor:'''<br />
<br />
When adding an idea to this section, please try to include the following data:<br />
<br />
:*if the application is not widely known, a description of what it does and where its code lives<br />
:*a brief explanation<br />
:*the expected results<br />
:*pre-requisites for working on your project<br />
:*if applicable, links to more information or discussions<br />
:*mailing list or IRC channel for your application/library/module<br />
:*your name and email address for contact (if you're willing to be a mentor)<br />
<br />
If you are not a developer but have a good idea for a proposal, get in contact with relevant developers first.<br />
<br />
<br />
==Ideas==<br />
<br />
===Your Own Idea ===<br />
<br />
==== Project: Something that you're totally excited about ====<br />
<br />
'''Brief explanation:''' Do you have an awesome idea you want to work on with KDE but that is not among the ideas below? That's cool. We love that! But please do us a favor: Get in touch with a mentor early on and make sure your project is realistic and within the scope of KDE. That will spare you and us a lot of frustration.<br />
<br />
'''Expected results:''' Something you and KDE loves<br />
<br />
'''Knowledge Prerequisite:''' Probably C++ and Qt but depends on your project<br />
<br />
'''Mentor:''' Try to see who in KDE is interested in what you want to work on and approach them. If you are unsure you can always ask in #kde-soc on Freenode IRC.<br />
<br />
===Plasma===<br />
<br />
==== Project: Port various KDE4 Plasmoids to Plasma 5 ====<br />
<br />
'''Brief explanation:''' When we ported from Plasma 4 to Plasma 5 some useful Plasmoids ended up not being initially ported. We want the more important existing applets to continue to run which . Students should select a few Plasmoids which they deem useful for their proposal along with some innovative ideas for improvements. Students should show knowledge of the level of work related. <br />
<br />
'''Expected results:''' A few fully working plasmoids, polished and better than before.<br />
<br />
'''Knowledge Prerequisite:''' QML skills. Ideally some Plasmoid experience<br />
<br />
'''Mentor:''' Sebastian Kugler with help of the Plasma team.<br />
<br />
==== Project: Port KSystemLog to use journald as a backend ====<br />
<br />
'''Brief explanation:''' KSystemLog is a tool for viewing log files. This has slowly started to fail as log files moved in various distributions. Journald provides a common interface to query programatically system and user logs which will fix the main issue. Applications should impress me with their ideas utilising the available features. <br />
<br />
'''Expected results:''' A ported to frameworks journald powered log viewer. <br />
<br />
'''Knowledge Prerequisite:''' C++, Qt. <br />
<br />
'''Mentor:''' David Edmundson with help of the Plasma team.<br />
<br />
==== Project: Port various Systemsettings KCMs to QML ====<br />
<br />
'''Brief explanation:''' The codebase of the systemsettings modules is old and needs a redesign both code-wise and UI-wise. Students should select a few KCMs and propose how to port them to the new QML/C++ hybrid with some ideas on the improvement of their UI.<br />
<br />
'''Expected results:''' A few fully working KCM modules ported to a mix of QML and C++ that still load correctly in Systemsettings and KCMshell.<br />
<br />
'''Knowledge Prerequisite:''' QML and C++ skills.<br />
<br />
'''Mentor:''' Marco Martin with help of the Plasma team.<br />
<br />
==== Project: Intelligent TV Series/Movies grouping for Plasma Media Center ====<br />
<br />
'''Brief explanation:''' A lot of people use Media Centers to watch TV Series and Movies on their media devices. A very common headache is to organize media collections of TV series and to perform actions like "Play next episode". This project aims at using multiple factors (like filenames, file paths, and others) to figure out what media files are part of a common TV series or Movie collection.<br />
<br />
'''Expected results:''' A new backend for Plasma Media Center which scans the user's media library and automatically shows a list of TV Series and Movie collections the user has. The feature should be able to function to an acceptable level without using online services. However you may use online services to augment the algorithms/improve the results.<br />
Letting the user make suggestions to improve the system's results and it learning from those will be a nice to have.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt/QML. Knowledge of elementary vector mathematics and linear algebra is a plus<br />
<br />
'''Mentor:''' Shantanu Tushar < shantanu kde org > and Vinay S Rao < sr.vinay gmail ><br />
<br />
=== Various Places ===<br />
==== Project: package install for 3rd party applications ====<br />
<br />
'''Brief explanation:''' KDE software needs to install software in various places. Investigate the best way to do this which is probably to use packagekit. Then implement this in the places which need it.<br />
<br />
'''Expected results:''' Work out best way for 3rd party programs to query and install packages. Then adapt the following pieces of software to install the packages they need:<br />
* dolphin file share install samba<br />
* kcm access to install orca<br />
* gwenview to install kipi-plugins<br />
* kcm locale should install kde-l10n-xx<br />
* kickoff to implement package install like kicker?<br />
all this should be done in a way which works for the major distributions. <br />
<br />
Appstream could be used to find package names to install although support for this in Ubuntu is incomplete.<br />
<br />
'''Knowledge Prerequisite:''' C++<br />
<br />
'''Mentor:''' Jonathan Riddell (Riddell in #plasma on freenode IRC) with help of the Plasma team.<br />
<br />
=== Plasma and Gluon ===<br />
<br />
==== Project: Extend gamingFreedom.org framework to be more generic ====<br />
<br />
'''Brief explanation:''' Over the last couple of years, the gamingFreedom.org website and server side components have been created, which implement Open Collaboration Services (OCS) in a generic and reusable form. We are now at a point where it would make sense to attempt to use this for further purposes, rather than only for gamingFreedom.org. Specifically, a new implementation of the server component employed for hosting Plasma related content is needed, and a website for presenting this content on the web.<br />
<br />
'''Expected results:''' A new website based on gamingFreedom.org's OCS client libraries, and a server implementation for hosting Plasma content.<br />
<br />
'''Knowledge Prerequisite:''' PHP for the client and server code<br />
<br />
'''Mentor:''' Claudio Desideri and Dan Leinir Turthra Jensen with help of the Plasma team.<br />
<br />
=== Kdenlive ===<br />
<br />
Kdenlive is an intuitive and powerful multi-track video editor, including most recent video technologies. Our software is completely free, as defined by the GNU foundation. Using Kdenlive is investing in a community driven project, which aims to establish relationships between people in order to built the best video tools.<br />
<br />
* [http://www.kdenlive.org Kdenlive project web site]<br />
* [http://community.kde.org/Kdenlive Kdenlive wiki]<br />
* [https://mail.kde.org/mailman/listinfo/kdenlive Mailinglist]<br />
* [http://webchat.freenode.net/?channels=kdenlive #kdenlive IRC channel on Freenode]<br />
<br />
==== Project: Add support for new Animation capabilities ====<br />
<br />
'''Brief explanation:''' MLT, the media frameworks we use for rendering, has recently added a new [http://mltframework.blogspot.com/2013/06/v090-released-with-new-property.html property animation] to its objects. This allows much simpler, smoother and more general animations than the traditional keyframes technology. We then need new widgets to edit these properties, and eventually evolve our on-monitor interactions.<br />
<br />
'''Expected results:''' At the end of the project, we should be able to add and graphically adjust these animation parameters through controls in the effects stack panel, and bonus on the monitor.<br />
<br />
'''Knowledge Prerequisite:''' In the end you will assemble QtWidgets and interact with MLT data through C++. So you should be at ease with C++ and Qt (no need to be an expert), and have a look to the MLT manual page about animation.<br />
<br />
'''Mentor:''' Vincent Pinon with help of the Kdenlive team.<br />
<br />
==== Project: Redesign titler using WebVFX ====<br />
<br />
'''Brief explanation:''' Our titler, the tool we use to add text and drawing objects over the video, relies on a home made module added to the MLT framework. Our module is limited in features, quite slow to render, and demands work to maintain. MLT has since then been plugged into WebVFX engine, which provides infinite possibilities through web technologies, and it is certainly more robust. The goal is then to port our titler to this engine, then maybe evolve the interface to offer new possibilities.<br />
<br />
'''Expected results:''' At the end of the project, the titler should rely only on MLT WebVFX module. Bonus we should be able to add and easily edit more objects types.<br />
<br />
'''Knowledge Prerequisite:''' First step is to translate our XML to Web formats inside the C++ code, so you should understand those dialects. For the UI rework, you would then work with Qt, in either C++ or QML.<br />
<br />
'''Mentor:''' Vincent Pinon with help of the Kdenlive team.<br />
<br />
==== Project: add import/export filters for video editors exchange formats ====<br />
<br />
'''Brief explanation:''' To reduce the barrier to switch to Kdenlive, users should be able to import and export with commercial editing softwares (at least partially). Some scripts already exist to crudely parse EDL or AAF formats, the goal is to do it cleanly integrated in Kdenlive.<br />
<br />
'''Expected results:''' At the end of the project, we should be able to exchange projects with one or more commercial tools. Effects and transitions will probably be limited, but timeline construction should be transferable.<br />
<br />
'''Knowledge Prerequisite:''' The work will consist in manipulating XML data with Qt (C++), so you should understand those dialects.<br />
<br />
'''Mentor:''' Vincent Pinon with help of the Kdenlive team.<br />
<br />
==== Project: make Kdenlive work on Windows and OSX ====<br />
<br />
'''Brief explanation:''' All the frameworks Kdenlive relies on are working on other platforms, and Kdenlive used run on those long time ago. The goal here is to setup build environments on one or two other OS's, and fix the things that prevent Kdenlive to work.<br />
<br />
'''Expected results:''' At the end of the project, Kdenlive should work reliably on one or two commercial OS's.<br />
<br />
'''Knowledge Prerequisite:''' Setting up and running builds, fixing things in C++, CMake, dependencies.<br />
<br />
'''Mentor:''' Vincent Pinon with help of the Kdenlive and KDE porting teams.<br />
<br />
=== Amarok ===<br />
<br />
Amarok is a Music player that helps you organize and rediscover your music. <br />
<br />
* [http://amarok.kde.org Amarok project web site]<br />
* [http://community.kde.org/Amarok Amarok wiki]<br />
* [https://mail.kde.org/mailman/listinfo/amarok-devel Mailinglist]<br />
* [https://plus.google.com/+amarok Google+ page]<br />
* [http://webchat.freenode.net/?channels=amarok #amarok IRC channel on Freenode]<br />
<br />
==== Project: Port Amarok to Qt5/Kf5/Plasma5 ====<br />
<br />
'''Brief explanation:''' Currently Amarok still depends on kdelibs 4.x and Qt4.<br />
<br />
'''Expected results:''' Amarok should compile with Qt 5.x, kdelibs4 dependencies should be replaced with kf5. Port most existing plasma widgets of the Context View to Plasma 5 (at least the most important should be ported). The default system themes should apply to Amarok flawlessly. A very important part of this project is testing the port and adapting the unit tests.<br />
<br />
'''Knowledge Prerequisite:''' good knowledge of C++/Qt, ideally being familiar with kf 5 and Plasma 5. The student should have some basic knowledge of the Amarok project and its functions as well as its architecture. All relevant information about Amarok, Qt5, kf5 and Plasma 5 can be found online, every suitable applicant should be able to find this documentation on their own.<br />
<br />
'''Mentor:''' To be determined. All discussions about the project should be held on the mailinglist and/or on IRC<br />
<br />
===digiKam===<br />
<br />
digiKam is an advanced digital photo management application for Linux, Windows, and Mac-OSX.<br />
<br />
* [http://www.digikam.org digiKam project web site]<br />
* [http://www.exiv2.org Exiv2 project web site]<br />
* [https://techbase.kde.org/Projects/Digikam/CodingSprint2014 digiKam port to KF5 status]<br />
* [https://mail.kde.org/mailman/listinfo/digikam-devel Mailinglist]<br />
* [https://plus.google.com/+digikam Google+ page]<br />
* [http://webchat.freenode.net/?channels=digikam #digikam IRC channel on Freenode]<br />
<br />
==== Project: Re-write database KIO-slaves as pure Qt5 using multithreading ====<br />
<br />
'''Brief explanation:''' Originally, KIO-Slaves have been implemented to run database queries in a separated process to prevent problem with SQlite. Since SQlite support re-entrancy and queries from separated threads, digiKam KIO-slaves used to process complex and long database queries can be re-written as core implementation using Qt thread API. This will improve digiKam availability in time when system is updated in low-level, and permit to adjust finely CPU cores assigned to database process.<br />
<br />
'''Dependencies:''' : digiKam core from "framework" branch (KF5) <br />
<br />
'''Links:''' [https://www.sqlite.org/threadsafe.html Using Sqlite in multi-threaded application], [https://bugs.kde.org/show_bug.cgi?id=146557 Bug #146557]<br />
<br />
'''Knowledge Prerequisite:''' C/C++, Qt, database, multi-threading<br />
<br />
'''Expected results:''' Identify all parts of digiKam core which query database through KIO-slaves mechanism, factorize code in same interface and write a multi-threaded wrapper to run SQlite queries. Write test code to check quickly if database core implementation changes don't affect wrapper functionality. Note : digiKam use internally URL + XML formating to pass data to KIO-slaves and this not be changed.<br />
<br />
'''Difficulty:''' high<br />
<br />
'''Lead Mentor:''' Gilles Caulier <caulier dot gilles at gmail dot com><br />
<br />
==== Project: Advanced Metadata HUB ====<br />
<br />
'''Brief explanation:''' digiKam has already some options to manage workflow between image metadata and database, through the setup/metadata configuration panel. The goal of this project is to write a more advance setup to control finely the most important metadata field in order to read from image and populate database and vis versa. The list of metadata to drive must be easily extensible and configurable. Also, the metadata workflow to synchronize image with database must be more flexible and must provide a way to synchronize files at end of digiKam session and not only in real time (typical case : editing image tags to write in images). <br />
<br />
'''Dependencies:''' : digiKam core and libkexiv2 from "framework" branch (KF5) <br />
<br />
'''Links:''' [https://bugs.kde.org/buglist.cgi?bug_status=UNCONFIRMED&bug_status=CONFIRMED&bug_status=ASSIGNED&bug_status=REOPENED&component=Metadata&list_id=1205997&product=digikam&query_format=advanced&short_desc=HUB&short_desc_type=allwordssubstr Bugs list from bugzilla]<br />
<br />
'''Knowledge Prerequisite:''' C/C++, Qt, database, multi-threading<br />
<br />
'''Expected results:''' Create metadata hub widget for settings panel, adjust current hub and image scanner implementations, add test code.<br />
<br />
'''Difficulty:''' high<br />
<br />
'''Lead Mentor:''' Gilles Caulier <caulier dot gilles at gmail dot com><br />
<br />
==== Project: Add WebP and WebM support ====<br />
<br />
'''Brief explanation:''' WebP/WebM is new wavelets based image/video format from Google, based on RIFF/MKV container. This format become more popular on the Web and both can be used through an open-source library. We need to support these formats as editable in digiKam (WebP) and manageable by database mechanism through metadata (WebP and WebM).<br />
<br />
'''Dependencies:''' : digiKam core and libkexiv2 from "framework" branch (KF5), Exiv2 library<br />
<br />
'''Links:''' [http://en.wikipedia.org/wiki/WebM WebM format], [http://en.wikipedia.org/wiki/WebP WebP format]<br />
<br />
'''Knowledge Prerequisite:''' C/C++, Qt, Metadata<br />
<br />
'''Expected results:''' Patch Exiv2 library to support both formats in read/write meta-data mode and add optional WebP support in digiKam core to be able to edit images (read/write image contents in 16 bits color depth). Write test code to check new functionality in time.<br />
<br />
'''Difficulty:''' high<br />
<br />
'''Mentors:''' Gilles Caulier <caulier dot gilles at gmail dot com> + Someone from Exiv2 team<br />
<br />
==== Project: Factorize and port to KF5 all web service Import/Export KIPI tools ====<br />
<br />
'''Brief explanation:''' All tools dedicated to import or export items from KIPI host applications to web services as Flickr, GDrive, Dropbox, Facebook, Picasa, etc... need to be factored and ported to KF5/Qt5. Factorization include to make common widgets (settings, GUI layout, rules, etc), and background processing to prevents duplicate code. Also, in order to reduce KIPI host application time loading, the number of tools must be limited. Tools must be grouped by categories, as Social Networks, Cloud Service, Photo Hosting, etc...<br />
<br />
'''Dependencies:''' : digiKam KIPI interface, KIPI Plugins <br />
<br />
'''Bugzilla entries:''' [https://bugs.kde.org/show_bug.cgi?id=221704 221704]<br />
<br />
'''Knowledge Prerequisite:''' C/C++, Qt/KDE, GUI<br />
<br />
'''Expected results:''' KIPI web services tools ported to KF5 and running with digiKam 5.0.0.<br />
<br />
'''Difficulty:''' high<br />
<br />
'''Lead Mentor:''' Gilles Caulier <caulier dot gilles at gmail dot com><br />
<br />
===Marble===<br />
Marble is a virtual globe and world atlas — your swiss army knife for maps. Find your way and explore the world!<br />
<br />
* [http://marble.kde.org/ Marble project website]<br />
* [https://mail.kde.org/mailman/listinfo/marble-devel Mailinglist]<br />
* [http://webchat.freenode.net/?channels=marble #marble IRC channel on Freenode]<br />
<br />
==== Project: Starting to edit OpenStreetMap Data ====<br />
<br />
'''Brief explanation:''' During the last Google Summer of Code 2014 Cruceru Calin worked on an Edit mode for Marble. Right now it's possible to draw elementary shapes and features (Polygons/Polylines, Placemarks, GroundOverlays, etc.). These geometry primitives can be saved as KML files and there is some experimental OSM support already.<br />
This project will be about extending the current Edit Maps mode. Focus will be especially towards enabling advanced editing that allows for more sophisticated drawing capabilities but also for tagging and other features that are required for OSM support. A special focus might also be on refactoring the existing code base where it's useful.<br />
<br />
<br />
'''Expected results:''' Reliable and useful means to create and edit OSM files using Marble.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt,<br />
<br />
'''Mentors:''' Torsten Rahn, Cruceru Calin, Dennis Nienhüser<br />
<br />
==== Project: Turning Marble into a small GIS system ====<br />
<br />
'''Brief explanation:''' During the last Google Summer of Code 2014 Cruceru Calin worked on an Edit mode ("Annotation Plugin") for Marble. Right now it's possible to draw elementary shapes and features (Polygons/Polylines, Placemarks, GroundOverlays, etc.). These geometry primitives can be saved as KML files.<br />
During this project we'd like to extend the feature set towards classical requirements of a GIS system. Focus will be especially towards enabling advanced editing that allows for more sophisticated drawing capabilities but also for tagging and other features that are required for a GIS Editor. Depending on the experience of the student we might also focus on other topics like Data analysis or PostGIS support. <br />
<br />
'''Expected results:''' Adding capabilities to Marble that allow for using it for simple tasks that people would usually do using Quantum-GIS.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt<br />
<br />
'''Mentors:''' Torsten Rahn, Cruceru Calin, Dennis Nienhüser<br />
<br />
==== Project: Statistical Data Visualization and Extending Marble Game ====<br />
<br />
'''Brief explanation:''' During the last Google Summer of Code 2014 Abhinav Gangwar created the "Marble Game". This project is about extending Marble's library in a way so that it's easy to display statistical data on maps in a color coded way. The Marble Game should be further improved and it should be possible to make use of the Statistics feature.<br />
<br />
'''Expected results:''' Marble provides a tool that allows to visualize a ready-made dataset of statistical data in a color-coded way. The Marble Game should also be extended to make use of that feature. <br />
<br />
'''Knowledge Prerequisite:''' C++, Qt<br />
<br />
'''Mentors:''' Torsten Rahn, Abhinav Gangwar, Dennis Nienhüser<br />
<br />
=== KStars ===<br />
<br />
KStars is a very powerful tool for anyone interested in astronomy. It is part of the KDE Edu suite.<br />
<br />
==== Project: Ekos Scheduler ====<br />
<br />
'''Brief explanation:''' [http://www.indilib.org/about/ekos.html Ekos] is an advanced astrophotography tool for Linux. It utilizes [http://www.indilib.org INDI] for device control. With Ekos, the user can use the telescope, CCD, and other equipment to perform Astrophotography tasks. However, the user has to be present to configure the options and to command the actions to perform all the astrophotography related tasks, and hence a scheduler is required to automate observations to be constrained within certain limitations such as required minimum angular separation from the moon, whether conditions...etc. Furthermore, the observations should be triggered when certain conditions are met such as observation time, object's altitude...etc. The prospective student is expected to develop a ''Simple'' [http://indilib.org/forum/general/560-simple-ekos-schedular.html Ekos scheduler] to trigger observation runs when certain conditions are met and when the limitations are required.<br />
<br />
'''Expected results:''' Simple scheduler to automate astrophotography runs based on some conditions and within user-configurable limitations.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt, INDI<br />
<br />
'''Mentors:''' Jasem Mutlaq (IRC: knro)<br />
<br />
The student will need to:<br />
<br />
* Look at the relevant code, and propose a tractable plan for implementing some of the improvements within the GSoC timeframe.<br />
* Implement some of the improvements, producing production-ready code that can be included in the next release of KStars after GSoC 2015.<br />
<br />
==== Project: Constellation art ====<br />
<br />
'''Brief explanation:''' KStars currently draws constellation lines, names, and boundaries, but constellation art is missing. The student is expected to study KStars API and develop a new SkyComponent to superimpose the constellation artwork unto the sky map while re-working other components in KStars to support this. The structure must support multiple sky cultures. The artwork itself must be available under a permissible license. New constellation artwork should be available for download using the KNewStuff framework. The user should be able to select the sky culture.<br />
<br />
'''Expected results:''' High quality artwork for Western constellations in addition to one non-western constellation artwork that can be switched on/off in the sky map.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt<br />
<br />
'''Mentors:''' Jasem Mutlaq (IRC: knro)<br />
<br />
The student will need to:<br />
<br />
* Look at the relevant code, and propose a tractable plan for implementing some of the improvements within the GSoC timeframe.<br />
* Implement some of the improvements, producing production-ready code that can be included in the next release of KStars after GSoC 2015.<br />
<br />
==== Project: Fix our deep-sky data handling ====<br />
<br />
'''Brief explanation:''' Currently, KStars handles data from deep-sky object catalogues in an SQLite database. While this is working well, there are some more features we would like to have, and some that should be implemented in order to sanitize the deep-sky data handling, such as automatic cross-referencing of deep-sky objects across catalogs, organizing deep-sky data better in the database etc using Hierarchical Triangular Mesh, etc.<br />
<br />
More details here: http://techbase.kde.org/Projects/Edu/KStars/Better_deep-sky_handling<br />
<br />
'''Expected results:''' Some, or all of the improvements to deep-sky handling suggested above (or maybe even your own suggestions), implemented completely in solid, release-worthy code.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt, understanding of astronomical catalogues, some experience with data structures.<br />
<br />
'''Mentors:''' Rafal Kulaga (IRC: rkulaga)<br />
<br />
The student will need to:<br />
<br />
* Look at the relevant code, and propose a tractable plan for implementing some of the improvements within the GSoC timeframe.<br />
* Implement some of the improvements, producing production-ready code that can be included in the next release of KStars after GSoC 2015.<br />
<br />
PS: If all this looks daunting, that's because you have not (yet) talked to us. If you're really interested, get onto #kde-kstars and ping the mentors.<br />
<br />
==== Project: Propose your own project ====<br />
<br />
'''Brief explanation:''' If you have some interesting ideas about KStars that can be implemented within the GSoC timeframe, you are very welcome to propose them, because we seem to have run out of ideas.<br />
<br />
'''Mentors:''' Rafal Kulaga (IRC: rkulaga)<br />
<br />
=== KDE Edu ===<br />
<br />
==== Project: Integrate Cantor into LabPlot====<br />
[http://labplot.sourceforge.net/ LabPlot] is a KDE-application for interactive graphing and analysis of scientific data.<br />
<br />
'''Brief explanation:''' The integration is twofold:<br />
<br />
# currently, for the created plots LabPlot uses either the data provided by hand in a spreadseet or by using data imported from external ascii-files. By having Cantor within LabPlot it should be possible to access the data sets created in a computer algebra session (say Maxima) provided by Cantor. Cantor's session have to be integrated into LabPlot's model-view framework and have to be put onto the same foot as all the other objects managable in LabPlot (spreadsheet, worksheets etc.).<br />
# By calling a CAS-specific command for creating a 2D-plot in Cantor, Cantor creates an external process that renders the plot and embeds the result as a pixmap. Instead of such a static pixmap, LabPlot's plots should be embeded. This would provide high degree of control of the plot appearance as provided by LabPlot.<br />
<br />
'''Mentor:''' Alexander Semke<br />
<br />
==== Project: Integrate [http://en.wikipedia.org/wiki/VTK VTK] into LabPlot, investigate [http://en.wikipedia.org/wiki/Tulip_(software) Tulip] ====<br />
[http://labplot.sourceforge.net/ LabPlot] is a KDE-application for interactive graphing and analysis of scientific data.<br />
<br />
'''Brief explanation:'''<br />
# LabPlot lacks 3D-functionality. In the old KDE3-based LabPlot qwt3D was used for this that is not an option anymore. The task consists of the integration of [http://en.wikipedia.org/wiki/VTK VTK] -libs. Also, the relevant widgets for 3D-plot editting should be created in a manner similar for all the other objects available in LabPlot now.<br />
# Investigate whether it's reasonable to use LabPlot as a frontend (or to extend it to be a frontend) to the functionality provided by [http://en.wikipedia.org/wiki/Tulip_(software) Tulip] yes, how?<br />
<br />
'''Mentor:''' Alexander Semke<br />
<br />
==== Project: Port of GCompris in Qt Quick====<br />
<br />
[http://gcompris.net GCompris] is a an educational software suite comprising of numerous activities for children aged 2 to 10. Originaly written in Gtk+ it's development team decided to rewrite it from scratch in [http://qt-project.org/doc/qt-5/gettingstartedqml.html Qt Quick]. It has also been decided that this version will be integrated in KDE which is the reason of the project being here.<br />
<br />
'''Goals:''' <br />
# Porting several GCompris activities in Qt Quick. There is a page that tracks the [http://gcompris.net/wiki/Qt_Quick_Migration_status porting effort] that will help you select the activity set you are interested in.<br />
# Creating new activities. There is a [http://gcompris.net/wiki/Ideas_for_activities list of ideas] of activities that have been identified as something we would like to have. You can also propose original ideas not on the list.<br />
<br />
'''Knowledge Prerequisite:''' By the start of GSoC you should<br />
# Be interested in children education<br />
# Be familiar with GCompris concept and content<br />
# Basic knowledge in a programming language (a 1 year school course is enough)<br />
# Be able to build the Qt Quick version of GCompris<br />
<br />
'''Application guide:'''<br />
# Writing or porting an activity takes about the same time. The advantage of the porting is that the tuning, the graphishm and the sounds are already available. You can count 2 weeks of development for an activity.<br />
# To keep the work interesting it is recommended to propose a mix of porting some activities and creating new one, either from the idea list or from an original idea you come with.<br />
# You have to follow the [http://gcompris.net/wiki/An_exercise_for_new_contributors instructions here] and provide your exercise as a pull request.<br />
<br />
'''Mentor:''' Bruno Coudoin (IRC: bdoin #gcompris on freenode)<br />
<br />
=== Keyboard Layouts ===<br />
<br />
Keyboard layouts in KDE allow user to use multiple keyboard layouts and switch between them. It consists of keyboard configuration module (in System Settings), keyboard layout widget/applet, and keyboard layout daemon.<br />
<br />
==== Project: Integrating Input Methods with keyboard layout configuration ====<br />
<br />
'''Brief explanation:''' Input method and keyboard layout configuration are serving the same purpose - to allow users to type text in non-default language. Currently KDE has integrated system to configure keyboard layouts but IM need to be configured somewhere else. Also when IM is configured it takes over some functions of keyboard layout configuration. So it would be nice if we could have IM and keyboard layout configuration in one place.<br />
It seems that IBus has already gained community acceptance so this will be the target for integration into KDE keyboard module.<br />
<br />
'''Expected results:''' Keyboard configuration module in System settings will include IM configuration and it will be integrated with existing keyboard layout options.<br />
<br />
'''Knowledge Prerequisite:''' good knowledge of C++, development experience with Qt and KDE, understanding of Input Methods (IBus)<br />
<br />
=== KDevelop ===<br />
<br />
==== Project: Clang Integration ====<br />
<br />
'''Brief explanation:''' Finish the kdev-clang plugin to make it a usable replacement for the existing C++ plugin.<br />
<br />
'''Expected results:''' Find the still missing features from the KDevelop4's C++ support and port them over to kdev-clang, so it can become the mainstream C/C++ Solution<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt. Knowledge about Clang is helpful<br />
<br />
'''Mentor:''' Kevin Funk<br />
<br />
==== Project: Checker Framework ====<br />
<br />
'''Brief explanation:''' A generic framework should be created which provides the foundation for other plugins to report errors. <br />
<br />
'''Expected results:''' Right now we have the problems toolview but it is tightly coupled to the DUChain. This should be changed to use a separate item repository which stores the problems for a given path. The data stored would be: Path and range of where the issue is found, a short error message and optionally a long description. Furthermore, plugins might want to store additional info from which the problem could be fixed (compare to the 'add include path' or similar wizards we have already in the language framework).<br />
<br />
This framework should then be used to integrate various tools.<br />
<br />
First of all the existing language plugins should show the problems they find there.<br />
The existing playground plugins for krazy and cppcheck integration should reuse that framework<br />
any other linters could be integrated, such as jslint, pylint, clang-check, etc. pp.<br />
runtime checkers could be integrated, such as valgrind's memcheck, ptrcheck, helgrind, drd, ...<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt. Knowledge of debugging tools is helpful.<br />
<br />
'''Mentor:''' Milian Wolff<br />
<br />
==== Project: SVN Plugin Rewrite ====<br />
<br />
'''Brief explanation:''' Rewrite the SVN plugin to use the C-API directly.<br />
<br />
'''Expected results:''' The existing SVN plugin uses an outdated kdevsvncpp checkout internally which causes troubles, warnings and licensing issues. Port the plugin to either the C-API of svn or alternatively try to reuse code from current kdevsvn. The result should be a tested, working plugin for SVN integration without licensing issues nor compile time warnings about usage of deprecated API.<br />
<br />
'''Knowledge Prerequisite:''' C, C++, Qt, SVN<br />
<br />
'''Mentor:''' Milian Wolff<br />
<br />
==== Project: LLDB Support ====<br />
<br />
'''Brief explanation:''' Write a new plugin to support LLDB on KDevelop<br />
<br />
'''Expected results:''' Come up with a new kdevelop plugin so that LLDB can be used as a debugging solution, especially on Mac OS X and Windows, where gdb support is rather scarce.<br />
<br />
'''Knowledge Prerequisite:''' C, C++, Qt, debugging intrinsic problems<br />
<br />
'''Mentor:''' KDevelop team<br />
<br />
=== KDE PIM ===<br />
<br />
The KDE PIM community work on a set of libraries and applications for Personal Information Management, including email, calendaring, contacts, and feed aggregation.<br />
<br />
==== Project: OpenHolidays ====<br />
<br />
'''Brief explanation:''' The KHolidays library provides KDE applications with information on public holidays around the world, however the file format is very hard to use and maintain and the library features are very limited and restricted to Qt users. The goal of the OpenHolidays project is to develop a new open standard and data repository that can be used by any project that needs the data. See http://community.kde.org/KDE_PIM/KHolidays for more details.<br />
<br />
'''Expected results:''' Define the new JSON file format and port the existing data files to the new format. Develop a shared Qt-only library to parse the holiday files and provide access to them with a iCal style event-based api. Implement an Akonadi resource to access the data. Extended goals: Develop a JavaScript library to use the files. Develop a web site and web service at openholidays.org to provide online access to the data files.<br />
<br />
'''Knowledge Prerequisite:''' C++ and Qt for core goals, JavaScript and web services for extended goals.<br />
<br />
'''Mentor:''' John Layt and other KDE PIM community members.<br />
<br />
==== Project: QtQuick ToDo API / Plasmoid====<br />
<br />
'''Brief explanation:''' KDE PIM wants to make it's data accessible for applications which use QML to declare their user interfaces, e.g. applications using QtQuick. For that they need data handling objects that are accessible through QML, e.g. item models that have a mapping of string based role names to enum value based roles in C++, etc.<br />
<br />
'''Expected results:''' Define and implement a general QML API for accessing and creating Akonadis ToDo data. Write / Port a ToDo Plasmoid for Plasma Desktop or Plasma Active to show off the new API. Bonus: Port Kontact Touch Task to the new API instead of, or in addition to the Plasmoid.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt, QtQuick<br />
<br />
'''Possible Mentors:''' Kevin Krammer, and other KDE PIM community members<br />
<br />
=== Simon ===<br />
Simon is a speech recognition suite.<br />
<br />
[http://simon.kde.org Website] - [https://mail.kde.org/mailman/listinfo/kde-speech Mailing list] - IRC channel: #kde-speech on Freenode.<br />
<br />
==== Project: Streamline handling of various resources ====<br />
<br />
'''Brief explanation:''' Simon uses a multitude of different components: Scenarios, Base models, Shadow vocabulary, Language profiles, etc.<br />
<br />
While many of these components can be downloaded from within Simon, some can't and even for those that are better integrated, end-users still have to read additional documentation to know which components work together and which don't.<br />
<br />
The aim of this project is to bring the handling of these resources under a uniform and user-friendly interface.<br />
Specifically, the interface should resolve conflicts automatically and deduce an optimal default setup by itself (e.g. based on the system language and installed programs).<br />
<br />
'''Expected results:''' Much more user friendly setup.<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt<br />
<br />
'''Mentor:''' Peter Grasch <peter {+at+} grasch.net><br />
<br />
'''Resources:''' Some work (mostly brainstorming and UI design) was already conducted during Season of KDE 2013. Please contact me for details. This does not mean that this project is already assigned!<br />
<br />
=== Okular ===<br />
<br />
Okular is a Document Viewer. <br />
<br />
* [http://okular.kde.org Okular project web site]<br />
* [https://mail.kde.org/mailman/listinfo/okular-devel Mailinglist]<br />
* [http://webchat.freenode.net/?channels=okular #okular IRC channel on Freenode]<br />
<br />
==== Project: Better Accessibility for Okular ====<br />
'''Brief explanation:''' We should implement Qt accessibility APIs to make Okular usable by more users. This would allow blind people to read documents.<br />
<br />
'''Expected results:''' You should be able to "read" Okular documents using Orca or other "screen reading" software. As long as the document exposes the contents in text form, we can let assistive technology pick it up and present it to the user in a different way (for example non-textual). An important goal is to transfer as much of the structure of the document as possible, so that ideally the sematics (this is a heading, here is normal text, page number) are preserved. Finding well working PDF solutions is still a challenge for blind people on any operating system. For now the focus will be on Orca since it's the best working screen reader on Linux used by most blind users.<br />
<br />
'''Knowledge Prerequisite:''' C++<br />
<br />
'''Mentor:''' Albert, Frederik helping out with the accessibility parts<br />
<br />
==== Project: Implement PDF Poppler features ====<br />
'''Brief explanation:''' Poppler has some support for features we don't support, implement them<br />
<br />
'''Expected results:''' Poppler has support for pdf layer views, tagged pdf support, linearized pdf support yet we in Okular don't offer that features to our users. The result from this project is having those exposed to the final users<br />
<br />
'''Knowledge Prerequisite:''' C++<br />
<br />
'''Mentor:''' Albert<br />
<br />
==== Project: Implement SecurityHandler V6 in Poppler ====<br />
'''Brief explanation:''' Poppler needs to support SecurityHandler V6 to be able to open some pdf files<br />
<br />
'''Expected results:''' Poppler (and hence Okular) can open files with SecurityHandler V6 like the ones in https://bugs.freedesktop.org/show_bug.cgi?id=85368 and https://bugs.freedesktop.org/show_bug.cgi?id=88151<br />
<br />
'''Knowledge Prerequisite:''' C++<br />
<br />
'''Mentor:''' Albert<br />
<br />
=== KDE Connect ===<br />
==== Project: Improve KDE Connect encryption ====<br />
'''Brief explanation:''' We want to implement a better encrypted protocol for KDE Connect, as discussed here: http://albertvaka.wordpress.com/2013/09/19/how-kde-connect-encryption-works/ I would like to see a solid and peer-reviewed design before accepting this project.<br />
<br />
'''Expected results:''' Have a secure encryption algorithm implemented in both KDE (C++/Qt) and Android (Java) clients.<br />
<br />
'''Knowledge Prerequisite:''' Deep knowledge about encryption and security.<br />
<br />
'''Mentor:''' Albert Vaca <albertvaka {+at+} gmail.com><br />
<br />
'''Resources:''' kdeconnect<br />
<br />
==== Project: Build a Qt-only multiplatform KDEConnect client ====<br />
'''Brief explanation:''' We want to implement a cross platform client written in Qt that can run in virtually any platform supported by Qt (Windows Phone, Jolla, iOS, OSX, etc.) using the QPA (Qt Platform Abstraction) and QML. It will be challenging because Qt5 for phones is still quite new and implementing some features might not be possible yet, but it will be worth it to investigate what is possible and what not, and even contribute patches to Qt for some aspects. A lot of the core classes used in KDE Connect for Plasma could be reused and shared because they are mostly Qt (and would be part of the GSOC to make sure they end only using Qt, so we can get to re-use them). Not every feature is going to be available to every platform, and some plugins will be platform-specific, but as part of this GSOC project I would love to see it running as good as possible in one of the platforms already mentioned, and with basic functionallity in a couple more. (That is: center it around a platform and make it work well there, writting platform-specific plugins and code if needed, but making sure it still compiles and runs in other platforms).<br />
<br />
'''Knowledge Prerequisite:''' Qt5 and building cross-platform code.<br />
<br />
'''Mentor:''' Albert Vaca <albertvaka {+at+} gmail.com><br />
<br />
'''Resources:''' kdeconnect<br />
=== Solid ===<br />
==== Project: Improve sharing experience ====<br />
'''Brief explanation:''' Improve the content sharing experience in Plasma by extending and improving Samba share, implementing other ways of sharing and write new ways of discovering other people's shares.<br />
<br />
'''Expected results:''' It should be possible to discover "shares" using dolphin (possibly via a new kioslave?) and it should be possible to share a folder between two Plasma computers really fast and easy (possibly implementing an http server plus discovery via avahi).<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt, extra points for KIO experience.<br />
<br />
'''Mentor:''' Àlex Fiestas <afiestas {+at+} kde.org><br />
<br />
'''Resources:''' avahi, http, kdenetwork-fileshare<br />
<br />
=== Muon ===<br />
==== Project: Better support for your distribution ====<br />
<br />
'''Brief explanation:''' Muon needs to be ensured to work perfectly on any distribution, this project should target one of the (major) distributions, enumerate the problems to solve and propose solutions.<br />
<br />
'''Expected results:''' Muon users of your distribution will be happy ever-after.<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt, the technology required for the platform<br />
<br />
'''Mentor:''' Aleix Pol<br />
<br />
<br />
=== KWin ===<br />
==== Project: DRM/KMS backend for kwin_wayland ====<br />
<br />
'''Brief explanation:'''<br />
KWin_wayland currently only supports rendering to another Wayland server. In future it should be possible to go down to the hardware directly. For this a DRM/KMS rendering backend is required. This requires that a new backend is implemented for the OpenGL compositor and maybe the QPainter compositor. As KWin needs to handle kernel mode settings in this mode the output information need to be queried from the hardware and an implementation for KWin::Screens needs to be provided and from there propagated to the Wayland clients. In addition if the time of the project permits it an interface should be exposed for KScreen to configure the outputs.<br />
<br />
'''Expected results:''' KWin_wayland can render to DRM/KMS and fetches output information from the hardware<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt, Wayland, KMS and C knowlege are from advantage<br />
<br />
'''Mentor:''' Martin Gräßlin <mgraesslin@kde.org><br />
<br />
===Trojitá===<br />
<br />
[http://trojita.flaska.net/ Trojitá] is a fast IMAP e-mail client. Since late 2012, it is a part of KDE's extragear. The project focuses on delivering a usable, fast, standards-compliant, cross-platform and reliable e-mail client which can scale from cell phones to huge e-mail archives without annoying slowdowns.<br />
<br />
==== Project: Port to BlackBerry OS 10 ====<br />
<br />
'''Brief explanation:'''<br />
This work involves improving the separation of business logic from the UI concerns, an effort started and well-underway due to the Ubuntu Touch project, and adding a new GUI wirrten in QML for BlackBerry OS 10.<br />
<br />
'''Expected results:''' Trojitá running on BlackBerry Z10 with basic features, including reading and writing e-mails<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt, QML<br />
<br />
'''Mentor:''' Jan Kundrát <jkt@kde.org><br />
<br />
=== Gluon ===<br />
[http://gamingfreedom.org Gluon] is a project to build a Qt and KDE based game engine and game development tool. The engine is designed to support both mobile and desktop game development. We have ported the engine to Qt5 last year and are currently working on releasing a first Qt5 based version.<br />
<br />
==== Project: Build a QtQml based script system ====<br />
'''Brief explanation:''' In Qt4 QtScript was the solution to scripting support for applications. With the port to Qt5 the new QtQml module was introduced, including a new scripting system, but QtScript was still available. With Qt5.5 QtScript is planned to be deprecated and completely removed in Qt5.6. This means that our scripting system, which is currently built on QtScript, needs to be ported to QtQml.<br />
<br />
'''Expected results:''' A scripting system that can be used to write scripts for games.<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt at least. Experience with QtQuick/QML is a strong advantage.<br />
<br />
'''Mentor:''' Arjen Hiemstra<br />
<br />
==== Project: Expand Gluon Input ====<br />
'''Brief explanation:''' During the port to Qt5 we also overhauled the input system in Gluon to be more capable. However, we kept the implementation rather limited since we also had other elements to work on. This project would expand GluonInput with support for additional devices and platforms.<br />
<br />
'''Expected results:''' Additional platform and device plugins for GluonInput.<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt at least. Experience with platform-specific input libraries like XInput2 for Xorg is an advantage.<br />
<br />
'''Mentor:''' Arjen Hiemstra<br />
<br />
[[Category:Mentoring]]<br />
<br />
=== Krita ===<br />
[http://www.krita.org Krita] is an advanced 2D painting application. It support creating images from scratch from begin to end. Krita is a complex application and developers need to have a fair amount of experience in order to be able to do something.<br />
<br />
==== Project: Integrate Animation in Krita's core ====<br />
'''Brief explanation:''' We have gone through three iterations of animation support code in Krita. With this experience, it's become clear that we need to work the support for animatins right into Krita's core engine. This project comprises partly that, and partly updating the existing animation gui that was created in 2014.<br />
<br />
'''Expected results:''' by the end of the summer, the animation support in Krita should be ready for end-users to create 2D animations with, whether for game sprites or short cartoons. <br />
<br />
'''Knowledge Prerequisite:''' C++/Qt at least.<br />
<br />
'''Mentor:''' Boudewijn Rempt<br />
<br />
==== Project: Add Python Scripting to Krita ====<br />
'''Brief explanation:''' Krita has had two attempts at scripting support: through kjs and through kross. Neither was good enough. The VFXindustry standard for scripting is Python, and the goal of project is to integrate Python and PyQt directly into Krita.<br />
<br />
'''Expected results:''' by the end of the summer, users should be able to automate repetitive tasks, file import and export and add gui elements such as dockers, all written in PyQt.<br />
<br />
'''Knowledge Prerequisite:''' Deep knowledge of Python, SIP, C++ and Qt.<br />
<br />
'''Mentor:''' Boudewijn Rempt<br />
<br />
==== Project: Improve Normal Mapping Workflow ====<br />
'''Brief explanation:''' Normal maps are textures that describe surface detail on a 3d model by describing how much each pixel deviates from the surface the texture is put on. A normal map gives the ability to tell the renderer there's a different normal per texel(texture pixel), this way, you can describe subtle differences in surface without requiring the polygons for it. It does so by describing the normal angle to the surface by using the R, G and B channels. Now, normal maps, due to them being quite mathematical, are usually baked. But these bakes are not always perfect. furthermore, there's a lot of interest into handpainting textures, amongst which normal maps.<br />
<br />
'''Expected results:''' by the end of the summer, a new brush engine, which takes the tilt-direction and has that control the redness and greenness. And then takes the tilt-elevation, and has that control the blueness.<br />
<br />
'''Knowledge Prerequisite:''' knowledge of C++, Qt. and mathematics<br />
<br />
'''Mentor:''' Boudewijn Rempt<br />
<br />
===Calligra===<br />
==== Project: Variable thickness lines ====<br />
<br />
'''Brief explanation:''' One of the most fundamental basics of drawing is varying the width of your lines to show shape, form and perspective. Almost every line tapers at either end, and often gets thicker and thinner in different places as needed. For purely technical and histrorical reasons though, every vector program (Illustrator, Inkscape, Karbon etc) make curves all one hard width. <br />
This proposal is to create a variable width path shape / tool, much like the path tool, would allow drawing curves, but where each node could have its width set so that the line width changed smoothly from node to node. <br />
As a plugin for the Calligra suite, this would clearly benefit apps as Karbon and also Krita.<br />
<br />
'''Expected results:''' variable width path tool is able to change the width of any path node to an arbitary percentage (say 155%) of the stroke width. See http://bugsfiles.kde.org/attachment.cgi?id=56995 for mockup. The shape needs to be able to save and load in svg/odf.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt, SVG<br />
<br />
'''Mentor:''' Thorsten Zachmann < zachmann @ kde dot org ><br />
<br />
=== KIOSK ===<br />
==== Project: KIOSK Tool ====<br />
<br />
'''Brief explanation:''' Back in KDE 3 there was a tool to help administrators to configure the KDE Kiosk framework. The idea of this project is to start working on a new tool. The new application should be developed in close collaboration with the Visual Design Group to get a useful application for the targeted audience.<br />
<br />
'''Expected results:''' a functional prototype for a new Kiosk tool with a working backend to configure and restrict actions and configuration options.<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt<br />
<br />
'''Mentor:''' Martin Gräßlin <mgraesslin@kde.org><br />
<br />
=== Kubuntu ===<br />
==== Project: Port Ubiquity to Qt 5 ====<br />
<br />
'''Brief explanation:''' Ubiquity is the installer for Kubuntu. It should be ported to Qt 5. It is written in Python and can be fiddly to test because much of the development needs to be done on a live system. Once the Qt 5 port is complete there are numerous other bugs that can be fixed. Drop into #kubuntu-devel to say hi. Code is in launchpad.net/ubiquity.<br />
<br />
'''Expected results:''' Ubiquity bug free and running with Qt 5<br />
<br />
'''Knowledge Prerequisite:''' Python, PyQt<br />
<br />
'''Mentor:''' Jonathan Riddell<br />
<br />
<br />
=== Calamares ===<br />
<br />
[http://calamares.io/about/ Calamares] is a distribution-independent installer framework ([https://github.com/calamares/calamares/ code]). Calamares is participating to Google Summer of Code with KDE as umbrella organization. We are a young project, we are developing quickly, we are working with state of the art technologies (C++11, Qt 5, KDE Frameworks 5, Boost.Python) and we are solving exciting problems.<br />
<br />
Calamares is already shipped or is about to be shipped as the default system installer for several Linux distributions, including KaOS, BBQLinux, Fedora KDE, Manjaro, Netrunner Rolling, OpenMandriva, Tanglu, and others.<br />
<br />
See [http://teom.org/blog/kde/how-to-write-a-kick-ass-proposal-for-google-summer-of-code/ this post] for instructions on how to structure your Google Summer of Code proposal for Calamares.<br />
<br />
==== Project: Python interface refactor + Python view modules ====<br />
<br />
'''Brief explanation:''' Calamares is just a job executor at its core, and Calamares jobs are provided by Calamares modules. Installer pages are also provided by Calamares modules. These modules can currently be written in C++11 (as Qt plugins) or Python. The Python interface *works*, but it is slightly different from the C++ one, and it only supports jobs, not installer pages.<br />
This Google Summer of Code project is one of several that start with the same initial subtask, and then branch out in different directions.<br />
<br />
0) Refactor the Python interface so that writing a job module is not just implementing a function that expects globals, but rather inheriting from Calamares::Job or a wrapper thereof. Port all the Python modules to this updated interface. PythonQt 3.0 has just been released with support for Qt 5, so this is an option too, as a replacement for Boost.Python.<br />
<br />
1) Further improve the Python interface to allow writing view modules (i.e. installer pages) in Python. The student should do some research on the strengths and weaknesses of different approaches and produce a detailed action plan on what to wrap, how to wrap it, and which technologies to use to achieve said goals.<br />
<br />
Once both subtasks are complete there are various related tasks to be done. Drop into #calamares to say hi and discuss your proposal.<br />
<br />
'''Expected results:''' Equivalence between the Python and C++ module interfaces, for both job modules and view modules.<br />
<br />
'''Knowledge Prerequisite:''' At least some C++ experience is required; experience with CMake, Python, Boost.Python and other language binding solutions (PyQt, SWIG...) is a plus.<br />
<br />
'''Mentor:''' Teo Mrnjavac <teo@kde.org>, teo- on Freenode<br />
<br />
==== Project: Python interface refactor + Ruby modules interface ====<br />
<br />
'''Brief explanation:''' Calamares is just a job executor at its core, and Calamares jobs are provided by Calamares modules. Installer pages are also provided by Calamares modules. These modules can currently be written in C++11 (as Qt plugins) or Python. The Python interface *works*, but it is slightly different from the C++ one, and it only supports jobs, not installer pages.<br />
This Google Summer of Code project is one of several that start with the same initial subtask, and then branch out in different directions.<br />
<br />
0) Refactor the Python interface so that writing a job module is not just implementing a function that expects globals, but rather inheriting from Calamares::Job or a wrapper thereof. Port all the Python modules to this updated interface. PythonQt 3.0 has just been released with support for Qt 5, so this is an option too, as a replacement for Boost.Python.<br />
<br />
1) After completing subtask 0 for Python modules, achieve the same level of support for Ruby. The student should research technologies such as SWIG, RubyInline, FFI and Rice and produce a detailed action plan on how to deliver a Ruby interface for Calamares job modules. The latter (Rice) seems to be the most promising for the kind of embedding we need and most similar to Boost.Python, but this must be further ascertained. Packaging and deployment should also be taken into account.<br />
<br />
Once both subtasks are complete there are various related tasks to be done. Drop into #calamares to say hi and discuss your proposal.<br />
<br />
'''Expected results:''' Equivalence between the Python, Ruby and C++ job module interfaces.<br />
<br />
'''Knowledge Prerequisite:''' At least some C++ experience is required; experience with CMake, Ruby, Python, Boost.Python and other language binding solutions (PyQt, SWIG...) is a plus.<br />
<br />
'''Mentor:''' Teo Mrnjavac <teo@kde.org>, teo- on Freenode; Rohan Garg <rohan@kde.org>, shadeslayer on Freenode<br />
<br />
==== Project: Python interface refactor + Python testing mechanism ====<br />
<br />
'''Brief explanation:''' Calamares is just a job executor at its core, and Calamares jobs are provided by Calamares modules. Installer pages are also provided by Calamares modules. These modules can currently be written in C++11 (as Qt plugins) or Python. The Python interface *works*, but it is slightly different from the C++ one, and it only supports jobs, not installer pages.<br />
This Google Summer of Code project is one of several that start with the same initial subtask, and then branch out in different directions.<br />
<br />
0) Refactor the Python interface so that writing a job module is not just implementing a function that expects globals, but rather inheriting from Calamares::Job or a wrapper thereof. Port all the Python modules to this updated interface. PythonQt 3.0 has just been released with support for Qt 5, so this is an option too, as a replacement for Boost.Python.<br />
<br />
1) Our Python testing facilities are currently limited to a single script (src/modules/testmodule.py). The student should present an action plan for a more comprehensive testing mechanism, which may or may not be based on testmodule.py, and may or may not involve libcalamares instead. This testing mechanism could further be integrated with our [http://calamares.io/ci/ Jenkins continuous integration system].<br />
<br />
Once both subtasks are complete there are various related tasks to be done. Drop into #calamares to say hi and discuss your proposal.<br />
<br />
'''Expected results:''' Equivalence between the Python and C++ job module interfaces, and a comprehensive testing mechanism for Python job modules.<br />
<br />
'''Knowledge Prerequisite:''' At least some C++ and Python experience is required; experience with CMake, Boost.Python and software testing is a plus.<br />
<br />
'''Mentor:''' Teo Mrnjavac <teo@kde.org>, teo- on Freenode<br />
<br />
==== Project: Debian installer support ====<br />
<br />
'''Brief explanation:''' Calamares is just a job executor at its core, and Calamares jobs are provided by Calamares modules. Some of these modules are common for most Linux distributions, and some might be heavily distribution-specific.<br />
<br />
Calamares is already capable of installing a Debian-based system, simply by unpacking a squashfs image like most other distributions, but this is less than ideal: Debian already provides a sophisticated install system (debian-installer), and Calamares should take advantage of it.<br />
<br />
The student should propose a detailed action plan, with the ultimate deliverable being one or more job modules that implement a system install procedure based on debian-installer. Additional changes to the user interface (view modules) may or may not be needed for this, depending on the feature set proposed by the student. From a top-down point of view, Calamares should behave like a debian-installer frontend, not unlike Ubiquity, but without compromising its distribution-agnostic design.<br />
<br />
Once all the milestones have been achieved there are various related tasks to be done and bugs to be fixed. Drop into #calamares to say hi and discuss your proposal.<br />
<br />
'''Expected results:''' Calamares should be able to install a Debian based system using debian-installer as backend.<br />
<br />
'''Knowledge Prerequisite:''' The student should have experience with a Debian based distribution and C++; experience with Python, debian-installer and Debian packaging is a plus.<br />
<br />
'''Mentors:''' Rohan Garg <rohan@kde.org>, shadeslayer on Freenode; Teo Mrnjavac <teo@kde.org>, teo- on Freenode<br />
<br />
==== Project: The Ultimate Calamares user experience ====<br />
<br />
'''Brief explanation:''' Design and development of Calamares started in June 2014, with deliverables as early as Fall 2014, so some hard choices had to be made in order to ship quickly. While Calamares doesn't look intensely unpleasant when compared to some other system installers, it is not a triumph of user experience design either.<br />
<br />
The KDE Visual Design Group has already produced [https://community.kde.org/KDE_Visual_Design_Group/Calamares_Design_Project a design for Calamares] in agreement with the Calamares team. It is now time to implement this design.<br />
<br />
The student should propose a detailed action plan, with the ultimate deliverable being a complete visual overhaul of Calamares, including libcalamaresui and essential view modules. Intermediate deliverables must be listed in the proposal, with as much granularity as possible. The implementation should not deviate from the KDE VDG's design unless otherwise discussed, and during the coding season the student is expected to closely cooperate with both the Calamares team and the KDE VDG.<br />
<br />
Once all the milestones have been achieved there are various related tasks to be done and bugs to be fixed. Drop into #calamares to say hi and discuss your proposal.<br />
<br />
'''Attention''': This is a '''very challenging''' task, somewhat more demanding than the other ones we offer, and suitable for more experienced students. First time students are encouraged to consider our Python, Ruby or Debian tasks too. Exceptionally for this project we are requiring a '''qualification task''' to be completed by the prospective student. This qualification task should be delivered as a patch against master and sent to the mentor (Teo Mrnjavac <teo@kde.org>) ''before'' submitting a proposal for this project idea through the Google Summer of Code web application. Applicants that have not submitted a qualification task for this project will not be considered. The qualification task is defined as follows: '''implement the KDE VDG's design for the Users page (the Calamares module "users")'''. The webcam picture feature does not have to be implemented, but the avatar chooser is required. See [https://dl.dropboxusercontent.com/u/6631774/CalaUsersPageDesign.png this mockup].<br />
<br />
'''Expected results:''' Calamares should look and feel as designed by the KDE Visual Design Group.<br />
<br />
'''Knowledge Prerequisite:''' The student should have experience with Qt and C++; QML experience is a big plus.<br />
<br />
'''Mentors:''' Teo Mrnjavac <teo@kde.org>, teo- on Freenode<br />
<br />
=== Kopete ===<br />
<br />
[https://kopete.kde.org Kopete] is an instant messenger supporting AIM, Bonjour, Gadu-Gadu, GroupWise, ICQ, Jabber (XMPP, Google Talk, Facebook, ...), Meanwhile, QQ, Skype, Windows Live Messenger, WinPopup, Yahoo and more. It is designed to be a flexible and extensible multi-protocol system suitable for personal and enterprise use.<br />
<br />
==== Project: Better history plugin ====<br />
<br />
'''Brief explanation:''' History plugin is responsible for archiving chat history and also searching for old chat messages in archive. Currently Kopete has two history plugins: one which stores data to XML files and another one which stores data to SQLite database. Both plugins have some diffetent limitations like slow speed, bad search support, bad support for HTML messages, bad support for multiuser chat... This project aims to fix existing history plugin(s) or designing & implementing new one.<br />
<br />
'''Expected results:''' Working fast chat history plugin with support for handling HTML messages, multichat messages, ability to search for messages in history, import/export feature (importing from services like googletalk/facebook can be great too), ...<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt, XML or SQLite (or any other data storage usefull for chat messages)<br />
<br />
'''Mentor:''' Pali Rohár <pali.rohar@gmail.com>, Pali on #kopete<br />
<br />
'''Co-Mentor:''' Kaushik Saurabh <roideuniverse@gmail.com>, roide on #kopete<br />
<br />
'''Mailing list:''' kopete-devel@kde.org (archive at: [http://lists.kde.org/?l=kopete-devel&r=1&w=2 lists.kde.org])<br />
<br />
==== Project: Jabber message archive ====<br />
<br />
'''Brief explanation:''' When you use more jabber clients and you want to have full chat history in all clients, you need to synchronize message history between all clients. To make it easier for different jabber clients, there is jabber protocol extension for storing history directly on jabber servers which allows clients to download (missing) messages:<br />
<br />
XEP-0136: Message Archiving<br />
<br />
XEP-0313: Message Archive Management<br />
<br />
'''Expected results:''' Working support for XEP-0136 or XEP-0313<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt, Jabber protocol<br />
<br />
'''Mentor:''' Pali Rohár <pali.rohar@gmail.com>, Pali on #kopete<br />
<br />
'''Mailing list:''' kopete-devel@kde.org (archive at: [http://lists.kde.org/?l=kopete-devel&r=1&w=2 lists.kde.org])<br />
<br />
==== Project: PGP plugin ====<br />
<br />
'''Brief explanation:''' Kopete has plugin which can sign or encrypt outgoing messages using GPG. It can also verify signature and decrypt incoming messages. This plugin is old, uses private kdepim library and needs fixing. It is hard to compile and use it. For this project I would except fixing this plugin to work again or writing new PGP plugin from scratch.<br />
<br />
'''Expected results:''' Working support for PGP in Kopete<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt, GPG<br />
<br />
'''Mentor:''' Pali Rohár <pali.rohar@gmail.com>, Pali on #kopete<br />
<br />
'''Mailing list:''' kopete-devel@kde.org (archive at: [http://lists.kde.org/?l=kopete-devel&r=1&w=2 lists.kde.org])<br />
<br />
==== Project: IRC protocol ====<br />
<br />
'''Brief explanation:''' Kopete KDE3 version had plugin for IRC protocol. Porting that IRC plugin to new KDE versions was never finished and Kopete does not have working support for IRC yet.<br />
<br />
'''Expected results:''' Restore IRC protocol into Kopete<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt, IRC protocol<br />
<br />
'''Mentor:''' Pali Rohár <pali.rohar@gmail.com>, Pali on #kopete<br />
<br />
'''Mailing list:''' kopete-devel@kde.org (archive at: [http://lists.kde.org/?l=kopete-devel&r=1&w=2 lists.kde.org])</div>Shantanu Tusharhttps://community.kde.org/index.php?title=GSoC/2015/Ideas&diff=41857GSoC/2015/Ideas2015-03-13T18:06:25Z<p>Shantanu Tushar: fix copy-paste fail</p>
<hr />
<div>[[File:GoogleSummer 2015logo.jpg |200px|thumb|right|GSoC 2015 logo]]<br />
See also: [[../../|GSoc Instructions]], [[../../2014/Ideas|Last year ideas]]<br />
<br />
== Guidelines ==<br />
<br />
=== Information for Students ===<br />
<br />
These ideas were contributed by our developers and users. They are sometimes vague or incomplete. If you wish to submit a proposal based on these ideas, you may wish to contact the developers and find out more about the particular suggestion you're looking at.<br />
<br />
Being accepted as a Google Summer of Code student is quite competitive. Accepted students typically have thoroughly researched the technologies of their proposed project and have been in frequent contact with potential mentors. Simply copying and pasting an idea here will not work. On the other hand, creating a completely new idea without first consulting potential mentors is unlikely to work out.<br />
<br />
When writing your proposal or asking for help from the general KDE community don't assume people are familiar with the ideas here. KDE is really big!<br />
<br />
If there is no specific contact given you can ask questions on the general KDE development list kde-devel@kde.org. See [http://www.kde.org/mailinglists/ the KDE mailing lists page] for information on available mailing lists and how to subscribe.<br />
<br />
=== Adding a Proposal ===<br />
<br />
{{Note|Follow the template of other proposals!}}<br />
<br />
==== Project: ====<br />
<br />
'''Brief explanation:'''<br />
<br />
'''Expected results:'''<br />
<br />
'''Knowledge Prerequisite:'''<br />
<br />
'''Mentor:'''<br />
<br />
When adding an idea to this section, please try to include the following data:<br />
<br />
:*if the application is not widely known, a description of what it does and where its code lives<br />
:*a brief explanation<br />
:*the expected results<br />
:*pre-requisites for working on your project<br />
:*if applicable, links to more information or discussions<br />
:*mailing list or IRC channel for your application/library/module<br />
:*your name and email address for contact (if you're willing to be a mentor)<br />
<br />
If you are not a developer but have a good idea for a proposal, get in contact with relevant developers first.<br />
<br />
<br />
==Ideas==<br />
<br />
===Your Own Idea ===<br />
<br />
==== Project: Something that you're totally excited about ====<br />
<br />
'''Brief explanation:''' Do you have an awesome idea you want to work on with KDE but that is not among the ideas below? That's cool. We love that! But please do us a favor: Get in touch with a mentor early on and make sure your project is realistic and within the scope of KDE. That will spare you and us a lot of frustration.<br />
<br />
'''Expected results:''' Something you and KDE loves<br />
<br />
'''Knowledge Prerequisite:''' Probably C++ and Qt but depends on your project<br />
<br />
'''Mentor:''' Try to see who in KDE is interested in what you want to work on and approach them. If you are unsure you can always ask in #kde-soc on Freenode IRC.<br />
<br />
===Plasma===<br />
<br />
==== Project: Port various KDE4 Plasmoids to Plasma 5 ====<br />
<br />
'''Brief explanation:''' When we ported from Plasma 4 to Plasma 5 some useful Plasmoids ended up not being initially ported. We want the more important existing applets to continue to run which . Students should select a few Plasmoids which they deem useful for their proposal along with some innovative ideas for improvements. Students should show knowledge of the level of work related. <br />
<br />
'''Expected results:''' A few fully working plasmoids, polished and better than before.<br />
<br />
'''Knowledge Prerequisite:''' QML skills. Ideally some Plasmoid experience<br />
<br />
'''Mentor:''' Sebastian Kugler with help of the Plasma team.<br />
<br />
==== Project: Port KSystemLog to use journald as a backend ====<br />
<br />
'''Brief explanation:''' KSystemLog is a tool for viewing log files. This has slowly started to fail as log files moved in various distributions. Journald provides a common interface to query programatically system and user logs which will fix the main issue. Applications should impress me with their ideas utilising the available features. <br />
<br />
'''Expected results:''' A ported to frameworks journald powered log viewer. <br />
<br />
'''Knowledge Prerequisite:''' C++, Qt. <br />
<br />
'''Mentor:''' David Edmundson with help of the Plasma team.<br />
<br />
==== Project: Port various Systemsettings KCMs to QML ====<br />
<br />
'''Brief explanation:''' The codebase of the systemsettings modules is old and needs a redesign both code-wise and UI-wise. Students should select a few KCMs and propose how to port them to the new QML/C++ hybrid with some ideas on the improvement of their UI.<br />
<br />
'''Expected results:''' A few fully working KCM modules ported to a mix of QML and C++ that still load correctly in Systemsettings and KCMshell.<br />
<br />
'''Knowledge Prerequisite:''' QML and C++ skills.<br />
<br />
'''Mentor:''' Marco Martin with help of the Plasma team.<br />
<br />
==== Project: Intelligent TV Series/Movies grouping for Plasma Media Center ====<br />
<br />
'''Brief explanation:''' A lot of people use Media Centers to watch TV Series and Movies on their media devices. A very common headache is to organize media collections of TV series and to perform actions like "Play next episode". This project aims at using multiple factors (like filenames, file paths, and others) to figure out what media files are part of a common TV series or Movie collection.<br />
<br />
'''Expected results:''' A new backend for Plasma Media Center which scans the user's media library and automatically shows a list of TV Series and Movie collections the user has. The feature should be able to function to an acceptable level without using online services. However you may use online services to augment the algorithms/improve the results.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt/QML. Knowledge of elementary vector mathematics and linear algebra is a plus<br />
<br />
'''Mentor:''' Shantanu Tushar < shantanu kde org > and Vinay S Rao < sr.vinay gmail ><br />
<br />
=== Various Places ===<br />
==== Project: package install for 3rd party applications ====<br />
<br />
'''Brief explanation:''' KDE software needs to install software in various places. Investigate the best way to do this which is probably to use packagekit. Then implement this in the places which need it.<br />
<br />
'''Expected results:''' Work out best way for 3rd party programs to query and install packages. Then adapt the following pieces of software to install the packages they need:<br />
* dolphin file share install samba<br />
* kcm access to install orca<br />
* gwenview to install kipi-plugins<br />
* kcm locale should install kde-l10n-xx<br />
* kickoff to implement package install like kicker?<br />
all this should be done in a way which works for the major distributions. <br />
<br />
Appstream could be used to find package names to install although support for this in Ubuntu is incomplete.<br />
<br />
'''Knowledge Prerequisite:''' C++<br />
<br />
'''Mentor:''' Jonathan Riddell (Riddell in #plasma on freenode IRC) with help of the Plasma team.<br />
<br />
=== Plasma and Gluon ===<br />
<br />
==== Project: Extend gamingFreedom.org framework to be more generic ====<br />
<br />
'''Brief explanation:''' Over the last couple of years, the gamingFreedom.org website and server side components have been created, which implement Open Collaboration Services (OCS) in a generic and reusable form. We are now at a point where it would make sense to attempt to use this for further purposes, rather than only for gamingFreedom.org. Specifically, a new implementation of the server component employed for hosting Plasma related content is needed, and a website for presenting this content on the web.<br />
<br />
'''Expected results:''' A new website based on gamingFreedom.org's OCS client libraries, and a server implementation for hosting Plasma content.<br />
<br />
'''Knowledge Prerequisite:''' PHP for the client and server code<br />
<br />
'''Mentor:''' Claudio Desideri and Dan Leinir Turthra Jensen with help of the Plasma team.<br />
<br />
=== Kdenlive ===<br />
<br />
Kdenlive is an intuitive and powerful multi-track video editor, including most recent video technologies. Our software is completely free, as defined by the GNU foundation. Using Kdenlive is investing in a community driven project, which aims to establish relationships between people in order to built the best video tools.<br />
<br />
* [http://www.kdenlive.org Kdenlive project web site]<br />
* [http://community.kde.org/Kdenlive Kdenlive wiki]<br />
* [https://mail.kde.org/mailman/listinfo/kdenlive Mailinglist]<br />
* [http://webchat.freenode.net/?channels=kdenlive #kdenlive IRC channel on Freenode]<br />
<br />
==== Project: Add support for new Animation capabilities ====<br />
<br />
'''Brief explanation:''' MLT, the media frameworks we use for rendering, has recently added a new [http://mltframework.blogspot.com/2013/06/v090-released-with-new-property.html property animation] to its objects. This allows much simpler, smoother and more general animations than the traditional keyframes technology. We then need new widgets to edit these properties, and eventually evolve our on-monitor interactions.<br />
<br />
'''Expected results:''' At the end of the project, we should be able to add and graphically adjust these animation parameters through controls in the effects stack panel, and bonus on the monitor.<br />
<br />
'''Knowledge Prerequisite:''' In the end you will assemble QtWidgets and interact with MLT data through C++. So you should be at ease with C++ and Qt (no need to be an expert), and have a look to the MLT manual page about animation.<br />
<br />
'''Mentor:''' Vincent Pinon with help of the Kdenlive team.<br />
<br />
==== Project: Redesign titler using WebVFX ====<br />
<br />
'''Brief explanation:''' Our titler, the tool we use to add text and drawing objects over the video, relies on a home made module added to the MLT framework. Our module is limited in features, quite slow to render, and demands work to maintain. MLT has since then been plugged into WebVFX engine, which provides infinite possibilities through web technologies, and it is certainly more robust. The goal is then to port our titler to this engine, then maybe evolve the interface to offer new possibilities.<br />
<br />
'''Expected results:''' At the end of the project, the titler should rely only on MLT WebVFX module. Bonus we should be able to add and easily edit more objects types.<br />
<br />
'''Knowledge Prerequisite:''' First step is to translate our XML to Web formats inside the C++ code, so you should understand those dialects. For the UI rework, you would then work with Qt, in either C++ or QML.<br />
<br />
'''Mentor:''' Vincent Pinon with help of the Kdenlive team.<br />
<br />
==== Project: add import/export filters for video editors exchange formats ====<br />
<br />
'''Brief explanation:''' To reduce the barrier to switch to Kdenlive, users should be able to import and export with commercial editing softwares (at least partially). Some scripts already exist to crudely parse EDL or AAF formats, the goal is to do it cleanly integrated in Kdenlive.<br />
<br />
'''Expected results:''' At the end of the project, we should be able to exchange projects with one or more commercial tools. Effects and transitions will probably be limited, but timeline construction should be transferable.<br />
<br />
'''Knowledge Prerequisite:''' The work will consist in manipulating XML data with Qt (C++), so you should understand those dialects.<br />
<br />
'''Mentor:''' Vincent Pinon with help of the Kdenlive team.<br />
<br />
==== Project: make Kdenlive work on Windows and OSX ====<br />
<br />
'''Brief explanation:''' All the frameworks Kdenlive relies on are working on other platforms, and Kdenlive used run on those long time ago. The goal here is to setup build environments on one or two other OS's, and fix the things that prevent Kdenlive to work.<br />
<br />
'''Expected results:''' At the end of the project, Kdenlive should work reliably on one or two commercial OS's.<br />
<br />
'''Knowledge Prerequisite:''' Setting up and running builds, fixing things in C++, CMake, dependencies.<br />
<br />
'''Mentor:''' Vincent Pinon with help of the Kdenlive and KDE porting teams.<br />
<br />
=== Amarok ===<br />
<br />
Amarok is a Music player that helps you organize and rediscover your music. <br />
<br />
* [http://amarok.kde.org Amarok project web site]<br />
* [http://community.kde.org/Amarok Amarok wiki]<br />
* [https://mail.kde.org/mailman/listinfo/amarok-devel Mailinglist]<br />
* [https://plus.google.com/+amarok Google+ page]<br />
* [http://webchat.freenode.net/?channels=amarok #amarok IRC channel on Freenode]<br />
<br />
==== Project: Port Amarok to Qt5/Kf5/Plasma5 ====<br />
<br />
'''Brief explanation:''' Currently Amarok still depends on kdelibs 4.x and Qt4.<br />
<br />
'''Expected results:''' Amarok should compile with Qt 5.x, kdelibs4 dependencies should be replaced with kf5. Port most existing plasma widgets of the Context View to Plasma 5 (at least the most important should be ported). The default system themes should apply to Amarok flawlessly. A very important part of this project is testing the port and adapting the unit tests.<br />
<br />
'''Knowledge Prerequisite:''' good knowledge of C++/Qt, ideally being familiar with kf 5 and Plasma 5. The student should have some basic knowledge of the Amarok project and its functions as well as its architecture. All relevant information about Amarok, Qt5, kf5 and Plasma 5 can be found online, every suitable applicant should be able to find this documentation on their own.<br />
<br />
'''Mentor:''' To be determined. All discussions about the project should be held on the mailinglist and/or on IRC<br />
<br />
===digiKam===<br />
<br />
digiKam is an advanced digital photo management application for Linux, Windows, and Mac-OSX.<br />
<br />
* [http://www.digikam.org digiKam project web site]<br />
* [http://www.exiv2.org Exiv2 project web site]<br />
* [https://techbase.kde.org/Projects/Digikam/CodingSprint2014 digiKam port to KF5 status]<br />
* [https://mail.kde.org/mailman/listinfo/digikam-devel Mailinglist]<br />
* [https://plus.google.com/+digikam Google+ page]<br />
* [http://webchat.freenode.net/?channels=digikam #digikam IRC channel on Freenode]<br />
<br />
==== Project: Re-write database KIO-slaves as pure Qt5 using multithreading ====<br />
<br />
'''Brief explanation:''' Originally, KIO-Slaves have been implemented to run database queries in a separated process to prevent problem with SQlite. Since SQlite support re-entrancy and queries from separated threads, digiKam KIO-slaves used to process complex and long database queries can be re-written as core implementation using Qt thread API. This will improve digiKam availability in time when system is updated in low-level, and permit to adjust finely CPU cores assigned to database process.<br />
<br />
'''Dependencies:''' : digiKam core from "framework" branch (KF5) <br />
<br />
'''Links:''' [https://www.sqlite.org/threadsafe.html Using Sqlite in multi-threaded application], [https://bugs.kde.org/show_bug.cgi?id=146557 Bug #146557]<br />
<br />
'''Knowledge Prerequisite:''' C/C++, Qt, database, multi-threading<br />
<br />
'''Expected results:''' Identify all parts of digiKam core which query database through KIO-slaves mechanism, factorize code in same interface and write a multi-threaded wrapper to run SQlite queries. Write test code to check quickly if database core implementation changes don't affect wrapper functionality. Note : digiKam use internally URL + XML formating to pass data to KIO-slaves and this not be changed.<br />
<br />
'''Difficulty:''' high<br />
<br />
'''Lead Mentor:''' Gilles Caulier <caulier dot gilles at gmail dot com><br />
<br />
==== Project: Advanced Metadata HUB ====<br />
<br />
'''Brief explanation:''' digiKam has already some options to manage workflow between image metadata and database, through the setup/metadata configuration panel. The goal of this project is to write a more advance setup to control finely the most important metadata field in order to read from image and populate database and vis versa. The list of metadata to drive must be easily extensible and configurable. Also, the metadata workflow to synchronize image with database must be more flexible and must provide a way to synchronize files at end of digiKam session and not only in real time (typical case : editing image tags to write in images). <br />
<br />
'''Dependencies:''' : digiKam core and libkexiv2 from "framework" branch (KF5) <br />
<br />
'''Links:''' [https://bugs.kde.org/buglist.cgi?bug_status=UNCONFIRMED&bug_status=CONFIRMED&bug_status=ASSIGNED&bug_status=REOPENED&component=Metadata&list_id=1205997&product=digikam&query_format=advanced&short_desc=HUB&short_desc_type=allwordssubstr Bugs list from bugzilla]<br />
<br />
'''Knowledge Prerequisite:''' C/C++, Qt, database, multi-threading<br />
<br />
'''Expected results:''' Create metadata hub widget for settings panel, adjust current hub and image scanner implementations, add test code.<br />
<br />
'''Difficulty:''' high<br />
<br />
'''Lead Mentor:''' Gilles Caulier <caulier dot gilles at gmail dot com><br />
<br />
==== Project: Add WebP and WebM support ====<br />
<br />
'''Brief explanation:''' WebP/WebM is new wavelets based image/video format from Google, based on RIFF/MKV container. This format become more popular on the Web and both can be used through an open-source library. We need to support these formats as editable in digiKam (WebP) and manageable by database mechanism through metadata (WebP and WebM).<br />
<br />
'''Dependencies:''' : digiKam core and libkexiv2 from "framework" branch (KF5), Exiv2 library<br />
<br />
'''Links:''' [http://en.wikipedia.org/wiki/WebM WebM format], [http://en.wikipedia.org/wiki/WebP WebP format]<br />
<br />
'''Knowledge Prerequisite:''' C/C++, Qt, Metadata<br />
<br />
'''Expected results:''' Patch Exiv2 library to support both formats in read/write meta-data mode and add optional WebP support in digiKam core to be able to edit images (read/write image contents in 16 bits color depth). Write test code to check new functionality in time.<br />
<br />
'''Difficulty:''' high<br />
<br />
'''Mentors:''' Gilles Caulier <caulier dot gilles at gmail dot com> + Someone from Exiv2 team<br />
<br />
==== Project: Factorize and port to KF5 all web service Import/Export KIPI tools ====<br />
<br />
'''Brief explanation:''' All tools dedicated to import or export items from KIPI host applications to web services as Flickr, GDrive, Dropbox, Facebook, Picasa, etc... need to be factored and ported to KF5/Qt5. Factorization include to make common widgets (settings, GUI layout, rules, etc), and background processing to prevents duplicate code. Also, in order to reduce KIPI host application time loading, the number of tools must be limited. Tools must be grouped by categories, as Social Networks, Cloud Service, Photo Hosting, etc...<br />
<br />
'''Dependencies:''' : digiKam KIPI interface, KIPI Plugins <br />
<br />
'''Bugzilla entries:''' [https://bugs.kde.org/show_bug.cgi?id=221704 221704]<br />
<br />
'''Knowledge Prerequisite:''' C/C++, Qt/KDE, GUI<br />
<br />
'''Expected results:''' KIPI web services tools ported to KF5 and running with digiKam 5.0.0.<br />
<br />
'''Difficulty:''' high<br />
<br />
'''Lead Mentor:''' Gilles Caulier <caulier dot gilles at gmail dot com><br />
<br />
===Marble===<br />
Marble is a virtual globe and world atlas — your swiss army knife for maps. Find your way and explore the world!<br />
<br />
* [http://marble.kde.org/ Marble project website]<br />
* [https://mail.kde.org/mailman/listinfo/marble-devel Mailinglist]<br />
* [http://webchat.freenode.net/?channels=marble #marble IRC channel on Freenode]<br />
<br />
==== Project: Starting to edit OpenStreetMap Data ====<br />
<br />
'''Brief explanation:''' During the last Google Summer of Code 2014 Cruceru Calin worked on an Edit mode for Marble. Right now it's possible to draw elementary shapes and features (Polygons/Polylines, Placemarks, GroundOverlays, etc.). These geometry primitives can be saved as KML files and there is some experimental OSM support already.<br />
This project will be about extending the current Edit Maps mode. Focus will be especially towards enabling advanced editing that allows for more sophisticated drawing capabilities but also for tagging and other features that are required for OSM support. A special focus might also be on refactoring the existing code base where it's useful.<br />
<br />
<br />
'''Expected results:''' Reliable and useful means to create and edit OSM files using Marble.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt,<br />
<br />
'''Mentors:''' Torsten Rahn, Cruceru Calin, Dennis Nienhüser<br />
<br />
==== Project: Turning Marble into a small GIS system ====<br />
<br />
'''Brief explanation:''' During the last Google Summer of Code 2014 Cruceru Calin worked on an Edit mode ("Annotation Plugin") for Marble. Right now it's possible to draw elementary shapes and features (Polygons/Polylines, Placemarks, GroundOverlays, etc.). These geometry primitives can be saved as KML files.<br />
During this project we'd like to extend the feature set towards classical requirements of a GIS system. Focus will be especially towards enabling advanced editing that allows for more sophisticated drawing capabilities but also for tagging and other features that are required for a GIS Editor. Depending on the experience of the student we might also focus on other topics like Data analysis or PostGIS support. <br />
<br />
'''Expected results:''' Adding capabilities to Marble that allow for using it for simple tasks that people would usually do using Quantum-GIS.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt<br />
<br />
'''Mentors:''' Torsten Rahn, Cruceru Calin, Dennis Nienhüser<br />
<br />
==== Project: Statistical Data Visualization and Extending Marble Game ====<br />
<br />
'''Brief explanation:''' During the last Google Summer of Code 2014 Abhinav Gangwar created the "Marble Game". This project is about extending Marble's library in a way so that it's easy to display statistical data on maps in a color coded way. The Marble Game should be further improved and it should be possible to make use of the Statistics feature.<br />
<br />
'''Expected results:''' Marble provides a tool that allows to visualize a ready-made dataset of statistical data in a color-coded way. The Marble Game should also be extended to make use of that feature. <br />
<br />
'''Knowledge Prerequisite:''' C++, Qt<br />
<br />
'''Mentors:''' Torsten Rahn, Abhinav Gangwar, Dennis Nienhüser<br />
<br />
=== KStars ===<br />
<br />
KStars is a very powerful tool for anyone interested in astronomy. It is part of the KDE Edu suite.<br />
<br />
==== Project: Ekos Scheduler ====<br />
<br />
'''Brief explanation:''' [http://www.indilib.org/about/ekos.html Ekos] is an advanced astrophotography tool for Linux. It utilizes [http://www.indilib.org INDI] for device control. With Ekos, the user can use the telescope, CCD, and other equipment to perform Astrophotography tasks. However, the user has to be present to configure the options and to command the actions to perform all the astrophotography related tasks, and hence a scheduler is required to automate observations to be constrained within certain limitations such as required minimum angular separation from the moon, whether conditions...etc. Furthermore, the observations should be triggered when certain conditions are met such as observation time, object's altitude...etc. The prospective student is expected to develop a ''Simple'' [http://indilib.org/forum/general/560-simple-ekos-schedular.html Ekos scheduler] to trigger observation runs when certain conditions are met and when the limitations are required.<br />
<br />
'''Expected results:''' Simple scheduler to automate astrophotography runs based on some conditions and within user-configurable limitations.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt, INDI<br />
<br />
'''Mentors:''' Jasem Mutlaq (IRC: knro)<br />
<br />
The student will need to:<br />
<br />
* Look at the relevant code, and propose a tractable plan for implementing some of the improvements within the GSoC timeframe.<br />
* Implement some of the improvements, producing production-ready code that can be included in the next release of KStars after GSoC 2015.<br />
<br />
==== Project: Constellation art ====<br />
<br />
'''Brief explanation:''' KStars currently draws constellation lines, names, and boundaries, but constellation art is missing. The student is expected to study KStars API and develop a new SkyComponent to superimpose the constellation artwork unto the sky map while re-working other components in KStars to support this. The structure must support multiple sky cultures. The artwork itself must be available under a permissible license. New constellation artwork should be available for download using the KNewStuff framework. The user should be able to select the sky culture.<br />
<br />
'''Expected results:''' High quality artwork for Western constellations in addition to one non-western constellation artwork that can be switched on/off in the sky map.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt<br />
<br />
'''Mentors:''' Jasem Mutlaq (IRC: knro)<br />
<br />
The student will need to:<br />
<br />
* Look at the relevant code, and propose a tractable plan for implementing some of the improvements within the GSoC timeframe.<br />
* Implement some of the improvements, producing production-ready code that can be included in the next release of KStars after GSoC 2015.<br />
<br />
==== Project: Fix our deep-sky data handling ====<br />
<br />
'''Brief explanation:''' Currently, KStars handles data from deep-sky object catalogues in an SQLite database. While this is working well, there are some more features we would like to have, and some that should be implemented in order to sanitize the deep-sky data handling, such as automatic cross-referencing of deep-sky objects across catalogs, organizing deep-sky data better in the database etc using Hierarchical Triangular Mesh, etc.<br />
<br />
More details here: http://techbase.kde.org/Projects/Edu/KStars/Better_deep-sky_handling<br />
<br />
'''Expected results:''' Some, or all of the improvements to deep-sky handling suggested above (or maybe even your own suggestions), implemented completely in solid, release-worthy code.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt, understanding of astronomical catalogues, some experience with data structures.<br />
<br />
'''Mentors:''' Rafal Kulaga (IRC: rkulaga)<br />
<br />
The student will need to:<br />
<br />
* Look at the relevant code, and propose a tractable plan for implementing some of the improvements within the GSoC timeframe.<br />
* Implement some of the improvements, producing production-ready code that can be included in the next release of KStars after GSoC 2015.<br />
<br />
PS: If all this looks daunting, that's because you have not (yet) talked to us. If you're really interested, get onto #kde-kstars and ping the mentors.<br />
<br />
==== Project: Propose your own project ====<br />
<br />
'''Brief explanation:''' If you have some interesting ideas about KStars that can be implemented within the GSoC timeframe, you are very welcome to propose them, because we seem to have run out of ideas.<br />
<br />
'''Mentors:''' Rafal Kulaga (IRC: rkulaga)<br />
<br />
=== KDE Edu ===<br />
<br />
==== Project: Integrate Cantor into LabPlot====<br />
[http://labplot.sourceforge.net/ LabPlot] is a KDE-application for interactive graphing and analysis of scientific data.<br />
<br />
'''Brief explanation:''' The integration is twofold:<br />
<br />
# currently, for the created plots LabPlot uses either the data provided by hand in a spreadseet or by using data imported from external ascii-files. By having Cantor within LabPlot it should be possible to access the data sets created in a computer algebra session (say Maxima) provided by Cantor. Cantor's session have to be integrated into LabPlot's model-view framework and have to be put onto the same foot as all the other objects managable in LabPlot (spreadsheet, worksheets etc.).<br />
# By calling a CAS-specific command for creating a 2D-plot in Cantor, Cantor creates an external process that renders the plot and embeds the result as a pixmap. Instead of such a static pixmap, LabPlot's plots should be embeded. This would provide high degree of control of the plot appearance as provided by LabPlot.<br />
<br />
'''Mentor:''' Alexander Semke<br />
<br />
==== Project: Integrate [http://en.wikipedia.org/wiki/VTK VTK] into LabPlot, investigate [http://en.wikipedia.org/wiki/Tulip_(software) Tulip] ====<br />
[http://labplot.sourceforge.net/ LabPlot] is a KDE-application for interactive graphing and analysis of scientific data.<br />
<br />
'''Brief explanation:'''<br />
# LabPlot lacks 3D-functionality. In the old KDE3-based LabPlot qwt3D was used for this that is not an option anymore. The task consists of the integration of [http://en.wikipedia.org/wiki/VTK VTK] -libs. Also, the relevant widgets for 3D-plot editting should be created in a manner similar for all the other objects available in LabPlot now.<br />
# Investigate whether it's reasonable to use LabPlot as a frontend (or to extend it to be a frontend) to the functionality provided by [http://en.wikipedia.org/wiki/Tulip_(software) Tulip] yes, how?<br />
<br />
'''Mentor:''' Alexander Semke<br />
<br />
==== Project: Port of GCompris in Qt Quick====<br />
<br />
[http://gcompris.net GCompris] is a an educational software suite comprising of numerous activities for children aged 2 to 10. Originaly written in Gtk+ it's development team decided to rewrite it from scratch in [http://qt-project.org/doc/qt-5/gettingstartedqml.html Qt Quick]. It has also been decided that this version will be integrated in KDE which is the reason of the project being here.<br />
<br />
'''Goals:''' <br />
# Porting several GCompris activities in Qt Quick. There is a page that tracks the [http://gcompris.net/wiki/Qt_Quick_Migration_status porting effort] that will help you select the activity set you are interested in.<br />
# Creating new activities. There is a [http://gcompris.net/wiki/Ideas_for_activities list of ideas] of activities that have been identified as something we would like to have. You can also propose original ideas not on the list.<br />
<br />
'''Knowledge Prerequisite:''' By the start of GSoC you should<br />
# Be interested in children education<br />
# Be familiar with GCompris concept and content<br />
# Basic knowledge in a programming language (a 1 year school course is enough)<br />
# Be able to build the Qt Quick version of GCompris<br />
<br />
'''Application guide:'''<br />
# Writing or porting an activity takes about the same time. The advantage of the porting is that the tuning, the graphishm and the sounds are already available. You can count 2 weeks of development for an activity.<br />
# To keep the work interesting it is recommended to propose a mix of porting some activities and creating new one, either from the idea list or from an original idea you come with.<br />
# You have to follow the [http://gcompris.net/wiki/An_exercise_for_new_contributors instructions here] and provide your exercise as a pull request.<br />
<br />
'''Mentor:''' Bruno Coudoin (IRC: bdoin #gcompris on freenode)<br />
<br />
=== Keyboard Layouts ===<br />
<br />
Keyboard layouts in KDE allow user to use multiple keyboard layouts and switch between them. It consists of keyboard configuration module (in System Settings), keyboard layout widget/applet, and keyboard layout daemon.<br />
<br />
==== Project: Integrating Input Methods with keyboard layout configuration ====<br />
<br />
'''Brief explanation:''' Input method and keyboard layout configuration are serving the same purpose - to allow users to type text in non-default language. Currently KDE has integrated system to configure keyboard layouts but IM need to be configured somewhere else. Also when IM is configured it takes over some functions of keyboard layout configuration. So it would be nice if we could have IM and keyboard layout configuration in one place.<br />
It seems that IBus has already gained community acceptance so this will be the target for integration into KDE keyboard module.<br />
<br />
'''Expected results:''' Keyboard configuration module in System settings will include IM configuration and it will be integrated with existing keyboard layout options.<br />
<br />
'''Knowledge Prerequisite:''' good knowledge of C++, development experience with Qt and KDE, understanding of Input Methods (IBus)<br />
<br />
=== KDevelop ===<br />
<br />
==== Project: Clang Integration ====<br />
<br />
'''Brief explanation:''' Finish the kdev-clang plugin to make it a usable replacement for the existing C++ plugin.<br />
<br />
'''Expected results:''' Find the still missing features from the KDevelop4's C++ support and port them over to kdev-clang, so it can become the mainstream C/C++ Solution<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt. Knowledge about Clang is helpful<br />
<br />
'''Mentor:''' Kevin Funk<br />
<br />
==== Project: Checker Framework ====<br />
<br />
'''Brief explanation:''' A generic framework should be created which provides the foundation for other plugins to report errors. <br />
<br />
'''Expected results:''' Right now we have the problems toolview but it is tightly coupled to the DUChain. This should be changed to use a separate item repository which stores the problems for a given path. The data stored would be: Path and range of where the issue is found, a short error message and optionally a long description. Furthermore, plugins might want to store additional info from which the problem could be fixed (compare to the 'add include path' or similar wizards we have already in the language framework).<br />
<br />
This framework should then be used to integrate various tools.<br />
<br />
First of all the existing language plugins should show the problems they find there.<br />
The existing playground plugins for krazy and cppcheck integration should reuse that framework<br />
any other linters could be integrated, such as jslint, pylint, clang-check, etc. pp.<br />
runtime checkers could be integrated, such as valgrind's memcheck, ptrcheck, helgrind, drd, ...<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt. Knowledge of debugging tools is helpful.<br />
<br />
'''Mentor:''' Milian Wolff<br />
<br />
==== Project: SVN Plugin Rewrite ====<br />
<br />
'''Brief explanation:''' Rewrite the SVN plugin to use the C-API directly.<br />
<br />
'''Expected results:''' The existing SVN plugin uses an outdated kdevsvncpp checkout internally which causes troubles, warnings and licensing issues. Port the plugin to either the C-API of svn or alternatively try to reuse code from current kdevsvn. The result should be a tested, working plugin for SVN integration without licensing issues nor compile time warnings about usage of deprecated API.<br />
<br />
'''Knowledge Prerequisite:''' C, C++, Qt, SVN<br />
<br />
'''Mentor:''' Milian Wolff<br />
<br />
==== Project: LLDB Support ====<br />
<br />
'''Brief explanation:''' Write a new plugin to support LLDB on KDevelop<br />
<br />
'''Expected results:''' Come up with a new kdevelop plugin so that LLDB can be used as a debugging solution, especially on Mac OS X and Windows, where gdb support is rather scarce.<br />
<br />
'''Knowledge Prerequisite:''' C, C++, Qt, debugging intrinsic problems<br />
<br />
'''Mentor:''' KDevelop team<br />
<br />
=== KDE PIM ===<br />
<br />
The KDE PIM community work on a set of libraries and applications for Personal Information Management, including email, calendaring, contacts, and feed aggregation.<br />
<br />
==== Project: OpenHolidays ====<br />
<br />
'''Brief explanation:''' The KHolidays library provides KDE applications with information on public holidays around the world, however the file format is very hard to use and maintain and the library features are very limited and restricted to Qt users. The goal of the OpenHolidays project is to develop a new open standard and data repository that can be used by any project that needs the data. See http://community.kde.org/KDE_PIM/KHolidays for more details.<br />
<br />
'''Expected results:''' Define the new JSON file format and port the existing data files to the new format. Develop a shared Qt-only library to parse the holiday files and provide access to them with a iCal style event-based api. Implement an Akonadi resource to access the data. Extended goals: Develop a JavaScript library to use the files. Develop a web site and web service at openholidays.org to provide online access to the data files.<br />
<br />
'''Knowledge Prerequisite:''' C++ and Qt for core goals, JavaScript and web services for extended goals.<br />
<br />
'''Mentor:''' John Layt and other KDE PIM community members.<br />
<br />
==== Project: QtQuick ToDo API / Plasmoid====<br />
<br />
'''Brief explanation:''' KDE PIM wants to make it's data accessible for applications which use QML to declare their user interfaces, e.g. applications using QtQuick. For that they need data handling objects that are accessible through QML, e.g. item models that have a mapping of string based role names to enum value based roles in C++, etc.<br />
<br />
'''Expected results:''' Define and implement a general QML API for accessing and creating Akonadis ToDo data. Write / Port a ToDo Plasmoid for Plasma Desktop or Plasma Active to show off the new API. Bonus: Port Kontact Touch Task to the new API instead of, or in addition to the Plasmoid.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt, QtQuick<br />
<br />
'''Possible Mentors:''' Kevin Krammer, and other KDE PIM community members<br />
<br />
=== Simon ===<br />
Simon is a speech recognition suite.<br />
<br />
[http://simon.kde.org Website] - [https://mail.kde.org/mailman/listinfo/kde-speech Mailing list] - IRC channel: #kde-speech on Freenode.<br />
<br />
==== Project: Streamline handling of various resources ====<br />
<br />
'''Brief explanation:''' Simon uses a multitude of different components: Scenarios, Base models, Shadow vocabulary, Language profiles, etc.<br />
<br />
While many of these components can be downloaded from within Simon, some can't and even for those that are better integrated, end-users still have to read additional documentation to know which components work together and which don't.<br />
<br />
The aim of this project is to bring the handling of these resources under a uniform and user-friendly interface.<br />
Specifically, the interface should resolve conflicts automatically and deduce an optimal default setup by itself (e.g. based on the system language and installed programs).<br />
<br />
'''Expected results:''' Much more user friendly setup.<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt<br />
<br />
'''Mentor:''' Peter Grasch <peter {+at+} grasch.net><br />
<br />
'''Resources:''' Some work (mostly brainstorming and UI design) was already conducted during Season of KDE 2013. Please contact me for details. This does not mean that this project is already assigned!<br />
<br />
=== Okular ===<br />
<br />
Okular is a Document Viewer. <br />
<br />
* [http://okular.kde.org Okular project web site]<br />
* [https://mail.kde.org/mailman/listinfo/okular-devel Mailinglist]<br />
* [http://webchat.freenode.net/?channels=okular #okular IRC channel on Freenode]<br />
<br />
==== Project: Better Accessibility for Okular ====<br />
'''Brief explanation:''' We should implement Qt accessibility APIs to make Okular usable by more users. This would allow blind people to read documents.<br />
<br />
'''Expected results:''' You should be able to "read" Okular documents using Orca or other "screen reading" software. As long as the document exposes the contents in text form, we can let assistive technology pick it up and present it to the user in a different way (for example non-textual). An important goal is to transfer as much of the structure of the document as possible, so that ideally the sematics (this is a heading, here is normal text, page number) are preserved. Finding well working PDF solutions is still a challenge for blind people on any operating system. For now the focus will be on Orca since it's the best working screen reader on Linux used by most blind users.<br />
<br />
'''Knowledge Prerequisite:''' C++<br />
<br />
'''Mentor:''' Albert, Frederik helping out with the accessibility parts<br />
<br />
==== Project: Implement PDF Poppler features ====<br />
'''Brief explanation:''' Poppler has some support for features we don't support, implement them<br />
<br />
'''Expected results:''' Poppler has support for pdf layer views, tagged pdf support, linearized pdf support yet we in Okular don't offer that features to our users. The result from this project is having those exposed to the final users<br />
<br />
'''Knowledge Prerequisite:''' C++<br />
<br />
'''Mentor:''' Albert<br />
<br />
==== Project: Implement SecurityHandler V6 in Poppler ====<br />
'''Brief explanation:''' Poppler needs to support SecurityHandler V6 to be able to open some pdf files<br />
<br />
'''Expected results:''' Poppler (and hence Okular) can open files with SecurityHandler V6 like the ones in https://bugs.freedesktop.org/show_bug.cgi?id=85368 and https://bugs.freedesktop.org/show_bug.cgi?id=88151<br />
<br />
'''Knowledge Prerequisite:''' C++<br />
<br />
'''Mentor:''' Albert<br />
<br />
=== KDE Connect ===<br />
==== Project: Improve KDE Connect encryption ====<br />
'''Brief explanation:''' We want to implement a better encrypted protocol for KDE Connect, as discussed here: http://albertvaka.wordpress.com/2013/09/19/how-kde-connect-encryption-works/ I would like to see a solid and peer-reviewed design before accepting this project.<br />
<br />
'''Expected results:''' Have a secure encryption algorithm implemented in both KDE (C++/Qt) and Android (Java) clients.<br />
<br />
'''Knowledge Prerequisite:''' Deep knowledge about encryption and security.<br />
<br />
'''Mentor:''' Albert Vaca <albertvaka {+at+} gmail.com><br />
<br />
'''Resources:''' kdeconnect<br />
<br />
==== Project: Build a Qt-only multiplatform KDEConnect client ====<br />
'''Brief explanation:''' We want to implement a cross platform client written in Qt that can run in virtually any platform supported by Qt (Windows Phone, Jolla, iOS, OSX, etc.) using the QPA (Qt Platform Abstraction) and QML. It will be challenging because Qt5 for phones is still quite new and implementing some features might not be possible yet, but it will be worth it to investigate what is possible and what not, and even contribute patches to Qt for some aspects. A lot of the core classes used in KDE Connect for Plasma could be reused and shared because they are mostly Qt (and would be part of the GSOC to make sure they end only using Qt, so we can get to re-use them). Not every feature is going to be available to every platform, and some plugins will be platform-specific, but as part of this GSOC project I would love to see it running as good as possible in one of the platforms already mentioned, and with basic functionallity in a couple more. (That is: center it around a platform and make it work well there, writting platform-specific plugins and code if needed, but making sure it still compiles and runs in other platforms).<br />
<br />
'''Knowledge Prerequisite:''' Qt5 and building cross-platform code.<br />
<br />
'''Mentor:''' Albert Vaca <albertvaka {+at+} gmail.com><br />
<br />
'''Resources:''' kdeconnect<br />
=== Solid ===<br />
==== Project: Improve sharing experience ====<br />
'''Brief explanation:''' Improve the content sharing experience in Plasma by extending and improving Samba share, implementing other ways of sharing and write new ways of discovering other people's shares.<br />
<br />
'''Expected results:''' It should be possible to discover "shares" using dolphin (possibly via a new kioslave?) and it should be possible to share a folder between two Plasma computers really fast and easy (possibly implementing an http server plus discovery via avahi).<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt, extra points for KIO experience.<br />
<br />
'''Mentor:''' Àlex Fiestas <afiestas {+at+} kde.org><br />
<br />
'''Resources:''' avahi, http, kdenetwork-fileshare<br />
<br />
=== Muon ===<br />
==== Project: Better support for your distribution ====<br />
<br />
'''Brief explanation:''' Muon needs to be ensured to work perfectly on any distribution, this project should target one of the (major) distributions, enumerate the problems to solve and propose solutions.<br />
<br />
'''Expected results:''' Muon users of your distribution will be happy ever-after.<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt, the technology required for the platform<br />
<br />
'''Mentor:''' Aleix Pol<br />
<br />
<br />
=== KWin ===<br />
==== Project: DRM/KMS backend for kwin_wayland ====<br />
<br />
'''Brief explanation:'''<br />
KWin_wayland currently only supports rendering to another Wayland server. In future it should be possible to go down to the hardware directly. For this a DRM/KMS rendering backend is required. This requires that a new backend is implemented for the OpenGL compositor and maybe the QPainter compositor. As KWin needs to handle kernel mode settings in this mode the output information need to be queried from the hardware and an implementation for KWin::Screens needs to be provided and from there propagated to the Wayland clients. In addition if the time of the project permits it an interface should be exposed for KScreen to configure the outputs.<br />
<br />
'''Expected results:''' KWin_wayland can render to DRM/KMS and fetches output information from the hardware<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt, Wayland, KMS and C knowlege are from advantage<br />
<br />
'''Mentor:''' Martin Gräßlin <mgraesslin@kde.org><br />
<br />
===Trojitá===<br />
<br />
[http://trojita.flaska.net/ Trojitá] is a fast IMAP e-mail client. Since late 2012, it is a part of KDE's extragear. The project focuses on delivering a usable, fast, standards-compliant, cross-platform and reliable e-mail client which can scale from cell phones to huge e-mail archives without annoying slowdowns.<br />
<br />
==== Project: Port to BlackBerry OS 10 ====<br />
<br />
'''Brief explanation:'''<br />
This work involves improving the separation of business logic from the UI concerns, an effort started and well-underway due to the Ubuntu Touch project, and adding a new GUI wirrten in QML for BlackBerry OS 10.<br />
<br />
'''Expected results:''' Trojitá running on BlackBerry Z10 with basic features, including reading and writing e-mails<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt, QML<br />
<br />
'''Mentor:''' Jan Kundrát <jkt@kde.org><br />
<br />
=== Gluon ===<br />
[http://gamingfreedom.org Gluon] is a project to build a Qt and KDE based game engine and game development tool. The engine is designed to support both mobile and desktop game development. We have ported the engine to Qt5 last year and are currently working on releasing a first Qt5 based version.<br />
<br />
==== Project: Build a QtQml based script system ====<br />
'''Brief explanation:''' In Qt4 QtScript was the solution to scripting support for applications. With the port to Qt5 the new QtQml module was introduced, including a new scripting system, but QtScript was still available. With Qt5.5 QtScript is planned to be deprecated and completely removed in Qt5.6. This means that our scripting system, which is currently built on QtScript, needs to be ported to QtQml.<br />
<br />
'''Expected results:''' A scripting system that can be used to write scripts for games.<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt at least. Experience with QtQuick/QML is a strong advantage.<br />
<br />
'''Mentor:''' Arjen Hiemstra<br />
<br />
==== Project: Expand Gluon Input ====<br />
'''Brief explanation:''' During the port to Qt5 we also overhauled the input system in Gluon to be more capable. However, we kept the implementation rather limited since we also had other elements to work on. This project would expand GluonInput with support for additional devices and platforms.<br />
<br />
'''Expected results:''' Additional platform and device plugins for GluonInput.<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt at least. Experience with platform-specific input libraries like XInput2 for Xorg is an advantage.<br />
<br />
'''Mentor:''' Arjen Hiemstra<br />
<br />
[[Category:Mentoring]]<br />
<br />
=== Krita ===<br />
[http://www.krita.org Krita] is an advanced 2D painting application. It support creating images from scratch from begin to end. Krita is a complex application and developers need to have a fair amount of experience in order to be able to do something.<br />
<br />
==== Project: Integrate Animation in Krita's core ====<br />
'''Brief explanation:''' We have gone through three iterations of animation support code in Krita. With this experience, it's become clear that we need to work the support for animatins right into Krita's core engine. This project comprises partly that, and partly updating the existing animation gui that was created in 2014.<br />
<br />
'''Expected results:''' by the end of the summer, the animation support in Krita should be ready for end-users to create 2D animations with, whether for game sprites or short cartoons. <br />
<br />
'''Knowledge Prerequisite:''' C++/Qt at least.<br />
<br />
'''Mentor:''' Boudewijn Rempt<br />
<br />
==== Project: Add Python Scripting to Krita ====<br />
'''Brief explanation:''' Krita has had two attempts at scripting support: through kjs and through kross. Neither was good enough. The VFXindustry standard for scripting is Python, and the goal of project is to integrate Python and PyQt directly into Krita.<br />
<br />
'''Expected results:''' by the end of the summer, users should be able to automate repetitive tasks, file import and export and add gui elements such as dockers, all written in PyQt.<br />
<br />
'''Knowledge Prerequisite:''' Deep knowledge of Python, SIP, C++ and Qt.<br />
<br />
'''Mentor:''' Boudewijn Rempt<br />
<br />
==== Project: Improve Normal Mapping Workflow ====<br />
'''Brief explanation:''' Normal maps are textures that describe surface detail on a 3d model by describing how much each pixel deviates from the surface the texture is put on. A normal map gives the ability to tell the renderer there's a different normal per texel(texture pixel), this way, you can describe subtle differences in surface without requiring the polygons for it. It does so by describing the normal angle to the surface by using the R, G and B channels. Now, normal maps, due to them being quite mathematical, are usually baked. But these bakes are not always perfect. furthermore, there's a lot of interest into handpainting textures, amongst which normal maps.<br />
<br />
'''Expected results:''' by the end of the summer, a new brush engine, which takes the tilt-direction and has that control the redness and greenness. And then takes the tilt-elevation, and has that control the blueness.<br />
<br />
'''Knowledge Prerequisite:''' knowledge of C++, Qt. and mathematics<br />
<br />
'''Mentor:''' Boudewijn Rempt<br />
<br />
===Calligra===<br />
==== Project: Variable thickness lines ====<br />
<br />
'''Brief explanation:''' One of the most fundamental basics of drawing is varying the width of your lines to show shape, form and perspective. Almost every line tapers at either end, and often gets thicker and thinner in different places as needed. For purely technical and histrorical reasons though, every vector program (Illustrator, Inkscape, Karbon etc) make curves all one hard width. <br />
This proposal is to create a variable width path shape / tool, much like the path tool, would allow drawing curves, but where each node could have its width set so that the line width changed smoothly from node to node. <br />
As a plugin for the Calligra suite, this would clearly benefit apps as Karbon and also Krita.<br />
<br />
'''Expected results:''' variable width path tool is able to change the width of any path node to an arbitary percentage (say 155%) of the stroke width. See http://bugsfiles.kde.org/attachment.cgi?id=56995 for mockup. The shape needs to be able to save and load in svg/odf.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt, SVG<br />
<br />
'''Mentor:''' Thorsten Zachmann < zachmann @ kde dot org ><br />
<br />
=== KIOSK ===<br />
==== Project: KIOSK Tool ====<br />
<br />
'''Brief explanation:''' Back in KDE 3 there was a tool to help administrators to configure the KDE Kiosk framework. The idea of this project is to start working on a new tool. The new application should be developed in close collaboration with the Visual Design Group to get a useful application for the targeted audience.<br />
<br />
'''Expected results:''' a functional prototype for a new Kiosk tool with a working backend to configure and restrict actions and configuration options.<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt<br />
<br />
'''Mentor:''' Martin Gräßlin <mgraesslin@kde.org><br />
<br />
=== Kubuntu ===<br />
==== Project: Port Ubiquity to Qt 5 ====<br />
<br />
'''Brief explanation:''' Ubiquity is the installer for Kubuntu. It should be ported to Qt 5. It is written in Python and can be fiddly to test because much of the development needs to be done on a live system. Once the Qt 5 port is complete there are numerous other bugs that can be fixed. Drop into #kubuntu-devel to say hi. Code is in launchpad.net/ubiquity.<br />
<br />
'''Expected results:''' Ubiquity bug free and running with Qt 5<br />
<br />
'''Knowledge Prerequisite:''' Python, PyQt<br />
<br />
'''Mentor:''' Jonathan Riddell<br />
<br />
<br />
=== Calamares ===<br />
<br />
[http://calamares.io/about/ Calamares] is a distribution-independent installer framework ([https://github.com/calamares/calamares/ code]). Calamares is participating to Google Summer of Code with KDE as umbrella organization. We are a young project, we are developing quickly, we are working with state of the art technologies (C++11, Qt 5, KDE Frameworks 5, Boost.Python) and we are solving exciting problems.<br />
<br />
Calamares is already shipped or is about to be shipped as the default system installer for several Linux distributions, including KaOS, BBQLinux, Fedora KDE, Manjaro, Netrunner Rolling, OpenMandriva, Tanglu, and others.<br />
<br />
See [http://teom.org/blog/kde/how-to-write-a-kick-ass-proposal-for-google-summer-of-code/ this post] for instructions on how to structure your Google Summer of Code proposal for Calamares.<br />
<br />
==== Project: Python interface refactor + Python view modules ====<br />
<br />
'''Brief explanation:''' Calamares is just a job executor at its core, and Calamares jobs are provided by Calamares modules. Installer pages are also provided by Calamares modules. These modules can currently be written in C++11 (as Qt plugins) or Python. The Python interface *works*, but it is slightly different from the C++ one, and it only supports jobs, not installer pages.<br />
This Google Summer of Code project is one of several that start with the same initial subtask, and then branch out in different directions.<br />
<br />
0) Refactor the Python interface so that writing a job module is not just implementing a function that expects globals, but rather inheriting from Calamares::Job or a wrapper thereof. Port all the Python modules to this updated interface. PythonQt 3.0 has just been released with support for Qt 5, so this is an option too, as a replacement for Boost.Python.<br />
<br />
1) Further improve the Python interface to allow writing view modules (i.e. installer pages) in Python. The student should do some research on the strengths and weaknesses of different approaches and produce a detailed action plan on what to wrap, how to wrap it, and which technologies to use to achieve said goals.<br />
<br />
Once both subtasks are complete there are various related tasks to be done. Drop into #calamares to say hi and discuss your proposal.<br />
<br />
'''Expected results:''' Equivalence between the Python and C++ module interfaces, for both job modules and view modules.<br />
<br />
'''Knowledge Prerequisite:''' At least some C++ experience is required; experience with CMake, Python, Boost.Python and other language binding solutions (PyQt, SWIG...) is a plus.<br />
<br />
'''Mentor:''' Teo Mrnjavac <teo@kde.org>, teo- on Freenode<br />
<br />
==== Project: Python interface refactor + Ruby modules interface ====<br />
<br />
'''Brief explanation:''' Calamares is just a job executor at its core, and Calamares jobs are provided by Calamares modules. Installer pages are also provided by Calamares modules. These modules can currently be written in C++11 (as Qt plugins) or Python. The Python interface *works*, but it is slightly different from the C++ one, and it only supports jobs, not installer pages.<br />
This Google Summer of Code project is one of several that start with the same initial subtask, and then branch out in different directions.<br />
<br />
0) Refactor the Python interface so that writing a job module is not just implementing a function that expects globals, but rather inheriting from Calamares::Job or a wrapper thereof. Port all the Python modules to this updated interface. PythonQt 3.0 has just been released with support for Qt 5, so this is an option too, as a replacement for Boost.Python.<br />
<br />
1) After completing subtask 0 for Python modules, achieve the same level of support for Ruby. The student should research technologies such as SWIG, RubyInline, FFI and Rice and produce a detailed action plan on how to deliver a Ruby interface for Calamares job modules. The latter (Rice) seems to be the most promising for the kind of embedding we need and most similar to Boost.Python, but this must be further ascertained. Packaging and deployment should also be taken into account.<br />
<br />
Once both subtasks are complete there are various related tasks to be done. Drop into #calamares to say hi and discuss your proposal.<br />
<br />
'''Expected results:''' Equivalence between the Python, Ruby and C++ job module interfaces.<br />
<br />
'''Knowledge Prerequisite:''' At least some C++ experience is required; experience with CMake, Ruby, Python, Boost.Python and other language binding solutions (PyQt, SWIG...) is a plus.<br />
<br />
'''Mentor:''' Teo Mrnjavac <teo@kde.org>, teo- on Freenode; Rohan Garg <rohan@kde.org>, shadeslayer on Freenode<br />
<br />
==== Project: Python interface refactor + Python testing mechanism ====<br />
<br />
'''Brief explanation:''' Calamares is just a job executor at its core, and Calamares jobs are provided by Calamares modules. Installer pages are also provided by Calamares modules. These modules can currently be written in C++11 (as Qt plugins) or Python. The Python interface *works*, but it is slightly different from the C++ one, and it only supports jobs, not installer pages.<br />
This Google Summer of Code project is one of several that start with the same initial subtask, and then branch out in different directions.<br />
<br />
0) Refactor the Python interface so that writing a job module is not just implementing a function that expects globals, but rather inheriting from Calamares::Job or a wrapper thereof. Port all the Python modules to this updated interface. PythonQt 3.0 has just been released with support for Qt 5, so this is an option too, as a replacement for Boost.Python.<br />
<br />
1) Our Python testing facilities are currently limited to a single script (src/modules/testmodule.py). The student should present an action plan for a more comprehensive testing mechanism, which may or may not be based on testmodule.py, and may or may not involve libcalamares instead. This testing mechanism could further be integrated with our [http://calamares.io/ci/ Jenkins continuous integration system].<br />
<br />
Once both subtasks are complete there are various related tasks to be done. Drop into #calamares to say hi and discuss your proposal.<br />
<br />
'''Expected results:''' Equivalence between the Python and C++ job module interfaces, and a comprehensive testing mechanism for Python job modules.<br />
<br />
'''Knowledge Prerequisite:''' At least some C++ and Python experience is required; experience with CMake, Boost.Python and software testing is a plus.<br />
<br />
'''Mentor:''' Teo Mrnjavac <teo@kde.org>, teo- on Freenode<br />
<br />
==== Project: Debian installer support ====<br />
<br />
'''Brief explanation:''' Calamares is just a job executor at its core, and Calamares jobs are provided by Calamares modules. Some of these modules are common for most Linux distributions, and some might be heavily distribution-specific.<br />
<br />
Calamares is already capable of installing a Debian-based system, simply by unpacking a squashfs image like most other distributions, but this is less than ideal: Debian already provides a sophisticated install system (debian-installer), and Calamares should take advantage of it.<br />
<br />
The student should propose a detailed action plan, with the ultimate deliverable being one or more job modules that implement a system install procedure based on debian-installer. Additional changes to the user interface (view modules) may or may not be needed for this, depending on the feature set proposed by the student. From a top-down point of view, Calamares should behave like a debian-installer frontend, not unlike Ubiquity, but without compromising its distribution-agnostic design.<br />
<br />
Once all the milestones have been achieved there are various related tasks to be done and bugs to be fixed. Drop into #calamares to say hi and discuss your proposal.<br />
<br />
'''Expected results:''' Calamares should be able to install a Debian based system using debian-installer as backend.<br />
<br />
'''Knowledge Prerequisite:''' The student should have experience with a Debian based distribution and C++; experience with Python, debian-installer and Debian packaging is a plus.<br />
<br />
'''Mentors:''' Rohan Garg <rohan@kde.org>, shadeslayer on Freenode; Teo Mrnjavac <teo@kde.org>, teo- on Freenode<br />
<br />
==== Project: The Ultimate Calamares user experience ====<br />
<br />
'''Brief explanation:''' Design and development of Calamares started in June 2014, with deliverables as early as Fall 2014, so some hard choices had to be made in order to ship quickly. While Calamares doesn't look intensely unpleasant when compared to some other system installers, it is not a triumph of user experience design either.<br />
<br />
The KDE Visual Design Group has already produced [https://community.kde.org/KDE_Visual_Design_Group/Calamares_Design_Project a design for Calamares] in agreement with the Calamares team. It is now time to implement this design.<br />
<br />
The student should propose a detailed action plan, with the ultimate deliverable being a complete visual overhaul of Calamares, including libcalamaresui and essential view modules. Intermediate deliverables must be listed in the proposal, with as much granularity as possible. The implementation should not deviate from the KDE VDG's design unless otherwise discussed, and during the coding season the student is expected to closely cooperate with both the Calamares team and the KDE VDG.<br />
<br />
Once all the milestones have been achieved there are various related tasks to be done and bugs to be fixed. Drop into #calamares to say hi and discuss your proposal.<br />
<br />
'''Attention''': This is a '''very challenging''' task, somewhat more demanding than the other ones we offer, and suitable for more experienced students. First time students are encouraged to consider our Python, Ruby or Debian tasks too. Exceptionally for this project we are requiring a '''qualification task''' to be completed by the prospective student. This qualification task should be delivered as a patch against master and sent to the mentor (Teo Mrnjavac <teo@kde.org>) ''before'' submitting a proposal for this project idea through the Google Summer of Code web application. Applicants that have not submitted a qualification task for this project will not be considered. The qualification task is defined as follows: '''implement the KDE VDG's design for the Users page (the Calamares module "users")'''. The webcam picture feature does not have to be implemented, but the avatar chooser is required. See [https://dl.dropboxusercontent.com/u/6631774/CalaUsersPageDesign.png this mockup].<br />
<br />
'''Expected results:''' Calamares should look and feel as designed by the KDE Visual Design Group.<br />
<br />
'''Knowledge Prerequisite:''' The student should have experience with Qt and C++; QML experience is a big plus.<br />
<br />
'''Mentors:''' Teo Mrnjavac <teo@kde.org>, teo- on Freenode<br />
<br />
=== Kopete ===<br />
<br />
[https://kopete.kde.org Kopete] is an instant messenger supporting AIM, Bonjour, Gadu-Gadu, GroupWise, ICQ, Jabber (XMPP, Google Talk, Facebook, ...), Meanwhile, QQ, Skype, Windows Live Messenger, WinPopup, Yahoo and more. It is designed to be a flexible and extensible multi-protocol system suitable for personal and enterprise use.<br />
<br />
==== Project: Better history plugin ====<br />
<br />
'''Brief explanation:''' History plugin is responsible for archiving chat history and also searching for old chat messages in archive. Currently Kopete has two history plugins: one which stores data to XML files and another one which stores data to SQLite database. Both plugins have some diffetent limitations like slow speed, bad search support, bad support for HTML messages, bad support for multiuser chat... This project aims to fix existing history plugin(s) or designing & implementing new one.<br />
<br />
'''Expected results:''' Working fast chat history plugin with support for handling HTML messages, multichat messages, ability to search for messages in history, import/export feature (importing from services like googletalk/facebook can be great too), ...<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt, XML or SQLite (or any other data storage usefull for chat messages)<br />
<br />
'''Mentor:''' Pali Rohár <pali.rohar@gmail.com>, Pali on #kopete<br />
<br />
'''Co-Mentor:''' Kaushik Saurabh <roideuniverse@gmail.com>, roide on #kopete<br />
<br />
'''Mailing list:''' kopete-devel@kde.org (archive at: [http://lists.kde.org/?l=kopete-devel&r=1&w=2 lists.kde.org])<br />
<br />
==== Project: Jabber message archive ====<br />
<br />
'''Brief explanation:''' When you use more jabber clients and you want to have full chat history in all clients, you need to synchronize message history between all clients. To make it easier for different jabber clients, there is jabber protocol extension for storing history directly on jabber servers which allows clients to download (missing) messages:<br />
<br />
XEP-0136: Message Archiving<br />
<br />
XEP-0313: Message Archive Management<br />
<br />
'''Expected results:''' Working support for XEP-0136 or XEP-0313<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt, Jabber protocol<br />
<br />
'''Mentor:''' Pali Rohár <pali.rohar@gmail.com>, Pali on #kopete<br />
<br />
'''Mailing list:''' kopete-devel@kde.org (archive at: [http://lists.kde.org/?l=kopete-devel&r=1&w=2 lists.kde.org])<br />
<br />
==== Project: PGP plugin ====<br />
<br />
'''Brief explanation:''' Kopete has plugin which can sign or encrypt outgoing messages using GPG. It can also verify signature and decrypt incoming messages. This plugin is old, uses private kdepim library and needs fixing. It is hard to compile and use it. For this project I would except fixing this plugin to work again or writing new PGP plugin from scratch.<br />
<br />
'''Expected results:''' Working support for PGP in Kopete<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt, GPG<br />
<br />
'''Mentor:''' Pali Rohár <pali.rohar@gmail.com>, Pali on #kopete<br />
<br />
'''Mailing list:''' kopete-devel@kde.org (archive at: [http://lists.kde.org/?l=kopete-devel&r=1&w=2 lists.kde.org])<br />
<br />
==== Project: IRC protocol ====<br />
<br />
'''Brief explanation:''' Kopete KDE3 version had plugin for IRC protocol. Porting that IRC plugin to new KDE versions was never finished and Kopete does not have working support for IRC yet.<br />
<br />
'''Expected results:''' Restore IRC protocol into Kopete<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt, IRC protocol<br />
<br />
'''Mentor:''' Pali Rohár <pali.rohar@gmail.com>, Pali on #kopete<br />
<br />
'''Mailing list:''' kopete-devel@kde.org (archive at: [http://lists.kde.org/?l=kopete-devel&r=1&w=2 lists.kde.org])</div>Shantanu Tusharhttps://community.kde.org/index.php?title=GSoC/2015/Ideas&diff=41856GSoC/2015/Ideas2015-03-13T18:05:20Z<p>Shantanu Tushar: Added a PMC idea</p>
<hr />
<div>[[File:GoogleSummer 2015logo.jpg |200px|thumb|right|GSoC 2015 logo]]<br />
See also: [[../../|GSoc Instructions]], [[../../2014/Ideas|Last year ideas]]<br />
<br />
== Guidelines ==<br />
<br />
=== Information for Students ===<br />
<br />
These ideas were contributed by our developers and users. They are sometimes vague or incomplete. If you wish to submit a proposal based on these ideas, you may wish to contact the developers and find out more about the particular suggestion you're looking at.<br />
<br />
Being accepted as a Google Summer of Code student is quite competitive. Accepted students typically have thoroughly researched the technologies of their proposed project and have been in frequent contact with potential mentors. Simply copying and pasting an idea here will not work. On the other hand, creating a completely new idea without first consulting potential mentors is unlikely to work out.<br />
<br />
When writing your proposal or asking for help from the general KDE community don't assume people are familiar with the ideas here. KDE is really big!<br />
<br />
If there is no specific contact given you can ask questions on the general KDE development list kde-devel@kde.org. See [http://www.kde.org/mailinglists/ the KDE mailing lists page] for information on available mailing lists and how to subscribe.<br />
<br />
=== Adding a Proposal ===<br />
<br />
{{Note|Follow the template of other proposals!}}<br />
<br />
==== Project: ====<br />
<br />
'''Brief explanation:'''<br />
<br />
'''Expected results:'''<br />
<br />
'''Knowledge Prerequisite:'''<br />
<br />
'''Mentor:'''<br />
<br />
When adding an idea to this section, please try to include the following data:<br />
<br />
:*if the application is not widely known, a description of what it does and where its code lives<br />
:*a brief explanation<br />
:*the expected results<br />
:*pre-requisites for working on your project<br />
:*if applicable, links to more information or discussions<br />
:*mailing list or IRC channel for your application/library/module<br />
:*your name and email address for contact (if you're willing to be a mentor)<br />
<br />
If you are not a developer but have a good idea for a proposal, get in contact with relevant developers first.<br />
<br />
<br />
==Ideas==<br />
<br />
===Your Own Idea ===<br />
<br />
==== Project: Something that you're totally excited about ====<br />
<br />
'''Brief explanation:''' Do you have an awesome idea you want to work on with KDE but that is not among the ideas below? That's cool. We love that! But please do us a favor: Get in touch with a mentor early on and make sure your project is realistic and within the scope of KDE. That will spare you and us a lot of frustration.<br />
<br />
'''Expected results:''' Something you and KDE loves<br />
<br />
'''Knowledge Prerequisite:''' Probably C++ and Qt but depends on your project<br />
<br />
'''Mentor:''' Try to see who in KDE is interested in what you want to work on and approach them. If you are unsure you can always ask in #kde-soc on Freenode IRC.<br />
<br />
===Plasma===<br />
<br />
==== Project: Port various KDE4 Plasmoids to Plasma 5 ====<br />
<br />
'''Brief explanation:''' When we ported from Plasma 4 to Plasma 5 some useful Plasmoids ended up not being initially ported. We want the more important existing applets to continue to run which . Students should select a few Plasmoids which they deem useful for their proposal along with some innovative ideas for improvements. Students should show knowledge of the level of work related. <br />
<br />
'''Expected results:''' A few fully working plasmoids, polished and better than before.<br />
<br />
'''Knowledge Prerequisite:''' QML skills. Ideally some Plasmoid experience<br />
<br />
'''Mentor:''' Sebastian Kugler with help of the Plasma team.<br />
<br />
==== Project: Port KSystemLog to use journald as a backend ====<br />
<br />
'''Brief explanation:''' KSystemLog is a tool for viewing log files. This has slowly started to fail as log files moved in various distributions. Journald provides a common interface to query programatically system and user logs which will fix the main issue. Applications should impress me with their ideas utilising the available features. <br />
<br />
'''Expected results:''' A ported to frameworks journald powered log viewer. <br />
<br />
'''Knowledge Prerequisite:''' C++, Qt. <br />
<br />
'''Mentor:''' David Edmundson with help of the Plasma team.<br />
<br />
==== Project: Port various Systemsettings KCMs to QML ====<br />
<br />
'''Brief explanation:''' The codebase of the systemsettings modules is old and needs a redesign both code-wise and UI-wise. Students should select a few KCMs and propose how to port them to the new QML/C++ hybrid with some ideas on the improvement of their UI.<br />
<br />
'''Expected results:''' A few fully working KCM modules ported to a mix of QML and C++ that still load correctly in Systemsettings and KCMshell.<br />
<br />
'''Knowledge Prerequisite:''' QML and C++ skills.<br />
<br />
'''Mentor:''' Marco Martin with help of the Plasma team.<br />
<br />
==== Project: Port various Systemsettings KCMs to QML ====<br />
<br />
'''Brief explanation:''' A lot of people use Media Centers to watch TV Series and Movies on their media devices. A very common headache is to organize media collections of TV series and to perform actions like "Play next episode". This project aims at using multiple factors (like filenames, file paths, and others) to figure out what media files are part of a common TV series or Movie collection.<br />
<br />
'''Expected results:''' A new backend for Plasma Media Center which scans the user's media library and automatically shows a list of TV Series and Movie collections the user has. The feature should be able to function to an acceptable level without using online services. However you may use online services to augment the algorithms/improve the results.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt/QML. Knowledge of elementary vector mathematics and linear algebra is a plus<br />
<br />
'''Mentor:''' Shantanu Tushar < shantanu kde org > and Vinay S Rao < sr.vinay gmail ><br />
<br />
=== Various Places ===<br />
==== Project: package install for 3rd party applications ====<br />
<br />
'''Brief explanation:''' KDE software needs to install software in various places. Investigate the best way to do this which is probably to use packagekit. Then implement this in the places which need it.<br />
<br />
'''Expected results:''' Work out best way for 3rd party programs to query and install packages. Then adapt the following pieces of software to install the packages they need:<br />
* dolphin file share install samba<br />
* kcm access to install orca<br />
* gwenview to install kipi-plugins<br />
* kcm locale should install kde-l10n-xx<br />
* kickoff to implement package install like kicker?<br />
all this should be done in a way which works for the major distributions. <br />
<br />
Appstream could be used to find package names to install although support for this in Ubuntu is incomplete.<br />
<br />
'''Knowledge Prerequisite:''' C++<br />
<br />
'''Mentor:''' Jonathan Riddell (Riddell in #plasma on freenode IRC) with help of the Plasma team.<br />
<br />
=== Plasma and Gluon ===<br />
<br />
==== Project: Extend gamingFreedom.org framework to be more generic ====<br />
<br />
'''Brief explanation:''' Over the last couple of years, the gamingFreedom.org website and server side components have been created, which implement Open Collaboration Services (OCS) in a generic and reusable form. We are now at a point where it would make sense to attempt to use this for further purposes, rather than only for gamingFreedom.org. Specifically, a new implementation of the server component employed for hosting Plasma related content is needed, and a website for presenting this content on the web.<br />
<br />
'''Expected results:''' A new website based on gamingFreedom.org's OCS client libraries, and a server implementation for hosting Plasma content.<br />
<br />
'''Knowledge Prerequisite:''' PHP for the client and server code<br />
<br />
'''Mentor:''' Claudio Desideri and Dan Leinir Turthra Jensen with help of the Plasma team.<br />
<br />
=== Kdenlive ===<br />
<br />
Kdenlive is an intuitive and powerful multi-track video editor, including most recent video technologies. Our software is completely free, as defined by the GNU foundation. Using Kdenlive is investing in a community driven project, which aims to establish relationships between people in order to built the best video tools.<br />
<br />
* [http://www.kdenlive.org Kdenlive project web site]<br />
* [http://community.kde.org/Kdenlive Kdenlive wiki]<br />
* [https://mail.kde.org/mailman/listinfo/kdenlive Mailinglist]<br />
* [http://webchat.freenode.net/?channels=kdenlive #kdenlive IRC channel on Freenode]<br />
<br />
==== Project: Add support for new Animation capabilities ====<br />
<br />
'''Brief explanation:''' MLT, the media frameworks we use for rendering, has recently added a new [http://mltframework.blogspot.com/2013/06/v090-released-with-new-property.html property animation] to its objects. This allows much simpler, smoother and more general animations than the traditional keyframes technology. We then need new widgets to edit these properties, and eventually evolve our on-monitor interactions.<br />
<br />
'''Expected results:''' At the end of the project, we should be able to add and graphically adjust these animation parameters through controls in the effects stack panel, and bonus on the monitor.<br />
<br />
'''Knowledge Prerequisite:''' In the end you will assemble QtWidgets and interact with MLT data through C++. So you should be at ease with C++ and Qt (no need to be an expert), and have a look to the MLT manual page about animation.<br />
<br />
'''Mentor:''' Vincent Pinon with help of the Kdenlive team.<br />
<br />
==== Project: Redesign titler using WebVFX ====<br />
<br />
'''Brief explanation:''' Our titler, the tool we use to add text and drawing objects over the video, relies on a home made module added to the MLT framework. Our module is limited in features, quite slow to render, and demands work to maintain. MLT has since then been plugged into WebVFX engine, which provides infinite possibilities through web technologies, and it is certainly more robust. The goal is then to port our titler to this engine, then maybe evolve the interface to offer new possibilities.<br />
<br />
'''Expected results:''' At the end of the project, the titler should rely only on MLT WebVFX module. Bonus we should be able to add and easily edit more objects types.<br />
<br />
'''Knowledge Prerequisite:''' First step is to translate our XML to Web formats inside the C++ code, so you should understand those dialects. For the UI rework, you would then work with Qt, in either C++ or QML.<br />
<br />
'''Mentor:''' Vincent Pinon with help of the Kdenlive team.<br />
<br />
==== Project: add import/export filters for video editors exchange formats ====<br />
<br />
'''Brief explanation:''' To reduce the barrier to switch to Kdenlive, users should be able to import and export with commercial editing softwares (at least partially). Some scripts already exist to crudely parse EDL or AAF formats, the goal is to do it cleanly integrated in Kdenlive.<br />
<br />
'''Expected results:''' At the end of the project, we should be able to exchange projects with one or more commercial tools. Effects and transitions will probably be limited, but timeline construction should be transferable.<br />
<br />
'''Knowledge Prerequisite:''' The work will consist in manipulating XML data with Qt (C++), so you should understand those dialects.<br />
<br />
'''Mentor:''' Vincent Pinon with help of the Kdenlive team.<br />
<br />
==== Project: make Kdenlive work on Windows and OSX ====<br />
<br />
'''Brief explanation:''' All the frameworks Kdenlive relies on are working on other platforms, and Kdenlive used run on those long time ago. The goal here is to setup build environments on one or two other OS's, and fix the things that prevent Kdenlive to work.<br />
<br />
'''Expected results:''' At the end of the project, Kdenlive should work reliably on one or two commercial OS's.<br />
<br />
'''Knowledge Prerequisite:''' Setting up and running builds, fixing things in C++, CMake, dependencies.<br />
<br />
'''Mentor:''' Vincent Pinon with help of the Kdenlive and KDE porting teams.<br />
<br />
=== Amarok ===<br />
<br />
Amarok is a Music player that helps you organize and rediscover your music. <br />
<br />
* [http://amarok.kde.org Amarok project web site]<br />
* [http://community.kde.org/Amarok Amarok wiki]<br />
* [https://mail.kde.org/mailman/listinfo/amarok-devel Mailinglist]<br />
* [https://plus.google.com/+amarok Google+ page]<br />
* [http://webchat.freenode.net/?channels=amarok #amarok IRC channel on Freenode]<br />
<br />
==== Project: Port Amarok to Qt5/Kf5/Plasma5 ====<br />
<br />
'''Brief explanation:''' Currently Amarok still depends on kdelibs 4.x and Qt4.<br />
<br />
'''Expected results:''' Amarok should compile with Qt 5.x, kdelibs4 dependencies should be replaced with kf5. Port most existing plasma widgets of the Context View to Plasma 5 (at least the most important should be ported). The default system themes should apply to Amarok flawlessly. A very important part of this project is testing the port and adapting the unit tests.<br />
<br />
'''Knowledge Prerequisite:''' good knowledge of C++/Qt, ideally being familiar with kf 5 and Plasma 5. The student should have some basic knowledge of the Amarok project and its functions as well as its architecture. All relevant information about Amarok, Qt5, kf5 and Plasma 5 can be found online, every suitable applicant should be able to find this documentation on their own.<br />
<br />
'''Mentor:''' To be determined. All discussions about the project should be held on the mailinglist and/or on IRC<br />
<br />
===digiKam===<br />
<br />
digiKam is an advanced digital photo management application for Linux, Windows, and Mac-OSX.<br />
<br />
* [http://www.digikam.org digiKam project web site]<br />
* [http://www.exiv2.org Exiv2 project web site]<br />
* [https://techbase.kde.org/Projects/Digikam/CodingSprint2014 digiKam port to KF5 status]<br />
* [https://mail.kde.org/mailman/listinfo/digikam-devel Mailinglist]<br />
* [https://plus.google.com/+digikam Google+ page]<br />
* [http://webchat.freenode.net/?channels=digikam #digikam IRC channel on Freenode]<br />
<br />
==== Project: Re-write database KIO-slaves as pure Qt5 using multithreading ====<br />
<br />
'''Brief explanation:''' Originally, KIO-Slaves have been implemented to run database queries in a separated process to prevent problem with SQlite. Since SQlite support re-entrancy and queries from separated threads, digiKam KIO-slaves used to process complex and long database queries can be re-written as core implementation using Qt thread API. This will improve digiKam availability in time when system is updated in low-level, and permit to adjust finely CPU cores assigned to database process.<br />
<br />
'''Dependencies:''' : digiKam core from "framework" branch (KF5) <br />
<br />
'''Links:''' [https://www.sqlite.org/threadsafe.html Using Sqlite in multi-threaded application], [https://bugs.kde.org/show_bug.cgi?id=146557 Bug #146557]<br />
<br />
'''Knowledge Prerequisite:''' C/C++, Qt, database, multi-threading<br />
<br />
'''Expected results:''' Identify all parts of digiKam core which query database through KIO-slaves mechanism, factorize code in same interface and write a multi-threaded wrapper to run SQlite queries. Write test code to check quickly if database core implementation changes don't affect wrapper functionality. Note : digiKam use internally URL + XML formating to pass data to KIO-slaves and this not be changed.<br />
<br />
'''Difficulty:''' high<br />
<br />
'''Lead Mentor:''' Gilles Caulier <caulier dot gilles at gmail dot com><br />
<br />
==== Project: Advanced Metadata HUB ====<br />
<br />
'''Brief explanation:''' digiKam has already some options to manage workflow between image metadata and database, through the setup/metadata configuration panel. The goal of this project is to write a more advance setup to control finely the most important metadata field in order to read from image and populate database and vis versa. The list of metadata to drive must be easily extensible and configurable. Also, the metadata workflow to synchronize image with database must be more flexible and must provide a way to synchronize files at end of digiKam session and not only in real time (typical case : editing image tags to write in images). <br />
<br />
'''Dependencies:''' : digiKam core and libkexiv2 from "framework" branch (KF5) <br />
<br />
'''Links:''' [https://bugs.kde.org/buglist.cgi?bug_status=UNCONFIRMED&bug_status=CONFIRMED&bug_status=ASSIGNED&bug_status=REOPENED&component=Metadata&list_id=1205997&product=digikam&query_format=advanced&short_desc=HUB&short_desc_type=allwordssubstr Bugs list from bugzilla]<br />
<br />
'''Knowledge Prerequisite:''' C/C++, Qt, database, multi-threading<br />
<br />
'''Expected results:''' Create metadata hub widget for settings panel, adjust current hub and image scanner implementations, add test code.<br />
<br />
'''Difficulty:''' high<br />
<br />
'''Lead Mentor:''' Gilles Caulier <caulier dot gilles at gmail dot com><br />
<br />
==== Project: Add WebP and WebM support ====<br />
<br />
'''Brief explanation:''' WebP/WebM is new wavelets based image/video format from Google, based on RIFF/MKV container. This format become more popular on the Web and both can be used through an open-source library. We need to support these formats as editable in digiKam (WebP) and manageable by database mechanism through metadata (WebP and WebM).<br />
<br />
'''Dependencies:''' : digiKam core and libkexiv2 from "framework" branch (KF5), Exiv2 library<br />
<br />
'''Links:''' [http://en.wikipedia.org/wiki/WebM WebM format], [http://en.wikipedia.org/wiki/WebP WebP format]<br />
<br />
'''Knowledge Prerequisite:''' C/C++, Qt, Metadata<br />
<br />
'''Expected results:''' Patch Exiv2 library to support both formats in read/write meta-data mode and add optional WebP support in digiKam core to be able to edit images (read/write image contents in 16 bits color depth). Write test code to check new functionality in time.<br />
<br />
'''Difficulty:''' high<br />
<br />
'''Mentors:''' Gilles Caulier <caulier dot gilles at gmail dot com> + Someone from Exiv2 team<br />
<br />
==== Project: Factorize and port to KF5 all web service Import/Export KIPI tools ====<br />
<br />
'''Brief explanation:''' All tools dedicated to import or export items from KIPI host applications to web services as Flickr, GDrive, Dropbox, Facebook, Picasa, etc... need to be factored and ported to KF5/Qt5. Factorization include to make common widgets (settings, GUI layout, rules, etc), and background processing to prevents duplicate code. Also, in order to reduce KIPI host application time loading, the number of tools must be limited. Tools must be grouped by categories, as Social Networks, Cloud Service, Photo Hosting, etc...<br />
<br />
'''Dependencies:''' : digiKam KIPI interface, KIPI Plugins <br />
<br />
'''Bugzilla entries:''' [https://bugs.kde.org/show_bug.cgi?id=221704 221704]<br />
<br />
'''Knowledge Prerequisite:''' C/C++, Qt/KDE, GUI<br />
<br />
'''Expected results:''' KIPI web services tools ported to KF5 and running with digiKam 5.0.0.<br />
<br />
'''Difficulty:''' high<br />
<br />
'''Lead Mentor:''' Gilles Caulier <caulier dot gilles at gmail dot com><br />
<br />
===Marble===<br />
Marble is a virtual globe and world atlas — your swiss army knife for maps. Find your way and explore the world!<br />
<br />
* [http://marble.kde.org/ Marble project website]<br />
* [https://mail.kde.org/mailman/listinfo/marble-devel Mailinglist]<br />
* [http://webchat.freenode.net/?channels=marble #marble IRC channel on Freenode]<br />
<br />
==== Project: Starting to edit OpenStreetMap Data ====<br />
<br />
'''Brief explanation:''' During the last Google Summer of Code 2014 Cruceru Calin worked on an Edit mode for Marble. Right now it's possible to draw elementary shapes and features (Polygons/Polylines, Placemarks, GroundOverlays, etc.). These geometry primitives can be saved as KML files and there is some experimental OSM support already.<br />
This project will be about extending the current Edit Maps mode. Focus will be especially towards enabling advanced editing that allows for more sophisticated drawing capabilities but also for tagging and other features that are required for OSM support. A special focus might also be on refactoring the existing code base where it's useful.<br />
<br />
<br />
'''Expected results:''' Reliable and useful means to create and edit OSM files using Marble.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt,<br />
<br />
'''Mentors:''' Torsten Rahn, Cruceru Calin, Dennis Nienhüser<br />
<br />
==== Project: Turning Marble into a small GIS system ====<br />
<br />
'''Brief explanation:''' During the last Google Summer of Code 2014 Cruceru Calin worked on an Edit mode ("Annotation Plugin") for Marble. Right now it's possible to draw elementary shapes and features (Polygons/Polylines, Placemarks, GroundOverlays, etc.). These geometry primitives can be saved as KML files.<br />
During this project we'd like to extend the feature set towards classical requirements of a GIS system. Focus will be especially towards enabling advanced editing that allows for more sophisticated drawing capabilities but also for tagging and other features that are required for a GIS Editor. Depending on the experience of the student we might also focus on other topics like Data analysis or PostGIS support. <br />
<br />
'''Expected results:''' Adding capabilities to Marble that allow for using it for simple tasks that people would usually do using Quantum-GIS.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt<br />
<br />
'''Mentors:''' Torsten Rahn, Cruceru Calin, Dennis Nienhüser<br />
<br />
==== Project: Statistical Data Visualization and Extending Marble Game ====<br />
<br />
'''Brief explanation:''' During the last Google Summer of Code 2014 Abhinav Gangwar created the "Marble Game". This project is about extending Marble's library in a way so that it's easy to display statistical data on maps in a color coded way. The Marble Game should be further improved and it should be possible to make use of the Statistics feature.<br />
<br />
'''Expected results:''' Marble provides a tool that allows to visualize a ready-made dataset of statistical data in a color-coded way. The Marble Game should also be extended to make use of that feature. <br />
<br />
'''Knowledge Prerequisite:''' C++, Qt<br />
<br />
'''Mentors:''' Torsten Rahn, Abhinav Gangwar, Dennis Nienhüser<br />
<br />
=== KStars ===<br />
<br />
KStars is a very powerful tool for anyone interested in astronomy. It is part of the KDE Edu suite.<br />
<br />
==== Project: Ekos Scheduler ====<br />
<br />
'''Brief explanation:''' [http://www.indilib.org/about/ekos.html Ekos] is an advanced astrophotography tool for Linux. It utilizes [http://www.indilib.org INDI] for device control. With Ekos, the user can use the telescope, CCD, and other equipment to perform Astrophotography tasks. However, the user has to be present to configure the options and to command the actions to perform all the astrophotography related tasks, and hence a scheduler is required to automate observations to be constrained within certain limitations such as required minimum angular separation from the moon, whether conditions...etc. Furthermore, the observations should be triggered when certain conditions are met such as observation time, object's altitude...etc. The prospective student is expected to develop a ''Simple'' [http://indilib.org/forum/general/560-simple-ekos-schedular.html Ekos scheduler] to trigger observation runs when certain conditions are met and when the limitations are required.<br />
<br />
'''Expected results:''' Simple scheduler to automate astrophotography runs based on some conditions and within user-configurable limitations.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt, INDI<br />
<br />
'''Mentors:''' Jasem Mutlaq (IRC: knro)<br />
<br />
The student will need to:<br />
<br />
* Look at the relevant code, and propose a tractable plan for implementing some of the improvements within the GSoC timeframe.<br />
* Implement some of the improvements, producing production-ready code that can be included in the next release of KStars after GSoC 2015.<br />
<br />
==== Project: Constellation art ====<br />
<br />
'''Brief explanation:''' KStars currently draws constellation lines, names, and boundaries, but constellation art is missing. The student is expected to study KStars API and develop a new SkyComponent to superimpose the constellation artwork unto the sky map while re-working other components in KStars to support this. The structure must support multiple sky cultures. The artwork itself must be available under a permissible license. New constellation artwork should be available for download using the KNewStuff framework. The user should be able to select the sky culture.<br />
<br />
'''Expected results:''' High quality artwork for Western constellations in addition to one non-western constellation artwork that can be switched on/off in the sky map.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt<br />
<br />
'''Mentors:''' Jasem Mutlaq (IRC: knro)<br />
<br />
The student will need to:<br />
<br />
* Look at the relevant code, and propose a tractable plan for implementing some of the improvements within the GSoC timeframe.<br />
* Implement some of the improvements, producing production-ready code that can be included in the next release of KStars after GSoC 2015.<br />
<br />
==== Project: Fix our deep-sky data handling ====<br />
<br />
'''Brief explanation:''' Currently, KStars handles data from deep-sky object catalogues in an SQLite database. While this is working well, there are some more features we would like to have, and some that should be implemented in order to sanitize the deep-sky data handling, such as automatic cross-referencing of deep-sky objects across catalogs, organizing deep-sky data better in the database etc using Hierarchical Triangular Mesh, etc.<br />
<br />
More details here: http://techbase.kde.org/Projects/Edu/KStars/Better_deep-sky_handling<br />
<br />
'''Expected results:''' Some, or all of the improvements to deep-sky handling suggested above (or maybe even your own suggestions), implemented completely in solid, release-worthy code.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt, understanding of astronomical catalogues, some experience with data structures.<br />
<br />
'''Mentors:''' Rafal Kulaga (IRC: rkulaga)<br />
<br />
The student will need to:<br />
<br />
* Look at the relevant code, and propose a tractable plan for implementing some of the improvements within the GSoC timeframe.<br />
* Implement some of the improvements, producing production-ready code that can be included in the next release of KStars after GSoC 2015.<br />
<br />
PS: If all this looks daunting, that's because you have not (yet) talked to us. If you're really interested, get onto #kde-kstars and ping the mentors.<br />
<br />
==== Project: Propose your own project ====<br />
<br />
'''Brief explanation:''' If you have some interesting ideas about KStars that can be implemented within the GSoC timeframe, you are very welcome to propose them, because we seem to have run out of ideas.<br />
<br />
'''Mentors:''' Rafal Kulaga (IRC: rkulaga)<br />
<br />
=== KDE Edu ===<br />
<br />
==== Project: Integrate Cantor into LabPlot====<br />
[http://labplot.sourceforge.net/ LabPlot] is a KDE-application for interactive graphing and analysis of scientific data.<br />
<br />
'''Brief explanation:''' The integration is twofold:<br />
<br />
# currently, for the created plots LabPlot uses either the data provided by hand in a spreadseet or by using data imported from external ascii-files. By having Cantor within LabPlot it should be possible to access the data sets created in a computer algebra session (say Maxima) provided by Cantor. Cantor's session have to be integrated into LabPlot's model-view framework and have to be put onto the same foot as all the other objects managable in LabPlot (spreadsheet, worksheets etc.).<br />
# By calling a CAS-specific command for creating a 2D-plot in Cantor, Cantor creates an external process that renders the plot and embeds the result as a pixmap. Instead of such a static pixmap, LabPlot's plots should be embeded. This would provide high degree of control of the plot appearance as provided by LabPlot.<br />
<br />
'''Mentor:''' Alexander Semke<br />
<br />
==== Project: Integrate [http://en.wikipedia.org/wiki/VTK VTK] into LabPlot, investigate [http://en.wikipedia.org/wiki/Tulip_(software) Tulip] ====<br />
[http://labplot.sourceforge.net/ LabPlot] is a KDE-application for interactive graphing and analysis of scientific data.<br />
<br />
'''Brief explanation:'''<br />
# LabPlot lacks 3D-functionality. In the old KDE3-based LabPlot qwt3D was used for this that is not an option anymore. The task consists of the integration of [http://en.wikipedia.org/wiki/VTK VTK] -libs. Also, the relevant widgets for 3D-plot editting should be created in a manner similar for all the other objects available in LabPlot now.<br />
# Investigate whether it's reasonable to use LabPlot as a frontend (or to extend it to be a frontend) to the functionality provided by [http://en.wikipedia.org/wiki/Tulip_(software) Tulip] yes, how?<br />
<br />
'''Mentor:''' Alexander Semke<br />
<br />
==== Project: Port of GCompris in Qt Quick====<br />
<br />
[http://gcompris.net GCompris] is a an educational software suite comprising of numerous activities for children aged 2 to 10. Originaly written in Gtk+ it's development team decided to rewrite it from scratch in [http://qt-project.org/doc/qt-5/gettingstartedqml.html Qt Quick]. It has also been decided that this version will be integrated in KDE which is the reason of the project being here.<br />
<br />
'''Goals:''' <br />
# Porting several GCompris activities in Qt Quick. There is a page that tracks the [http://gcompris.net/wiki/Qt_Quick_Migration_status porting effort] that will help you select the activity set you are interested in.<br />
# Creating new activities. There is a [http://gcompris.net/wiki/Ideas_for_activities list of ideas] of activities that have been identified as something we would like to have. You can also propose original ideas not on the list.<br />
<br />
'''Knowledge Prerequisite:''' By the start of GSoC you should<br />
# Be interested in children education<br />
# Be familiar with GCompris concept and content<br />
# Basic knowledge in a programming language (a 1 year school course is enough)<br />
# Be able to build the Qt Quick version of GCompris<br />
<br />
'''Application guide:'''<br />
# Writing or porting an activity takes about the same time. The advantage of the porting is that the tuning, the graphishm and the sounds are already available. You can count 2 weeks of development for an activity.<br />
# To keep the work interesting it is recommended to propose a mix of porting some activities and creating new one, either from the idea list or from an original idea you come with.<br />
# You have to follow the [http://gcompris.net/wiki/An_exercise_for_new_contributors instructions here] and provide your exercise as a pull request.<br />
<br />
'''Mentor:''' Bruno Coudoin (IRC: bdoin #gcompris on freenode)<br />
<br />
=== Keyboard Layouts ===<br />
<br />
Keyboard layouts in KDE allow user to use multiple keyboard layouts and switch between them. It consists of keyboard configuration module (in System Settings), keyboard layout widget/applet, and keyboard layout daemon.<br />
<br />
==== Project: Integrating Input Methods with keyboard layout configuration ====<br />
<br />
'''Brief explanation:''' Input method and keyboard layout configuration are serving the same purpose - to allow users to type text in non-default language. Currently KDE has integrated system to configure keyboard layouts but IM need to be configured somewhere else. Also when IM is configured it takes over some functions of keyboard layout configuration. So it would be nice if we could have IM and keyboard layout configuration in one place.<br />
It seems that IBus has already gained community acceptance so this will be the target for integration into KDE keyboard module.<br />
<br />
'''Expected results:''' Keyboard configuration module in System settings will include IM configuration and it will be integrated with existing keyboard layout options.<br />
<br />
'''Knowledge Prerequisite:''' good knowledge of C++, development experience with Qt and KDE, understanding of Input Methods (IBus)<br />
<br />
=== KDevelop ===<br />
<br />
==== Project: Clang Integration ====<br />
<br />
'''Brief explanation:''' Finish the kdev-clang plugin to make it a usable replacement for the existing C++ plugin.<br />
<br />
'''Expected results:''' Find the still missing features from the KDevelop4's C++ support and port them over to kdev-clang, so it can become the mainstream C/C++ Solution<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt. Knowledge about Clang is helpful<br />
<br />
'''Mentor:''' Kevin Funk<br />
<br />
==== Project: Checker Framework ====<br />
<br />
'''Brief explanation:''' A generic framework should be created which provides the foundation for other plugins to report errors. <br />
<br />
'''Expected results:''' Right now we have the problems toolview but it is tightly coupled to the DUChain. This should be changed to use a separate item repository which stores the problems for a given path. The data stored would be: Path and range of where the issue is found, a short error message and optionally a long description. Furthermore, plugins might want to store additional info from which the problem could be fixed (compare to the 'add include path' or similar wizards we have already in the language framework).<br />
<br />
This framework should then be used to integrate various tools.<br />
<br />
First of all the existing language plugins should show the problems they find there.<br />
The existing playground plugins for krazy and cppcheck integration should reuse that framework<br />
any other linters could be integrated, such as jslint, pylint, clang-check, etc. pp.<br />
runtime checkers could be integrated, such as valgrind's memcheck, ptrcheck, helgrind, drd, ...<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt. Knowledge of debugging tools is helpful.<br />
<br />
'''Mentor:''' Milian Wolff<br />
<br />
==== Project: SVN Plugin Rewrite ====<br />
<br />
'''Brief explanation:''' Rewrite the SVN plugin to use the C-API directly.<br />
<br />
'''Expected results:''' The existing SVN plugin uses an outdated kdevsvncpp checkout internally which causes troubles, warnings and licensing issues. Port the plugin to either the C-API of svn or alternatively try to reuse code from current kdevsvn. The result should be a tested, working plugin for SVN integration without licensing issues nor compile time warnings about usage of deprecated API.<br />
<br />
'''Knowledge Prerequisite:''' C, C++, Qt, SVN<br />
<br />
'''Mentor:''' Milian Wolff<br />
<br />
==== Project: LLDB Support ====<br />
<br />
'''Brief explanation:''' Write a new plugin to support LLDB on KDevelop<br />
<br />
'''Expected results:''' Come up with a new kdevelop plugin so that LLDB can be used as a debugging solution, especially on Mac OS X and Windows, where gdb support is rather scarce.<br />
<br />
'''Knowledge Prerequisite:''' C, C++, Qt, debugging intrinsic problems<br />
<br />
'''Mentor:''' KDevelop team<br />
<br />
=== KDE PIM ===<br />
<br />
The KDE PIM community work on a set of libraries and applications for Personal Information Management, including email, calendaring, contacts, and feed aggregation.<br />
<br />
==== Project: OpenHolidays ====<br />
<br />
'''Brief explanation:''' The KHolidays library provides KDE applications with information on public holidays around the world, however the file format is very hard to use and maintain and the library features are very limited and restricted to Qt users. The goal of the OpenHolidays project is to develop a new open standard and data repository that can be used by any project that needs the data. See http://community.kde.org/KDE_PIM/KHolidays for more details.<br />
<br />
'''Expected results:''' Define the new JSON file format and port the existing data files to the new format. Develop a shared Qt-only library to parse the holiday files and provide access to them with a iCal style event-based api. Implement an Akonadi resource to access the data. Extended goals: Develop a JavaScript library to use the files. Develop a web site and web service at openholidays.org to provide online access to the data files.<br />
<br />
'''Knowledge Prerequisite:''' C++ and Qt for core goals, JavaScript and web services for extended goals.<br />
<br />
'''Mentor:''' John Layt and other KDE PIM community members.<br />
<br />
==== Project: QtQuick ToDo API / Plasmoid====<br />
<br />
'''Brief explanation:''' KDE PIM wants to make it's data accessible for applications which use QML to declare their user interfaces, e.g. applications using QtQuick. For that they need data handling objects that are accessible through QML, e.g. item models that have a mapping of string based role names to enum value based roles in C++, etc.<br />
<br />
'''Expected results:''' Define and implement a general QML API for accessing and creating Akonadis ToDo data. Write / Port a ToDo Plasmoid for Plasma Desktop or Plasma Active to show off the new API. Bonus: Port Kontact Touch Task to the new API instead of, or in addition to the Plasmoid.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt, QtQuick<br />
<br />
'''Possible Mentors:''' Kevin Krammer, and other KDE PIM community members<br />
<br />
=== Simon ===<br />
Simon is a speech recognition suite.<br />
<br />
[http://simon.kde.org Website] - [https://mail.kde.org/mailman/listinfo/kde-speech Mailing list] - IRC channel: #kde-speech on Freenode.<br />
<br />
==== Project: Streamline handling of various resources ====<br />
<br />
'''Brief explanation:''' Simon uses a multitude of different components: Scenarios, Base models, Shadow vocabulary, Language profiles, etc.<br />
<br />
While many of these components can be downloaded from within Simon, some can't and even for those that are better integrated, end-users still have to read additional documentation to know which components work together and which don't.<br />
<br />
The aim of this project is to bring the handling of these resources under a uniform and user-friendly interface.<br />
Specifically, the interface should resolve conflicts automatically and deduce an optimal default setup by itself (e.g. based on the system language and installed programs).<br />
<br />
'''Expected results:''' Much more user friendly setup.<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt<br />
<br />
'''Mentor:''' Peter Grasch <peter {+at+} grasch.net><br />
<br />
'''Resources:''' Some work (mostly brainstorming and UI design) was already conducted during Season of KDE 2013. Please contact me for details. This does not mean that this project is already assigned!<br />
<br />
=== Okular ===<br />
<br />
Okular is a Document Viewer. <br />
<br />
* [http://okular.kde.org Okular project web site]<br />
* [https://mail.kde.org/mailman/listinfo/okular-devel Mailinglist]<br />
* [http://webchat.freenode.net/?channels=okular #okular IRC channel on Freenode]<br />
<br />
==== Project: Better Accessibility for Okular ====<br />
'''Brief explanation:''' We should implement Qt accessibility APIs to make Okular usable by more users. This would allow blind people to read documents.<br />
<br />
'''Expected results:''' You should be able to "read" Okular documents using Orca or other "screen reading" software. As long as the document exposes the contents in text form, we can let assistive technology pick it up and present it to the user in a different way (for example non-textual). An important goal is to transfer as much of the structure of the document as possible, so that ideally the sematics (this is a heading, here is normal text, page number) are preserved. Finding well working PDF solutions is still a challenge for blind people on any operating system. For now the focus will be on Orca since it's the best working screen reader on Linux used by most blind users.<br />
<br />
'''Knowledge Prerequisite:''' C++<br />
<br />
'''Mentor:''' Albert, Frederik helping out with the accessibility parts<br />
<br />
==== Project: Implement PDF Poppler features ====<br />
'''Brief explanation:''' Poppler has some support for features we don't support, implement them<br />
<br />
'''Expected results:''' Poppler has support for pdf layer views, tagged pdf support, linearized pdf support yet we in Okular don't offer that features to our users. The result from this project is having those exposed to the final users<br />
<br />
'''Knowledge Prerequisite:''' C++<br />
<br />
'''Mentor:''' Albert<br />
<br />
==== Project: Implement SecurityHandler V6 in Poppler ====<br />
'''Brief explanation:''' Poppler needs to support SecurityHandler V6 to be able to open some pdf files<br />
<br />
'''Expected results:''' Poppler (and hence Okular) can open files with SecurityHandler V6 like the ones in https://bugs.freedesktop.org/show_bug.cgi?id=85368 and https://bugs.freedesktop.org/show_bug.cgi?id=88151<br />
<br />
'''Knowledge Prerequisite:''' C++<br />
<br />
'''Mentor:''' Albert<br />
<br />
=== KDE Connect ===<br />
==== Project: Improve KDE Connect encryption ====<br />
'''Brief explanation:''' We want to implement a better encrypted protocol for KDE Connect, as discussed here: http://albertvaka.wordpress.com/2013/09/19/how-kde-connect-encryption-works/ I would like to see a solid and peer-reviewed design before accepting this project.<br />
<br />
'''Expected results:''' Have a secure encryption algorithm implemented in both KDE (C++/Qt) and Android (Java) clients.<br />
<br />
'''Knowledge Prerequisite:''' Deep knowledge about encryption and security.<br />
<br />
'''Mentor:''' Albert Vaca <albertvaka {+at+} gmail.com><br />
<br />
'''Resources:''' kdeconnect<br />
<br />
==== Project: Build a Qt-only multiplatform KDEConnect client ====<br />
'''Brief explanation:''' We want to implement a cross platform client written in Qt that can run in virtually any platform supported by Qt (Windows Phone, Jolla, iOS, OSX, etc.) using the QPA (Qt Platform Abstraction) and QML. It will be challenging because Qt5 for phones is still quite new and implementing some features might not be possible yet, but it will be worth it to investigate what is possible and what not, and even contribute patches to Qt for some aspects. A lot of the core classes used in KDE Connect for Plasma could be reused and shared because they are mostly Qt (and would be part of the GSOC to make sure they end only using Qt, so we can get to re-use them). Not every feature is going to be available to every platform, and some plugins will be platform-specific, but as part of this GSOC project I would love to see it running as good as possible in one of the platforms already mentioned, and with basic functionallity in a couple more. (That is: center it around a platform and make it work well there, writting platform-specific plugins and code if needed, but making sure it still compiles and runs in other platforms).<br />
<br />
'''Knowledge Prerequisite:''' Qt5 and building cross-platform code.<br />
<br />
'''Mentor:''' Albert Vaca <albertvaka {+at+} gmail.com><br />
<br />
'''Resources:''' kdeconnect<br />
=== Solid ===<br />
==== Project: Improve sharing experience ====<br />
'''Brief explanation:''' Improve the content sharing experience in Plasma by extending and improving Samba share, implementing other ways of sharing and write new ways of discovering other people's shares.<br />
<br />
'''Expected results:''' It should be possible to discover "shares" using dolphin (possibly via a new kioslave?) and it should be possible to share a folder between two Plasma computers really fast and easy (possibly implementing an http server plus discovery via avahi).<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt, extra points for KIO experience.<br />
<br />
'''Mentor:''' Àlex Fiestas <afiestas {+at+} kde.org><br />
<br />
'''Resources:''' avahi, http, kdenetwork-fileshare<br />
<br />
=== Muon ===<br />
==== Project: Better support for your distribution ====<br />
<br />
'''Brief explanation:''' Muon needs to be ensured to work perfectly on any distribution, this project should target one of the (major) distributions, enumerate the problems to solve and propose solutions.<br />
<br />
'''Expected results:''' Muon users of your distribution will be happy ever-after.<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt, the technology required for the platform<br />
<br />
'''Mentor:''' Aleix Pol<br />
<br />
<br />
=== KWin ===<br />
==== Project: DRM/KMS backend for kwin_wayland ====<br />
<br />
'''Brief explanation:'''<br />
KWin_wayland currently only supports rendering to another Wayland server. In future it should be possible to go down to the hardware directly. For this a DRM/KMS rendering backend is required. This requires that a new backend is implemented for the OpenGL compositor and maybe the QPainter compositor. As KWin needs to handle kernel mode settings in this mode the output information need to be queried from the hardware and an implementation for KWin::Screens needs to be provided and from there propagated to the Wayland clients. In addition if the time of the project permits it an interface should be exposed for KScreen to configure the outputs.<br />
<br />
'''Expected results:''' KWin_wayland can render to DRM/KMS and fetches output information from the hardware<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt, Wayland, KMS and C knowlege are from advantage<br />
<br />
'''Mentor:''' Martin Gräßlin <mgraesslin@kde.org><br />
<br />
===Trojitá===<br />
<br />
[http://trojita.flaska.net/ Trojitá] is a fast IMAP e-mail client. Since late 2012, it is a part of KDE's extragear. The project focuses on delivering a usable, fast, standards-compliant, cross-platform and reliable e-mail client which can scale from cell phones to huge e-mail archives without annoying slowdowns.<br />
<br />
==== Project: Port to BlackBerry OS 10 ====<br />
<br />
'''Brief explanation:'''<br />
This work involves improving the separation of business logic from the UI concerns, an effort started and well-underway due to the Ubuntu Touch project, and adding a new GUI wirrten in QML for BlackBerry OS 10.<br />
<br />
'''Expected results:''' Trojitá running on BlackBerry Z10 with basic features, including reading and writing e-mails<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt, QML<br />
<br />
'''Mentor:''' Jan Kundrát <jkt@kde.org><br />
<br />
=== Gluon ===<br />
[http://gamingfreedom.org Gluon] is a project to build a Qt and KDE based game engine and game development tool. The engine is designed to support both mobile and desktop game development. We have ported the engine to Qt5 last year and are currently working on releasing a first Qt5 based version.<br />
<br />
==== Project: Build a QtQml based script system ====<br />
'''Brief explanation:''' In Qt4 QtScript was the solution to scripting support for applications. With the port to Qt5 the new QtQml module was introduced, including a new scripting system, but QtScript was still available. With Qt5.5 QtScript is planned to be deprecated and completely removed in Qt5.6. This means that our scripting system, which is currently built on QtScript, needs to be ported to QtQml.<br />
<br />
'''Expected results:''' A scripting system that can be used to write scripts for games.<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt at least. Experience with QtQuick/QML is a strong advantage.<br />
<br />
'''Mentor:''' Arjen Hiemstra<br />
<br />
==== Project: Expand Gluon Input ====<br />
'''Brief explanation:''' During the port to Qt5 we also overhauled the input system in Gluon to be more capable. However, we kept the implementation rather limited since we also had other elements to work on. This project would expand GluonInput with support for additional devices and platforms.<br />
<br />
'''Expected results:''' Additional platform and device plugins for GluonInput.<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt at least. Experience with platform-specific input libraries like XInput2 for Xorg is an advantage.<br />
<br />
'''Mentor:''' Arjen Hiemstra<br />
<br />
[[Category:Mentoring]]<br />
<br />
=== Krita ===<br />
[http://www.krita.org Krita] is an advanced 2D painting application. It support creating images from scratch from begin to end. Krita is a complex application and developers need to have a fair amount of experience in order to be able to do something.<br />
<br />
==== Project: Integrate Animation in Krita's core ====<br />
'''Brief explanation:''' We have gone through three iterations of animation support code in Krita. With this experience, it's become clear that we need to work the support for animatins right into Krita's core engine. This project comprises partly that, and partly updating the existing animation gui that was created in 2014.<br />
<br />
'''Expected results:''' by the end of the summer, the animation support in Krita should be ready for end-users to create 2D animations with, whether for game sprites or short cartoons. <br />
<br />
'''Knowledge Prerequisite:''' C++/Qt at least.<br />
<br />
'''Mentor:''' Boudewijn Rempt<br />
<br />
==== Project: Add Python Scripting to Krita ====<br />
'''Brief explanation:''' Krita has had two attempts at scripting support: through kjs and through kross. Neither was good enough. The VFXindustry standard for scripting is Python, and the goal of project is to integrate Python and PyQt directly into Krita.<br />
<br />
'''Expected results:''' by the end of the summer, users should be able to automate repetitive tasks, file import and export and add gui elements such as dockers, all written in PyQt.<br />
<br />
'''Knowledge Prerequisite:''' Deep knowledge of Python, SIP, C++ and Qt.<br />
<br />
'''Mentor:''' Boudewijn Rempt<br />
<br />
==== Project: Improve Normal Mapping Workflow ====<br />
'''Brief explanation:''' Normal maps are textures that describe surface detail on a 3d model by describing how much each pixel deviates from the surface the texture is put on. A normal map gives the ability to tell the renderer there's a different normal per texel(texture pixel), this way, you can describe subtle differences in surface without requiring the polygons for it. It does so by describing the normal angle to the surface by using the R, G and B channels. Now, normal maps, due to them being quite mathematical, are usually baked. But these bakes are not always perfect. furthermore, there's a lot of interest into handpainting textures, amongst which normal maps.<br />
<br />
'''Expected results:''' by the end of the summer, a new brush engine, which takes the tilt-direction and has that control the redness and greenness. And then takes the tilt-elevation, and has that control the blueness.<br />
<br />
'''Knowledge Prerequisite:''' knowledge of C++, Qt. and mathematics<br />
<br />
'''Mentor:''' Boudewijn Rempt<br />
<br />
===Calligra===<br />
==== Project: Variable thickness lines ====<br />
<br />
'''Brief explanation:''' One of the most fundamental basics of drawing is varying the width of your lines to show shape, form and perspective. Almost every line tapers at either end, and often gets thicker and thinner in different places as needed. For purely technical and histrorical reasons though, every vector program (Illustrator, Inkscape, Karbon etc) make curves all one hard width. <br />
This proposal is to create a variable width path shape / tool, much like the path tool, would allow drawing curves, but where each node could have its width set so that the line width changed smoothly from node to node. <br />
As a plugin for the Calligra suite, this would clearly benefit apps as Karbon and also Krita.<br />
<br />
'''Expected results:''' variable width path tool is able to change the width of any path node to an arbitary percentage (say 155%) of the stroke width. See http://bugsfiles.kde.org/attachment.cgi?id=56995 for mockup. The shape needs to be able to save and load in svg/odf.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt, SVG<br />
<br />
'''Mentor:''' Thorsten Zachmann < zachmann @ kde dot org ><br />
<br />
=== KIOSK ===<br />
==== Project: KIOSK Tool ====<br />
<br />
'''Brief explanation:''' Back in KDE 3 there was a tool to help administrators to configure the KDE Kiosk framework. The idea of this project is to start working on a new tool. The new application should be developed in close collaboration with the Visual Design Group to get a useful application for the targeted audience.<br />
<br />
'''Expected results:''' a functional prototype for a new Kiosk tool with a working backend to configure and restrict actions and configuration options.<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt<br />
<br />
'''Mentor:''' Martin Gräßlin <mgraesslin@kde.org><br />
<br />
=== Kubuntu ===<br />
==== Project: Port Ubiquity to Qt 5 ====<br />
<br />
'''Brief explanation:''' Ubiquity is the installer for Kubuntu. It should be ported to Qt 5. It is written in Python and can be fiddly to test because much of the development needs to be done on a live system. Once the Qt 5 port is complete there are numerous other bugs that can be fixed. Drop into #kubuntu-devel to say hi. Code is in launchpad.net/ubiquity.<br />
<br />
'''Expected results:''' Ubiquity bug free and running with Qt 5<br />
<br />
'''Knowledge Prerequisite:''' Python, PyQt<br />
<br />
'''Mentor:''' Jonathan Riddell<br />
<br />
<br />
=== Calamares ===<br />
<br />
[http://calamares.io/about/ Calamares] is a distribution-independent installer framework ([https://github.com/calamares/calamares/ code]). Calamares is participating to Google Summer of Code with KDE as umbrella organization. We are a young project, we are developing quickly, we are working with state of the art technologies (C++11, Qt 5, KDE Frameworks 5, Boost.Python) and we are solving exciting problems.<br />
<br />
Calamares is already shipped or is about to be shipped as the default system installer for several Linux distributions, including KaOS, BBQLinux, Fedora KDE, Manjaro, Netrunner Rolling, OpenMandriva, Tanglu, and others.<br />
<br />
See [http://teom.org/blog/kde/how-to-write-a-kick-ass-proposal-for-google-summer-of-code/ this post] for instructions on how to structure your Google Summer of Code proposal for Calamares.<br />
<br />
==== Project: Python interface refactor + Python view modules ====<br />
<br />
'''Brief explanation:''' Calamares is just a job executor at its core, and Calamares jobs are provided by Calamares modules. Installer pages are also provided by Calamares modules. These modules can currently be written in C++11 (as Qt plugins) or Python. The Python interface *works*, but it is slightly different from the C++ one, and it only supports jobs, not installer pages.<br />
This Google Summer of Code project is one of several that start with the same initial subtask, and then branch out in different directions.<br />
<br />
0) Refactor the Python interface so that writing a job module is not just implementing a function that expects globals, but rather inheriting from Calamares::Job or a wrapper thereof. Port all the Python modules to this updated interface. PythonQt 3.0 has just been released with support for Qt 5, so this is an option too, as a replacement for Boost.Python.<br />
<br />
1) Further improve the Python interface to allow writing view modules (i.e. installer pages) in Python. The student should do some research on the strengths and weaknesses of different approaches and produce a detailed action plan on what to wrap, how to wrap it, and which technologies to use to achieve said goals.<br />
<br />
Once both subtasks are complete there are various related tasks to be done. Drop into #calamares to say hi and discuss your proposal.<br />
<br />
'''Expected results:''' Equivalence between the Python and C++ module interfaces, for both job modules and view modules.<br />
<br />
'''Knowledge Prerequisite:''' At least some C++ experience is required; experience with CMake, Python, Boost.Python and other language binding solutions (PyQt, SWIG...) is a plus.<br />
<br />
'''Mentor:''' Teo Mrnjavac <teo@kde.org>, teo- on Freenode<br />
<br />
==== Project: Python interface refactor + Ruby modules interface ====<br />
<br />
'''Brief explanation:''' Calamares is just a job executor at its core, and Calamares jobs are provided by Calamares modules. Installer pages are also provided by Calamares modules. These modules can currently be written in C++11 (as Qt plugins) or Python. The Python interface *works*, but it is slightly different from the C++ one, and it only supports jobs, not installer pages.<br />
This Google Summer of Code project is one of several that start with the same initial subtask, and then branch out in different directions.<br />
<br />
0) Refactor the Python interface so that writing a job module is not just implementing a function that expects globals, but rather inheriting from Calamares::Job or a wrapper thereof. Port all the Python modules to this updated interface. PythonQt 3.0 has just been released with support for Qt 5, so this is an option too, as a replacement for Boost.Python.<br />
<br />
1) After completing subtask 0 for Python modules, achieve the same level of support for Ruby. The student should research technologies such as SWIG, RubyInline, FFI and Rice and produce a detailed action plan on how to deliver a Ruby interface for Calamares job modules. The latter (Rice) seems to be the most promising for the kind of embedding we need and most similar to Boost.Python, but this must be further ascertained. Packaging and deployment should also be taken into account.<br />
<br />
Once both subtasks are complete there are various related tasks to be done. Drop into #calamares to say hi and discuss your proposal.<br />
<br />
'''Expected results:''' Equivalence between the Python, Ruby and C++ job module interfaces.<br />
<br />
'''Knowledge Prerequisite:''' At least some C++ experience is required; experience with CMake, Ruby, Python, Boost.Python and other language binding solutions (PyQt, SWIG...) is a plus.<br />
<br />
'''Mentor:''' Teo Mrnjavac <teo@kde.org>, teo- on Freenode; Rohan Garg <rohan@kde.org>, shadeslayer on Freenode<br />
<br />
==== Project: Python interface refactor + Python testing mechanism ====<br />
<br />
'''Brief explanation:''' Calamares is just a job executor at its core, and Calamares jobs are provided by Calamares modules. Installer pages are also provided by Calamares modules. These modules can currently be written in C++11 (as Qt plugins) or Python. The Python interface *works*, but it is slightly different from the C++ one, and it only supports jobs, not installer pages.<br />
This Google Summer of Code project is one of several that start with the same initial subtask, and then branch out in different directions.<br />
<br />
0) Refactor the Python interface so that writing a job module is not just implementing a function that expects globals, but rather inheriting from Calamares::Job or a wrapper thereof. Port all the Python modules to this updated interface. PythonQt 3.0 has just been released with support for Qt 5, so this is an option too, as a replacement for Boost.Python.<br />
<br />
1) Our Python testing facilities are currently limited to a single script (src/modules/testmodule.py). The student should present an action plan for a more comprehensive testing mechanism, which may or may not be based on testmodule.py, and may or may not involve libcalamares instead. This testing mechanism could further be integrated with our [http://calamares.io/ci/ Jenkins continuous integration system].<br />
<br />
Once both subtasks are complete there are various related tasks to be done. Drop into #calamares to say hi and discuss your proposal.<br />
<br />
'''Expected results:''' Equivalence between the Python and C++ job module interfaces, and a comprehensive testing mechanism for Python job modules.<br />
<br />
'''Knowledge Prerequisite:''' At least some C++ and Python experience is required; experience with CMake, Boost.Python and software testing is a plus.<br />
<br />
'''Mentor:''' Teo Mrnjavac <teo@kde.org>, teo- on Freenode<br />
<br />
==== Project: Debian installer support ====<br />
<br />
'''Brief explanation:''' Calamares is just a job executor at its core, and Calamares jobs are provided by Calamares modules. Some of these modules are common for most Linux distributions, and some might be heavily distribution-specific.<br />
<br />
Calamares is already capable of installing a Debian-based system, simply by unpacking a squashfs image like most other distributions, but this is less than ideal: Debian already provides a sophisticated install system (debian-installer), and Calamares should take advantage of it.<br />
<br />
The student should propose a detailed action plan, with the ultimate deliverable being one or more job modules that implement a system install procedure based on debian-installer. Additional changes to the user interface (view modules) may or may not be needed for this, depending on the feature set proposed by the student. From a top-down point of view, Calamares should behave like a debian-installer frontend, not unlike Ubiquity, but without compromising its distribution-agnostic design.<br />
<br />
Once all the milestones have been achieved there are various related tasks to be done and bugs to be fixed. Drop into #calamares to say hi and discuss your proposal.<br />
<br />
'''Expected results:''' Calamares should be able to install a Debian based system using debian-installer as backend.<br />
<br />
'''Knowledge Prerequisite:''' The student should have experience with a Debian based distribution and C++; experience with Python, debian-installer and Debian packaging is a plus.<br />
<br />
'''Mentors:''' Rohan Garg <rohan@kde.org>, shadeslayer on Freenode; Teo Mrnjavac <teo@kde.org>, teo- on Freenode<br />
<br />
==== Project: The Ultimate Calamares user experience ====<br />
<br />
'''Brief explanation:''' Design and development of Calamares started in June 2014, with deliverables as early as Fall 2014, so some hard choices had to be made in order to ship quickly. While Calamares doesn't look intensely unpleasant when compared to some other system installers, it is not a triumph of user experience design either.<br />
<br />
The KDE Visual Design Group has already produced [https://community.kde.org/KDE_Visual_Design_Group/Calamares_Design_Project a design for Calamares] in agreement with the Calamares team. It is now time to implement this design.<br />
<br />
The student should propose a detailed action plan, with the ultimate deliverable being a complete visual overhaul of Calamares, including libcalamaresui and essential view modules. Intermediate deliverables must be listed in the proposal, with as much granularity as possible. The implementation should not deviate from the KDE VDG's design unless otherwise discussed, and during the coding season the student is expected to closely cooperate with both the Calamares team and the KDE VDG.<br />
<br />
Once all the milestones have been achieved there are various related tasks to be done and bugs to be fixed. Drop into #calamares to say hi and discuss your proposal.<br />
<br />
'''Attention''': This is a '''very challenging''' task, somewhat more demanding than the other ones we offer, and suitable for more experienced students. First time students are encouraged to consider our Python, Ruby or Debian tasks too. Exceptionally for this project we are requiring a '''qualification task''' to be completed by the prospective student. This qualification task should be delivered as a patch against master and sent to the mentor (Teo Mrnjavac <teo@kde.org>) ''before'' submitting a proposal for this project idea through the Google Summer of Code web application. Applicants that have not submitted a qualification task for this project will not be considered. The qualification task is defined as follows: '''implement the KDE VDG's design for the Users page (the Calamares module "users")'''. The webcam picture feature does not have to be implemented, but the avatar chooser is required. See [https://dl.dropboxusercontent.com/u/6631774/CalaUsersPageDesign.png this mockup].<br />
<br />
'''Expected results:''' Calamares should look and feel as designed by the KDE Visual Design Group.<br />
<br />
'''Knowledge Prerequisite:''' The student should have experience with Qt and C++; QML experience is a big plus.<br />
<br />
'''Mentors:''' Teo Mrnjavac <teo@kde.org>, teo- on Freenode<br />
<br />
=== Kopete ===<br />
<br />
[https://kopete.kde.org Kopete] is an instant messenger supporting AIM, Bonjour, Gadu-Gadu, GroupWise, ICQ, Jabber (XMPP, Google Talk, Facebook, ...), Meanwhile, QQ, Skype, Windows Live Messenger, WinPopup, Yahoo and more. It is designed to be a flexible and extensible multi-protocol system suitable for personal and enterprise use.<br />
<br />
==== Project: Better history plugin ====<br />
<br />
'''Brief explanation:''' History plugin is responsible for archiving chat history and also searching for old chat messages in archive. Currently Kopete has two history plugins: one which stores data to XML files and another one which stores data to SQLite database. Both plugins have some diffetent limitations like slow speed, bad search support, bad support for HTML messages, bad support for multiuser chat... This project aims to fix existing history plugin(s) or designing & implementing new one.<br />
<br />
'''Expected results:''' Working fast chat history plugin with support for handling HTML messages, multichat messages, ability to search for messages in history, import/export feature (importing from services like googletalk/facebook can be great too), ...<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt, XML or SQLite (or any other data storage usefull for chat messages)<br />
<br />
'''Mentor:''' Pali Rohár <pali.rohar@gmail.com>, Pali on #kopete<br />
<br />
'''Co-Mentor:''' Kaushik Saurabh <roideuniverse@gmail.com>, roide on #kopete<br />
<br />
'''Mailing list:''' kopete-devel@kde.org (archive at: [http://lists.kde.org/?l=kopete-devel&r=1&w=2 lists.kde.org])<br />
<br />
==== Project: Jabber message archive ====<br />
<br />
'''Brief explanation:''' When you use more jabber clients and you want to have full chat history in all clients, you need to synchronize message history between all clients. To make it easier for different jabber clients, there is jabber protocol extension for storing history directly on jabber servers which allows clients to download (missing) messages:<br />
<br />
XEP-0136: Message Archiving<br />
<br />
XEP-0313: Message Archive Management<br />
<br />
'''Expected results:''' Working support for XEP-0136 or XEP-0313<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt, Jabber protocol<br />
<br />
'''Mentor:''' Pali Rohár <pali.rohar@gmail.com>, Pali on #kopete<br />
<br />
'''Mailing list:''' kopete-devel@kde.org (archive at: [http://lists.kde.org/?l=kopete-devel&r=1&w=2 lists.kde.org])<br />
<br />
==== Project: PGP plugin ====<br />
<br />
'''Brief explanation:''' Kopete has plugin which can sign or encrypt outgoing messages using GPG. It can also verify signature and decrypt incoming messages. This plugin is old, uses private kdepim library and needs fixing. It is hard to compile and use it. For this project I would except fixing this plugin to work again or writing new PGP plugin from scratch.<br />
<br />
'''Expected results:''' Working support for PGP in Kopete<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt, GPG<br />
<br />
'''Mentor:''' Pali Rohár <pali.rohar@gmail.com>, Pali on #kopete<br />
<br />
'''Mailing list:''' kopete-devel@kde.org (archive at: [http://lists.kde.org/?l=kopete-devel&r=1&w=2 lists.kde.org])<br />
<br />
==== Project: IRC protocol ====<br />
<br />
'''Brief explanation:''' Kopete KDE3 version had plugin for IRC protocol. Porting that IRC plugin to new KDE versions was never finished and Kopete does not have working support for IRC yet.<br />
<br />
'''Expected results:''' Restore IRC protocol into Kopete<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt, IRC protocol<br />
<br />
'''Mentor:''' Pali Rohár <pali.rohar@gmail.com>, Pali on #kopete<br />
<br />
'''Mailing list:''' kopete-devel@kde.org (archive at: [http://lists.kde.org/?l=kopete-devel&r=1&w=2 lists.kde.org])</div>Shantanu Tusharhttps://community.kde.org/index.php?title=SoK/Ideas/2014&diff=40040SoK/Ideas/20142014-10-26T12:04:05Z<p>Shantanu Tushar: Add PMC DLNA/UPnP idea</p>
<hr />
<div>==Ideas==<br />
<br />
=== Information for students ===<br />
<br />
These ideas were contributed by our developers and users. They are sometimes vague or incomplete. If you wish to submit a proposal based on these ideas, you may wish to contact the developers and find out more about the particular suggestion you're looking at.<br />
<br />
When writing your proposal or asking for help from the general KDE community don't assume people are familiar with the ideas here. KDE is really big!<br />
<br />
If there is no specific contact given you can ask questions on the general KDE development list kde-devel@kde.org. See [http://www.kde.org/mailinglists/ the KDE mailing lists page] for information on available mailing lists and how to subscribe.<br />
<br />
<br />
=== Project: Sample project ===<br />
<br />
'''Brief explanation:'''<br />
<br />
'''Expected results:'''<br />
<br />
'''Knowledge Prerequisite:'''<br />
<br />
'''Mentor:'''<br />
<br />
When adding an idea to this section, please try to include the following data:<br />
<br />
:*if the application is not widely known, a description of what it does and where its code lives<br />
:*a brief explanation<br />
:*the expected results<br />
:*pre-requisites for working on your project<br />
:*if applicable, links to more information or discussions<br />
:*mailing list or IRC channel for your application/library/module<br />
:*your name and email address for contact (if you're willing to be a mentor)<br />
<br />
If you are not a developer but have a good idea for a proposal, get in contact with relevant developers first.<br />
<br />
=== Amarok: Implementing MediaArtStorageSpec ===<br />
<br />
'''Brief explanation:''' MediaArtStorageSpec provides a mechanism for applications to store and retrieve artwork associated with media content, like music from an album, the logo for a radio station, or a graphic representing a podcast. The storage medium for artwork is a file system, inside a user's home directory.<br />
<br />
It's already in use by Banshee and tracker on the Nokia N9 smartphone.<br />
<br />
This can be implemented in the Amarok CollectionScanner, nepomuk and other KDE components where it makes sense.<br />
<br />
'''Expected results:''' If we save album art using this spec it will be picked up by those applications. If we search for album art using this spec we avoid overhead and reduce code complexity. Fix bug: https://bugs.kde.org/show_bug.cgi?id=296049<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt, Amarok codebase<br />
<br />
'''Mentor:''' Vedant Agarwala (vedant.kota<at>gmail<dot>com)<br />
<br />
=== Project: Live demo for KWin Effects ===<br />
<br />
'''Brief explanation:''' The idea is to offer a live demo for the available KWin effects. This would consists of starting a nested KWin instance as a sub-session and completely control it from the outside. E.g. for the Present Windows Effect it would be needed to have several windows open, control the mouse cursor to demonstrate the screen edge activation, support faking keyboard input for the filtering, etc.<br />
<br />
The demo mode would have to use the Wayland backend in KWin as that's the only way to get OpenGL in a nested session (Xephyr doesn't reliable support it). This means part of the project would involve implementing missing features in the Wayland backend like for example a windowed mode and the interfaces to fake keyboard input (needed for e.g. on-screen displays). It also requires to complement the work on running nested KWin instances and better separate it. At the moment it's possible to control the DBus service name, similarly it would be needed to change the config file and kglobalaccel module name, etc.<br />
<br />
'''Expected results:''' Infrastructure in place and at least one Effect which can be run in a live demo.<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt, Wayland would be preferable<br />
<br />
'''Mentor:''' Martin Gräßlin<br />
<br />
=== Project: Test framework for KWin Effects ===<br />
<br />
'''Brief explanation:''' So far KWin Effects are not under test coverage. But there are quite some effects and bugs which would need a unit test. In the scope of this project a test framework for the effects should be created. It needs to implement a specific EffectsHandler which allows full control over the effect stack and needs to implement a mock EffectWindow which can also be created and tested by the tests. An additional challenge is the OpenGL dependency of several effects. Because of that the framework has to also setup an OpenGL context (might use Qt for it).<br />
<br />
'''Expected results:''' Infrastructure in place and at least one Effect which is tested.<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt<br />
<br />
'''Mentor:''' Martin Gräßlin<br />
<br />
<br />
=== Project: Theme designing for Pairs ===<br />
<br />
'''Brief explanation:''' Pairs is a relatively new educational application of KDE Edu family. Pairs stimulates your memory and logic skills. It aims to help the learning for pre-school kids. The student should download, install this application and use it and also improve documentation describing the main elements of the interface, such as how to open a theme, create a new one and add all the needed information to have it ready for usage, apart from developing new creative themes that could be available as add-ons.<br />
<br />
'''Expected results:''' New creative and witty themes for Pairs, improved documentation and proper white space indentation of the code<br />
<br />
'''Knowledge Prerequisite:''' Qt, QML, XML would work <br />
<br />
''' Expected mentors:''' [mailto:marco.calignano@gmail.com Marco Calignano] | [mailto:aleixpol@kde.org Aleix Pol]| [mailto:heena393@gmail.com Heena Mahour]<br />
<br />
<br />
=== Project: Route to KF5 ===<br />
<br />
'''Brief explanation:''' Kde-edu applications are getting ported to KF5 [1]. Have a look at [2], the student can work on the idea in case the app has no maintainer.<br />
<br />
'''Expected results:''' Shiny kde-edu app ported to KF5<br />
<br />
'''Knowledge Prerequisite:''' Qt, QML, KF5<br />
<br />
'''References:'''<br />
[1] https://www.kde.org/announcements/kde-frameworks-5.0.php<br />
[2] https://community.kde.org/KDEEdu/RouteToKF5<br />
<br />
<br />
''' Expected mentors:''' [mailto:marco.calignano@gmail.com Marco Calignano] | [mailto:aleixpol@kde.org Aleix Pol]| [mailto:heena393@gmail.com Heena Mahour]<br />
<br />
=== Project: Finish test.kubuntu.co.uk ===<br />
<br />
Update: This project has a likely student to do it<br />
<br />
'''Brief explanation:''' We want a new website for Kubuntu, it is half completed, finish it off<br />
<br />
'''Expected results:''' A shiny new kubuntu.org<br />
<br />
'''Knowledge Prerequisite:''' PHP, Wordpress, web server sysadmin including benchmarking, databases, website design<br />
<br />
'''Mentor:''' Jonathan Riddell<br />
<br />
Kubuntu wants a new website and we have a setup half done at test.kubuntu.co.uk. The final thing should complete the import of data from the current website, pick a theme which looks good on desktop and mobile, integrate with social media and contain content which helps people quickly get into using Kubuntu. It should be benchmarked to ensure it works under load.<br />
<br />
You should be familiar with Wordpress and PHP coding and with the needs of a user of the website.<br />
<br />
We are at #kubuntu-devel IRC on Freenode.<br />
[[Category:Mentoring]]<br />
<br />
=== Project: Improve/refresh KHangMan ui ===<br />
<br />
'''Brief explanation:''' KHangMan has been ported to Qt5/kf5 but the ui is still svg based for the desktop version. It would be good to update it to use qml and have one ui for desktop and mobile/touch rather than three uis similar to how KAnagram recently got one qml based ui. This project would combine the best of the desktop/plasma-active/harmattan uis into one qml based ui that is still themable.<br />
<br />
'''Expected results:''' KHangMan with one qml based ui that works on desktop and touch devices.<br />
<br />
'''Knowledge Prerequisite:''' Qt, QML, KF5<br />
<br />
'''References:'''<br />
<br />
''' Expected mentors:''' [mailto:jpwhiting@kde.org Jeremy Whiting]<br />
<br />
=== Project: DLNA/UPnP support for Plasma Media Center ===<br />
<br />
'''Brief explanation:''' Plasma Media Center (PMC) currently exists as a functional media center application which can be used with KDE. It already integration with Desktop Search to fetch and play your media and DVB TV support is on its way. As part of PMC BoK at Akademy 2014, the attendees realized that PMC needs to become more relevant for a modern user's needs.<br />
For this, one such feature which is required is DLNA/UPnP support so that a user can play media on other devices to a Big screen device running PMC or play media from PMC to a Smart TV.<br />
<br />
'''Expected results:''' The following features should be working at the end of the project-<br />
# Using gupnp-av-cp (from gupnp-tools), the user will browse media on a media server (lets say MediaTomb etc) and be able to play it on PMC<br />
# PMC should be able to show stats about (current progress/duration etc) and control (play/pause etc) the media played in the previous step<br />
# PMC is able to act as a media server which appears in gupnp-av-cp and lists the media files that would normally be listed in PMC.<br />
<br />
'''Knowledge Prerequisite:''' Qt/QML knowledge is mandatory, the student must research about DLNA/UPnP libraries available and the proposal must include which ones are to be used. Working demo Qt app with one of the above features would be a huge plus, though not mandatory.<br />
<br />
''' Expected mentors:''' [mailto:shantanu@kde.org Shantanu Tushar] | [mailto:ksinny@gmail.com Sinny Kumari]| [mailto:sujith.h@gmail.com Sujith H]</div>Shantanu Tusharhttps://community.kde.org/index.php?title=Plasma/Plasma_Media_Center&diff=38270Plasma/Plasma Media Center2014-06-29T06:08:44Z<p>Shantanu Tushar: Add a goal</p>
<hr />
<div>This page describes the goals for Plasma Media Center (PMC), explains the design choices being made and details the outstanding tasks remaining. <br />
<br />
== Goal ==<br />
To have a media center experience that makes it very easy for people to enjoy their multimedia on a device.<br />
<br />
== Release Info ==<br />
<br />
=== Plasma Media Center 1.0.0 release ===<br />
Plasma Media Center first stable release has been made recently on 20th March 2013.<br />
* KDE Dot article link : http://dot.kde.org/2013/03/20/plasma-media-center-release-one<br />
<br />
===Release and Feature Plan===<br />
=====Plasma Media Center 1.1=====<br />
http://community.kde.org/Plasma/Plasma_Media_Center/Release_1.1<br />
=====Plasma Media Center 1.2=====<br />
http://community.kde.org/Plasma/Plasma_Media_Center/Release_1.2<br />
=====Plasma Media Center 1.3=====<br />
http://community.kde.org/Plasma/Plasma_Media_Center/Release_1.3<br />
<br />
== Form Factors ==<br />
The following devices (or rather, form factor) are targeted-<br />
* Desktop computer<br />
* Laptop, netbook - similar convertible devices (touch support is good to have)<br />
* Big TV screen connected to a computing device (such as desktop computer, raspberry pi etc)<br />
<br />
== Use Cases ==<br />
<br />
=== Viewing Media On The Go With a Laptop ===<br />
<br />
Joe is on a train / airplane travelling between two cities. The trip is long enough to watch the latest episode of his favourite T.V. show which he downloaded the night before from his PVR at home. Joe pops open his laptop, clicks on the Desktop Toolbox and selects "Media Center". PMC loads and he selects "Video", which presents a list of videos on his internal hard drive. <br />
<br />
=== Viewing Media At Home, Laptop -&gt; T.V. ===<br />
<br />
Jane is at home and wants to show her dinner guests pictures from the recent weekend trip she went on. Jane plugs her laptop into the living room television, opens the application launcher (Kickoff, Lancelot) and selects "Media Center". PMC starts up and she selects "Photos" which shows various sets of photo albums. After going through the "Weekend Ski Trip" photos, she goes back and selects Videos -&gt; Youtube and loads a Youtube playlist of top 40 music videos to play in the background while they visit. <br />
<br />
=== A PVR Style Experience ===<br />
<br />
Jaqueline sits down on the couch with her husband Jack and they turn on the television and their Plasma Media Center set top box. They grab the remote control and check the videos that they had recorded / downloaded but haven't watched yet. They select an episode of House and another of Fawlty Towers and press "Play".<br />
<br />
=== Media Center for Plasma Active ===<br />
<br />
PMC now works well with Plama Active. Small video showing PMC running on ExoPC at http://www.youtube.com/watch?v=B8yV2NKiADM .<br />
<br />
== Design ==<br />
<br />
=== Architecture ===<br />
<br />
On a very high level, PMC is composed of QML components for different parts of the MediaCenter.<br />
<br />
==== Media Elements ====<br />
<br />
* Media Welcome<br />
It is a QML componnet which hosts the welcome screen which is presented to the user when PMC starts up.<br />
<br />
* Media Browser<br />
It is a QML component which allows user to browse through the media from a backend and to select the desired media to play or view.<br />
<br />
* Media Player<br />
It is a QML component that uses Phonon QML to play Audio/Video and show Images.<br />
<br />
* Media Controller<br />
It is QML component that allows user to control currently playing media status like play/pause, seek, volume.<br />
<br />
*RuntimeData<br />
It is a QML component which handles various media information that is needed when PMC is running.<br />
<br />
*Playlist<br />
It is a QML component which contains list of media (Music and Videos) files added by user. User can add or remove media anytime from it.<br />
<br />
*ImageViewer<br />
It is a QML component which is responsible to display picture in PMC. It contains pictureStrip component too, which display all available pictures of a directory in the form of strip and provides flexibility to view next, previous and any random selected picture from strip.<br />
<br />
==== Browsing Backends ====<br />
<br />
Another very important component of PMC, browsing backends support PMC to have different sources for media to be used. Backends are plguins so one can, for example, write a plugin to show all images from a image sharing website<br />
<br />
* Local files<br />
<br />
This backend collection allows the user to browse her local filesystem for media. It exposes three backends-<br />
<br />
** Local pictures<br />
** Local music<br />
** Local videos<br />
<br />
* Metadata<br />
<br />
This backend collection uses Plasma Active's metadata model to fetch media from Nepomuk. This should allow us to create groupings based on media tags (such as artist, album etc). Similar to local, this contains three backends-<br />
<br />
** Metadata pictures<br />
** Metadata music<br />
** Metadata videos<br />
<br />
* Online Services<br />
This backend collection fetches media from Internet. Currently available backends are-<br />
** Flickr : This backend fetches images related to the given search string from flickr.<br />
** Picasa : This backend needs user to enter his/her Google login credential to browse through Albums and Pictures<br />
** Youtube : This backend allows user to view videos from youtube. User can search using searcbox and can play video of his own choice in PMC<br />
<br />
==== Libs ====<br />
It contains core MediaCenter classes to help in functionality.<br />
<br />
==== Shells ====<br />
<br />
This has the actual PMC shell which loads all the components and specifies the positioning of different components within shell. It also provides interconnection between various components.<br />
<br />
=== Mockups ===<br />
<br />
Here are three early Mockups by [http://pinheiro-kde.blogspot.com/ Nuno Pinheiro] (with permission). The top/bottom panel idea has been taken from here (higher resolutions of these on svn)<br> <br />
<br />
[[Image:Nuno albums.JPG|301x189px|Albums]] <br />
<br />
[[Image:Nuno pics.JPG|301x188px]] <br />
<br />
[[Image:Nuno playlist.JPG|303x189px]]<br />
<br />
'''These are from the very early ideas, for current screenshots, see the Status Reports section at the bottom of this page'''<br />
<br />
=== Navigation within PMC ===<br />
<br />
*Keyboard<br />
*Mouse<br />
*Touch<br />
*Remote control<br />
<br />
== TODO ==<br />
<br />
=== Accessibility ===<br />
Make sure that the following input methods work-<br />
*Keyboard ( works almost fine now)<br />
*Touch Gestures (pinch, swipe etc)<br />
*TV Remote (wiimote etc)<br />
<br />
=== Visualizations for music ===<br />
<br />
=== [[Plasma/Plasma Media Center/Podcast | Rss Podcast Integration]] ===<br />
<br />
== Getting started ==<br />
If you are new to Plasma Media Center and want to start doing development in it, then take a look at http://community.kde.org/Plasma/Plasma_Media_Center/getting_started_with_PMC<br />
<br />
== Current contributors ==<br />
<br />
'''Akshay Ratan''' - akshay_r on freenode<br />
<br />
'''Marco Martin''' - notmart on freenode<br />
<br />
'''Shantanu Tushar''' - Shaan7 on freenode<br />
<br />
'''Sinny Kumari''' - ksinny on freenode<br />
<br />
'''Sujith H''' - sujith_h on freenode<br />
<br />
== Past contributors ==<br />
<br />
'''Christophe Olinger''' - binarylooks on freenode, olingerc on gitorious.org<br> <br />
<br />
'''Sebastian''' - sebas on freenode <br />
<br />
'''Alessandro''' - alediaferia on freenode<br />
<br />
'''Christopher Blauvelt''' - cblauvelt on freenode <br />
<br />
'''Lukas Appelhans''' - boom1992 on freenode<br />
<br />
'''Onur-Hayri Bakici'''<br />
<br />
'''Fabian Riethmayer''' - fabian on freenode<br />
<br />
... add your name if you have contributed and its missing<br />
<br />
== Plasma Media Center IRC&nbsp;Channel on Freenode ==<br />
<br />
* #plasma on irc.freenode.net<br><br />
<br />
== Repository ==<br />
<br />
Code is browsable at [https://projects.kde.org/projects/extragear/multimedia/plasma-mediacenter/repository PMC @ kde git]<br />
<br />
==Meetings / BoFs==<br />
<br />
* '''2013''' Akademy 2013 [[/Akademy2013/]]<br />
* '''2012''' BoF at Akademy 2012 [[/Akademy2012/]]<br />
* '''2012''' December IRC meeting [[/DecemberMeeting/]]<br />
<br />
== Status Reports ==<br />
<br />
'''2012''' [http://sinny.in/node/17] [http://sinny.in/node/18] [http://sinny.in/node/19] [http://www.sinny.in/node/23] [http://sinny.in/node/25] [http://sinny.in/node/27]<br />
<br />
'''2011''' [http://sinny.in/node/12] [http://sinny.in/node/13] [http://sinny.in/node/14] [http://sinny.in/node/15]<br />
<br />
'''2010''' [http://alediaferia.blogspot.com/2010/03/call-for-devs-part-i.html] [http://alediaferia.blogspot.com/2010/04/welcome-to-my-gsoc-student-personal.html] [http://blog.binarylooks.com/2010/05/plasma-media-center-status-report-and-introduction/] <br />
<br />
'''2009''' [http://alediaferia.wordpress.com/2009/04/22/smells-like-summer-of-code/] [http://alediaferia.wordpress.com/2009/04/28/adventures-in-mediacenter-land/] [http://alediaferia.wordpress.com/2009/04/28/get-your-cover/] [http://alediaferia.wordpress.com/2009/05/27/plasmatube/] [http://alediaferia.wordpress.com/2009/06/11/browsing-your-medias/] [http://alediaferia.wordpress.com/2009/06/17/rating-your-medias/] [http://alediaferia.wordpress.com/2009/06/24/media-center-quick-update/] [http://alediaferia.wordpress.com/2009/07/11/still-alive/] [http://alediaferia.wordpress.com/2009/08/08/mediacenter-again/] [http://alediaferia.blogspot.com/2009/08/gsoc-ends-mediacenter-continues.html] [http://alediaferia.blogspot.com/2009/09/plug-your-model-in-mediacenter.html]<br />
<br />
----<br />
<br />
Find the older design and discussions here [[/History/]]</div>Shantanu Tusharhttps://community.kde.org/index.php?title=GSoC/2014/Ideas&diff=36631GSoC/2014/Ideas2014-02-26T06:33:49Z<p>Shantanu Tushar: /* Plasma Media Center */</p>
<hr />
<div>[[Category:Mentoring]]<br />
See also: [[../../|GSoc Instructions]], [[../../2013/Ideas|Last year ideas]]<br />
<br />
== Guidelines ==<br />
<br />
=== Information for Students ===<br />
<br />
These ideas were contributed by our developers and users. They are sometimes vague or incomplete. If you wish to submit a proposal based on these ideas, you may wish to contact the developers and find out more about the particular suggestion you're looking at.<br />
<br />
Being accepted as a Google Summer of Code student is quite competitive. Accepted students typically have thoroughly researched the technologies of their proposed project and have been in frequent contact with potential mentors. Simply copying and pasting an idea here will not work. On the other hand, creating a completely new idea without first consulting potential mentors is unlikely to work out.<br />
<br />
When writing your proposal or asking for help from the general KDE community don't assume people are familiar with the ideas here. KDE is really big!<br />
<br />
If there is no specific contact given you can ask questions on the general KDE development list kde-devel@kde.org. See [http://www.kde.org/mailinglists/ the KDE mailing lists page] for information on available mailing lists and how to subscribe.<br />
<br />
=== Adding a Proposal ===<br />
<br />
{{Note|Follow the template of other proposals!}}<br />
<br />
==== Project: ====<br />
<br />
'''Brief explanation:'''<br />
<br />
'''Expected results:'''<br />
<br />
'''Knowledge Prerequisite:'''<br />
<br />
'''Mentor:'''<br />
<br />
When adding an idea to this section, please try to include the following data:<br />
<br />
:*if the application is not widely known, a description of what it does and where its code lives<br />
:*a brief explanation<br />
:*the expected results<br />
:*pre-requisites for working on your project<br />
:*if applicable, links to more information or discussions<br />
:*mailing list or IRC channel for your application/library/module<br />
:*your name and email address for contact (if you're willing to be a mentor)<br />
<br />
If you are not a developer but have a good idea for a proposal, get in contact with relevant developers first.<br />
<br />
<br />
==Ideas==<br />
<br />
===Your Own Idea ===<br />
<br />
==== Project: Something that you're totally excited about ====<br />
<br />
'''Brief explanation:''' Do you have an awesome idea you want to work on with KDE but that is not among the ideas below? That's cool. We love that! But please do us a favor: Get in touch with a mentor early on and make sure your project is realistic and within the scope of KDE. That will spare you and us a lot of frustration.<br />
<br />
'''Expected results:''' Something you and KDE loves<br />
<br />
'''Knowledge Prerequisite:''' Probably C++ and Qt but depends on your project<br />
<br />
'''Mentor:''' Try to see who in KDE is interested in what you want to work on and approach them. If you are unsure you can always ask in #kde-soc on Freenode IRC.<br />
<br />
=== Amarok ===<br />
<br />
==== Project: Lyric support improvements ====<br />
<br />
'''Brief explanation:''' Amarok's support for fetching and displaying of lyrics is very limited. It just fetches from a single provider and many times no results are fetched, sometimes due to minor errors in track/album/artist name. Add some more providers of online lyrics databases. If no results are found this can be coupled with the better tagguessing feature (and even if the tags are not saved), the the lyrics providers can be searched with these guessed tags.<br />
Then, improve the lyrics display. Currently it just scrolls at a constant rate, generally that's inconsistent with the actual playback of the song. All .lrc files have timestamps, that can be followed: probably by highlighting the line playing.<br />
<br />
'''Expected results:''' Greatly increase the probability of fetching of the lyrics for any song. In the lyrics display, a highlighted line will display the current line being played.<br />
<br />
'''Knowledge Prerequisite:''' Knowledge of the Amarok code base (hence of Qt, C++). Basic knowledge of webservices.<br />
<br />
'''Mentor:''' Mark Kretschmann<br />
<br />
===digiKam===<br />
<br />
digiKam is an advanced digital photo management application for Linux, Windows, and Mac-OSX.<br />
<br />
* [http://www.digikam.org digiKam project web site]<br />
* [https://mail.kde.org/mailman/listinfo/digikam-devel Mailinglist]<br />
* [https://plus.google.com/+digikam Google+ page]<br />
* [http://webchat.freenode.net/?channels=digikam #digikam IRC channel on Freenode]<br />
<br />
==== Project: Integrate KIPI Export Plugins directly in the GUI of KIPI host applications ====<br />
<br />
'''Brief explanation:''' It would be nice to be able to encapsulate the Export/Import KIPI plugins directly in the GUI of the host application without opening a dedicated window. For the Export Plugins the place to load the plugins will be BQM and for the Import Plugins this can be in the digiKam import tool or in the main view. For this one must factorize the export/import kipi plugin interface and to group the common calls into a virtual interface, to implement tree and list view for the plugins.<br />
<br />
'''Dependencies:''' : digiKam KIPI interface, libkipi, KIPI Plugins <br />
<br />
'''Bugzilla entries:''' [https://bugs.kde.org/show_bug.cgi?id=235572 235572], [https://bugs.kde.org/show_bug.cgi?id=221704 221704] ,[https://bugs.kde.org/show_bug.cgi?id=143978 143978]<br />
<br />
'''Knowledge Prerequisite:''' C/C++, Qt/KDE, GUI<br />
<br />
'''Expected results:''' KIPI host apps that are compatible with the project will load KIPI Plugins in the BQM, the others will load the plugins as it's done right now without breaking any compatibility.<br />
<br />
'''Difficulty:''' high<br />
<br />
'''Lead Mentor:''' Gilles Caulier <caulier dot gilles at gmail dot com><br />
<br />
==== Project: Port Greystoration CImg interface to GMic ====<br />
<br />
'''Brief explanation:''' digiKam include [https://projects.kde.org/projects/extragear/graphics/digikam/repository/revisions/master/show/libs/3rdparty/cimg CImg library] to be able to use Greystoration algorithm which give nice fix to image based on Vortex theory, as [http://www.flickr.com/photos/digikam/8535414322/sizes/l/in/photostream/ Restoration tools]. Since CImg > 1.3.0, Greystoration algorithm have been moved in a new library named GMic with a completely different API. The goal of this project is to adapt digiKam Greystoration interface to GMic library.<br />
<br />
'''Dependencies:''' [https://projects.kde.org/projects/extragear/graphics/digikam/repository/revisions/master/show/libs/dimg/filters/greycstoration digiKam core], [https://projects.kde.org/projects/extragear/graphics/digikam/repository/revisions/master/changes/imageplugins/enhance/ Restauration and Inpaint editor tools], and [https://projects.kde.org/projects/extragear/graphics/digikam/repository/revisions/master/show/utilities/queuemanager/basetools/enhance Restauration tool from Batch Queue Manager]<br />
<br />
'''Knowledge Prerequisite:''' C/C++, math, Qt, <br />
<br />
'''Expected results:''' port image restoration algorithm from [http://cimg.sourceforge.net/ CImg] to [http://gmic.sourceforge.net/ GMic] API<br />
<br />
'''Difficulty:''' high<br />
<br />
'''Lead Mentor:''' Gilles Caulier <caulier dot gilles at gmail dot com><br />
<br />
==== Project: Add a quick access to Labels in dedicated tree-view ====<br />
<br />
'''Brief explanation:''' It would be nice to be able show all items from collections in icon-view which has Rating, Pick Labels, and Color Labels attributed, as it's already do with Tags. The goal is to build a tree-view with all Labels available on digiKam and process database query to show items relevant. This view must include No rating, All Rating values, No Pick Label, All Pick Label values, No Color Label, all Color Labels, which must be selected individually or grouped. This Labels tree-view must be available in KIPI album selector widget, as it's done currently for Tags, to be able to export these virtual albums with kipi-plugins. Also, in this project a way to select No Tagged items must be add to current Tags tree-view, to be homogenous with new Labels tree-view feature.<br />
<br />
'''Dependencies:''' : digiKam Database<br />
<br />
'''Bugzilla entries:''' [https://bugs.kde.org/show_bug.cgi?id=160363 160363], <br />
<br />
'''Knowledge Prerequisite:''' C/C++, Qt/KDE, GUI, Database<br />
<br />
'''Expected results:''' To have a quick acess tree-view in all relevant gui where Labels can be selected for photo workflow.<br />
<br />
'''Screenshots:''' [http://blogs.thesitedoctor.co.uk/tim/img/Windows-Photo-Gallery.JPG Microsoft Live Photo Rating tree-view], [http://images.apple.com/euro/aperture/features/images/video-audio-rating-20091020.jpg Apple Aperture Labels tree-view]<br />
<br />
'''Difficulty:''' medium<br />
<br />
'''Lead Mentor:''' Gilles Caulier <caulier dot gilles at gmail dot com><br />
<br />
===Marble===<br />
Marble is a virtual globe and world atlas — your swiss army knife for maps. Find your way and explore the world!<br />
<br />
* [http://marble.kde.org/ Marble project website]<br />
* [https://mail.kde.org/mailman/listinfo/marble-devel Mailinglist]<br />
* [http://gplus.to/Marble Google+ page]<br />
* [http://webchat.freenode.net/?channels=marble #marble IRC channel on Freenode]<br />
<br />
==== Project: Interactive Tours ====<br />
<br />
'''Brief explanation:''' A Tour is a set of related places along with supporting media (text, images, audio, video). Tours can be viewed (playback): The invididual places are visited in a defined timeline. They're useful for a wide range of tasks, like showing an interesting hike along with panorama pictures, highlighting places of interest for sightseeing or showing historic events and political changes happening over decades. The Marble library has been designed to support these use cases, but the user interface does not reveal all the features yet. This project is about changing that.<br />
<br />
'''Expected results:''' <br />
* Extend the existing Tour widget for animated tour playback<br />
* Improve the usability of the Tour widget<br />
* Support interactive elements in tour playback<br />
* Implement time support for tours for different time ranges (from eras to years to days to minutes to milliseconds)<br />
* Add support for recording tours<br />
* Enhance the screencast feature to generate videos from tours.<br />
Optional:<br />
* Extend Marble's owncloud synchronization feature for uploading tours to owncloud<br />
* Add tour viewing support to the Marble owncloud app<br />
* Implement tour viewing in the QML version of Marble<br />
* Provide tours for existing map themes to highlight features of them<br />
<br />
'''Knowledge Prerequisite:''' C++ and Qt. Would-be applicants are expected to work on junior jobs (possibly related to the project). Try to find your way into http://marble.kde.org/dashboard.php#contributors and solve as many tasks and bugfixes as possible.<br />
<br />
'''Mentor:''' Dennis Nienhüser and other Marble developers.<br />
<br />
==== Project: Marble Game ====<br />
<br />
'''Brief explanation:''' The latest introduction of a recent vector map inside Marble ("Natural Earth dataset") allows for interesting features: With recent and detailed political borders it's also possible to create a game based on Marble similar in spirit to KGeography. In terms of user-featureset the goal is to create an entertaining and educational game-application or game-plugin using Marble. Technically the goal is to extend Marble's framework to allow for this (there surely will be roadblocks). <br />
<br />
'''Expected results:''' <br />
* An application that is based on the MarbleWidget which teaches Geography in a style similar to KGeography.<br />
* OR/AND a plugin that extends Marble with a menu entry that invokes a Quiz-style educational game.<br />
* Extend Marble's framework to allow for the features required<br />
* Improve the Marble framework so that it provides a better experience for 3rd-party developers (by providing missing tutorials, documentation or even better APIs)<br />
<br />
'''Knowledge Prerequisite:''' C++ and Qt. Would-be applicants are expected to work on junior jobs (possibly related to the project). Try to find your way into http://marble.kde.org/dashboard.php#contributors and solve as many tasks and bugfixes as possible.<br />
<br />
'''Mentor:''' Torsten Rahn and other Marble developers.<br />
<br />
==== Project: Marble Editing mode: Polygons ====<br />
<br />
'''Brief explanation:''' During last GSoC a mode for editing ground overlays was added to the experimental editing Mode for Marble. During this GSoC the editing mode should be extended with polygon editing. The resulting editor should allow to create polygons and edit nodes of existing files in a way similar to inkscape. If there is enough time then the editing mode for Marble should be polished so that it can be included with the next release.<br />
<br />
'''Expected results:''' <br />
* An editing mode for polygons inside Marble. <br />
* Adding, moving and removing nodes. <br />
* Possibly merging nodes and other features that tools like inkscape provide for node interaction<br />
* Assignment of lables, outline color and fill color.<br />
* Possibly editing of "holes" inside the Polygon.<br />
<br />
'''Knowledge Prerequisite:''' C++ and Qt. Would-be applicants are expected to work on junior jobs (possibly related to the project). Try to find your way into http://marble.kde.org/dashboard.php#contributors and solve as many tasks and bugfixes as possible.<br />
<br />
'''Mentor:''' Torsten Rahn and other Marble developers.<br />
<br />
<br />
=== KDE Edu ===<br />
<br />
==== Project: Sound Visualization and Sound Effects in Artikulate ====<br />
'''Brief explanation:''' Artikulate is a language learning application that focus on improving a learner's pronunciation skills by repeating native speaker recordings, recording that try and comparing boths. By repeating these trials, a learner can continuously improve his/her language skills. There are areas for this project:<br />
# native speaker recordings are recorded (either by GStreamer or QtMultimedia), converted to an OGG file and saved. What is missing is an application of noise cleanup filters, removing of no-sound intervals, and normalization (possibly combined with a very basic sound editor)<br />
# when playing and comparing sounds, there is no visual feedback about how much the soundwaves differ: plotting the soundwaves in a reasonable format <br />
'''Goals:''' The goal is to extend the sound processing in Artikulate to<br />
# Implement simple sound filters for normalization, noise removal, removal of white noise and integrate sound postprocessing into the editor workflow<br />
# Implement plotter for soundwaves and integrate this in the training mode<br />
Yet for both it is important to research which libraries already exist and possibly could be reused. Also, research is needed about which techniques for comparing the soundwaves is appropriate. A proposal should already contain verbose information about these questions.<br />
<br />
'''Knowledge Prerequisite:''' a must is knowledge of C++ and Qt, a plus is knowledge of sound processing libraries (e.g. GStreamer) or experience in sound processing<br />
<br />
'''Mentor:''' Andreas Cord-Landwehr and/or other people from KDE Edu<br />
<br />
==== Project: Semi-Automatic Generation of Language Lessons for Parley ====<br />
<br />
'''Brief explanation:''' Parley is an advanced vocabulary trainer with features like 8 different learning modes, including flashcards, genders of nouns, conjugation of verbs and several more. A lesson for Parley is encoded in kvtml, KDE Vocabulary Training Markup Language which is an XML format for vocabulary lessons of many different types.<br />
<br />
But it is a relatively demanding task to create good lessons for Parley. You need to manually edit a list of words in several different languages, add images and/or sound clips to them all, word class, pronounciation, etc.<br />
<br />
We would like to create a semi-automatic generator for lessons using the Kexi database in the Calligra suite. The workflow will be something like this.<br />
<br />
# You use an import script to import a selected part of the word list in wiktionary.org, an online wiki dictionary, into Kexi. This will then form the basis for the work on the lessons. <br />
# You define a list of words in the so called primary language, which is the language that the lesson is supposed to teach. This list will be the words only and could be created either using the editor inside Parley or a standard text editor and then import it into Parley.<br />
# You define which secondary languages you want in your lesson. These languages are the ones that the student is already familiar with. The training session will then consist of translations from one of the secondary languages (most often the native language of the student) and the primary language. At this point you also define which other parameters you want to include in the lesson, like image, sound clip, phonetic text, explanation, etc.<br />
# You invoke the automatic lesson generator which will search for the words you have defined in the database, look up suitable translations and add the other fields that you asked for.<br />
# If necessary, patch up the newly generated lesson with missing data that wasn't present in the database or add the information to the database and redo the generation.<br />
<br />
'''Goals:''' The goal is to create software that supports the workflow above. It will at least comprise the following tasks:<br />
# Define an efficient database schema for the words and translations. Wiktionary.org has 3.6 million entries and even a subset of that can take significant amounts of storage.<br />
# Implement a script that reads from wiktionary.org and enters the data into the Kexi database using the calligradb library. There is already a script for downloading and parsing the contents of Wiktionary at [1] but you will have to adapt it to Kexi. <br />
# Implement the code that searches the database and populates the lesson with the data found.<br />
# (If time permits) Implement a more advanced lesson editor than is currently present in Parley or a stand-alone editor.<br />
<br />
'''Knowledge Prerequisite:''' Good knowledge of C++ and Qt, a plus is knowledge of of kvtml and the related C++ classes in the kde edu libraries. Also some knowledge of databases and database searches.<br />
<br />
'''Mentor:''' Jaroslaw Staniek, the maintainer of Calligra Kexi, with help from Inge Wallin<br />
<br />
[1] http://en.wiktionary.org/wiki/Help:FAQ#Downloading_Wiktionary<br />
<br />
==== Project: Kig - Geogebra Support ====<br />
[http://edu.kde.org/applications/mathematics/kig/ Kig] is an application for interactive geometry.<br />
<br />
'''Goals:''' The overall goal is to support Geogebra files in KDE Edu. Because Geogebra is both a plotting tool and a tool for interactive geometry, the stated goal is very broad. For this particular project, we are interested in supporting interactive geometry in Kig. The current progress towards this goal is in the [https://projects.kde.org/projects/kde/kdeedu/kig/repository/show?rev=geogebra geogebra] branch of Kig's repository. Since there is some progress towards that goal, the particular goal of supporting these files in Kig may or may not be smaller than a GSoC project, in which case we can move forward to implement support for these files in the many plotting tools we have in KDE Edu.<br />
<br />
'''Knowledge Prerequisite:''' By the start of GSoC you should<br />
# Be familiar with Kig as a user<br />
# Be familiar with Geogebra as a user<br />
# Be familiar with Git, you will have to work with branches<br />
# Be able to build Kig<br />
# Be familiar with Kig's filter code: Kig is a large code base, so you are not expected to know everything about it, but you should at least be familiar with how filters are created and be able to modify filters since this will be the part of the code that you will be working with.<br />
<br />
'''Mentor:''' David Narvaez (IRC: dMaggot, please [[User:DMaggot/Mentoring|read this]] before applying)<br />
<br />
==== Project: Kig - Analitza Integration (Experimental) ====<br />
[http://edu.kde.org/applications/mathematics/kig/ Kig] is an application for interactive geometry.<br />
<br />
'''Goals:''' Kig's core is full of code to deal with finding solutions to linear or quadratic equations which are the bulk of interactive geometry. While this code works, in many cases it does so by approximations and it is, in general, very convoluted. The goal of this project is to implement all of this code in terms of a [https://en.wikipedia.org/wiki/Computer_algebra_system CAS] to address both of the disadvantages mentioned before. Analitza is an "in-house" library that deals with mathematical expressions, and is thus a good candidate for a CAS provider in Kig. This project is experimental because:<br />
# Implementing everything in terms of a CAS may or may not improve code quality in terms of readability. If it doesn't (and we would only know this at the end of the project), the implementation of this project will not make it to the master branch.<br />
# Analitza may or may not be up for all of the tasks we need to do in Kig, in which case improving Analitza is an option.<br />
<br />
'''Knowledge Prerequisite:''' By the start of GSoC you should<br />
# Be familiar with Kig as a user<br />
# Be familiar with Analitza as a consumer (it is a library, so you would not be a "user")<br />
# Be able to build Kig<br />
# Be able to build Analitza<br />
# Be familiar with Kig<br />
# Be familiar with Kig's object hierarchy and the mathematics behind that<br />
<br />
'''Mentor:''' David Narvaez (IRC: dMaggot, please [[User:DMaggot/Mentoring|read this]] before applying)<br />
<br />
==== Project: Integrate Cantor into LabPlot====<br />
[http://labplot.sourceforge.net/ LabPlot] is a KDE-application for interactive graphing and analysis of scientific data.<br />
<br />
'''Brief explanation:''' The integration is twofold:<br />
<br />
# currently, for the created plots LabPlot uses either the data provided by hand in a spreadseet or by using data imported from external ascii-files. By having Cantor within LabPlot it should be possible to access the data sets created in a computer algebra session (say Maxima) provided by Cantor. Cantor's session have to be integrated into LabPlot's model-view framework and have to be put onto the same foot as all the other objects managable in LabPlot (spreadsheet, worksheets etc.).<br />
# By calling a CAS-specific command for creating a 2D-plot in Cantor, Cantor creates an external process that renders the plot and embeds the result as a pixmap. Instead of such a static pixmap, LabPlot's plots should be embeded. This would provide high degree of control of the plot appearance as provided by LabPlot.<br />
<br />
'''Mentor:''' Alexander Semke<br />
<br />
==== Project: Integrate [http://en.wikipedia.org/wiki/VTK VTK] into LabPlot, investigate [http://en.wikipedia.org/wiki/Tulip_(software) Tulip] ====<br />
[http://labplot.sourceforge.net/ LabPlot] is a KDE-application for interactive graphing and analysis of scientific data.<br />
<br />
'''Brief explanation:'''<br />
# LabPlot lacks 3D-functionality. In the old KDE3-based LabPlot qwt3D was used for this that is not an option anymore. The task consists of the integration of [http://en.wikipedia.org/wiki/VTK VTK] -libs. Also, the relevant widgets for 3D-plot editting should be created in a manner similar for all the other objects available in LabPlot now.<br />
# Investigate whether it's reasonable to use LabPlot as a frontend (or to extend it to be a frontend) to the functionality provided by [http://en.wikipedia.org/wiki/Tulip_(software) Tulip] yes, how?<br />
<br />
'''Mentor:''' Alexander Semke<br />
<br />
===Krita===<br />
We welcome students who want to work on Krita for Google Summer of Code. If you want to work on Krita, keep in mind that we would like you to stay with the project, also outside Summer of Code. Summer of Code isn't just a summer job with some mentoring added -- it's a way of becoming part of the team.<br />
<br />
If you haven't worked on Krita before, we want you to demonstrate your skill beforehand by fixing bugs or implementing some features. It's a good idea to start on that in January. Here is a list of pre-gsoc ideas:<br />
<br />
==== Project: Painting and Separation of 3D Textures====<br />
<br />
As one of it’s use cases, Krita’s vision statement includes painting textures for 3D. 3D textures are typically comprised of a number of separate black and white, RGB or RGBA images. Thus painting for textures typically requires painting on more than one single layer / channel at a time. For example painting a scratch into a metal surface may require painting black onto the bump channel, another colour on the diffuse channel, and another to the specularity channel (as well as possibly some others such as the displacement channel). All of these are affected simultaneously.<br />
<br />
Currently Krita’s painting system is only able to paint onto single layers at a time and brushes have not been designed in such a way as to allow adjusting multiple channels simultaneously as would be needed. This topic would require looking at how Krita’s current painting system could be extended to paint the necessary adjustments to the channels used in 3D rendering, show the textures created in OpenGL and then export those channels for use in 3D applications.<br />
<br />
==== Project: 3D Material Image Maps====<br />
<br />
3D materials are made up of a bunch of images called image maps. If the user could associate layers as image maps in Krita, and paint on all of them at the same time, artists could paint whole 3D materials - something currently only available in high end 3d apps like zBrush (not even Photoshop / Corel Painter). The trick is that the position of what's painted needs to match on every map/layer, but the colours vary. For example, a scratch on a human characters skin would have a red colour map, a white (=raised) bump map, a light grey (=semi-shiny) specularity map etc, all in the exact same location on the each image map. Traditional methods of trying to create each image from scratch or by manipulating the colour map are very, very slow and painful. A simple version of this could be done as follows:<br />
<br />
* Each layer has a toggle in the layers docker called "texture map" or similar. This is turned off by default. When active, the brush paints on *all* layers that currently have "texture map" active.<br />
<br />
* When picking a colour, a dropdown lets the user pick "Default" or any active texture map layer. "Default" is just the current behaviour. If the user selects a layer in the dropdown, then the selected colour will be applied to that layer when painting on *any* layer.<br />
* In the file or layer menu is an option "Export texture maps" which saves each texture map layer as an image. The layer name and extension appended automatically to the file name. For example, on a file called character.kra, the layer titled "colour" would be saved as "character-colour.jpg" (or whatever format was selected).<br />
<br />
For step 3, a simple, one click / shortcut, method is vital, as artists often have to check their material in their 3d app every few minutes, and wading through saving 10 layers individually, each with manual file naming and confirming file format settings each time is unacceptably slow. For any artist who requires this level of control, they can use Layers menu -> "Save Layer as Image" already in krita.<br />
<br />
Allowing artists to paint a single material rather than creating multiple separate image maps by hand, would make Krita formidable for painting 3D textures, and the most advanced open source application for 3D texturing.<br />
<br />
==== Project: Matte painting====<br />
<br />
One of Krita's main use cases is as a professional tool for painting textures and mattes in digital film. Mattes are primarily made of sequences of images generated by a combination of two methods, first by animatable spline based shapes, which currently exists and is being developed in blender, and then after that, by hand painting frames for detailed areas and corrections. The trouble is that no currently maintained FOSS application currently tries to provide the ability to create hand painted mattes. This project is to extend Krita for this purpose. What's needed here is the following:<br />
* The ability for Krita to load manually selected sequences of color managed images as frames to be represented as a single layer in Krita. Optionally would be the ability to display playback at reduced resolutions to increase performance and to offset the time at which sequences were inserted.<br />
* A “Timeline” docker which would display the current frame displayed, and allow clicking and dragging to different points in time, updating the image displayed in the canvas to match. Optional would be the ability to zoom and scroll the timeline, mark modified frames on the timeline, playback the image sequence, forwards and backwards as video (most likely only in the openGL mode of Krita or with an external tool like ffplay) and display times in a range of formate EG SMTP, PAL, NTSC, Secam etc.<br />
* Updating the paint and transparency layer types, so that when Krita is using a frame sequence and one of these layer types is created, they also represent a series of frames rather than just a single image. This could possibly be a toggle switch on layers, much as visibility, alpha lock etc. are now.<br />
* The ability to save layers that are displaying frame sequences out as frame sequences also, giving them user definable names (eg where to insert the frame number, how many digits to pad).<br />
* Keyboard shortcuts to move forwards and backwards 1/10/100 frames, to jump to the start and end of the timeline and forward / backwards play if video playback is supported.<br />
<br />
==== Project: Cartoon Text Balloon System====<br />
<br />
Krita already has two text tools, but neither is suited for creating cartoon balloons. The system should allow the creation of vector-based balloons in different styles. The balloons can contain styled text. The text and balloons should be translatable and a system to select the current language should be created. It should be possible to save the balloon text to a separate file that can be used as input for translations. Finally, care must be taken to support right-left languages.<br />
<br />
==== Project: Substrate simulation ====<br />
<br />
'''Brief explanation''': Substrates for painting and drawing have a direct influence on the result of the art. The goal of this project is bringing this richness of these effects to Krita. There is an existing body of literature and academic projects on this topic, with Bill Baxter and Tom van Laerhoven being among the best known researchers. For the right effect, we need to take care of the 3d structure of the substrate, it’s effect on paint tools -- smoothness, absorbency and other parameters. An interesting option is to make it possible to apply different substrates to existing paintings.<br />
Expected results: an optional substrate simulation that works with all current Krita tools<br />
<br />
==== Project: Real Paint Emulation ====<br />
<br />
We already did some research on the emulation of real-world paint and we do already have some essential pieces of it: Hairy Brush and Bumpmap filter. Now we need to bring this all together and allow a painter to use it easily, so that he could paint images like that: TODO. This project would involve creation of a special type of layer and a new colorspace, so the student should already be familiar with our layer stack and pigment code.<br />
<br />
==== Research Project: layer stack optimizations ====<br />
<br />
Right now when one layer got changed our merger should walk through all the layers of the current group and compose all of them into projection one by one. But this doesn't take into account that COMPOSITE_OVER (which is the most popular composition mode) has an associativity property, which means we can merge all the layers below and all the layers above dirty one into two groups, and calculate a group of any size with only two composition operations, which would give huge speed advantages.<br />
<br />
Unoptimized group:<br />
<br />
* layer 6<br />
* layer 5<br />
* layer 4<br />
* layer 3 <-- active layer (becomes dirty quite often)<br />
* layer 2<br />
* layer 1<br />
<br />
Optimized group:<br />
<br />
* <flattened 4-6><br />
* layer 3 <-- active layer (becomes dirty quite often)<br />
* <flattened 1-2><br />
<br />
After this project is done, we can start implementing layer composition on the GPU using openGL.<br />
<br />
==== Project: Improved Animation Brush System ====<br />
This should result in animation brushes being more readily available and adjustable. The current way of doing this is not as userfriendly as it could be.<br />
<br />
*Dedicated "Animation Brush GROUP"-> everything in group is a frame of the animation. (for use in current file,instead of in another instance of krita)<br />
*Convert group to animation group ->Normal group becomes animation brush reference.<br />
*Save as animation brush PRESET<br />
*options to set animation brush continuity to custom, random, incremental, pressure,angular,loop...<br />
*animation brush presets (in settings) need a timeslider to flip through the available frames<br />
<br />
https://bugs.kde.org/show_bug.cgi?id=322159<br />
<br />
==== Project: seamless textures by using UV layout as self-wrapping paint mask====<br />
This is a tool that should help in creating seamless (or as close as possible) textures for organic models. It will help in painting creases and other details across seams.<br />
http://www.sintel.org/wp-content/uploads/2010/01/face_uv_export.png<br />
<br />
*Convert intersections on uvlayout to seam transfer points.<br />
*use those points to transfer painted strokes to connected points on other side (set by user) <br />
*create userfriendly way to add,manage those seam transfer points. (multiple should be active at once)<br />
<br />
https://bugs.kde.org/show_bug.cgi?id=324072<br />
<br />
ALTERNATIVE<br />
*Similar to previous idea,but with movable curves/grid with adjustable seam transfer points in stead of converting a whole UV layout automaticly<br />
<br />
https://bugs.kde.org/show_bug.cgi?id=321547<br />
<br />
More ideas for projects can be found here:<br />
https://bugs.kde.org/buglist.cgi?cmdtype=runnamed&namedcmd=Wishlist%20count&list_id=884686<br />
<br />
=== Kexi ===<br />
Kexi is a visual database creator. It can be used for designing database applications, inserting and editing data, performing queries, and processing data.<br />
<br />
More info: [[Kexi|Developers' wiki]], [http://www.calligra.org/kexi web site for users], [https://mail.kde.org/mailman/listinfo/calligra-devel mailing list], IRC channel: #kexi and #calligra on Freenode.<br />
<br />
==== Project: Add support for importing tables from LibreOffice Base to Kexi ====<br />
<br />
'''Brief explanation:''' Add support for importing (Kexi calls it data/design migration) tables from LibreOffice (or OpenOffice) Base (ODB format) to Kexi. This task involves research on ODB format (it's relatively openly defined). Qt/C++ shall be used for the task, not any Java engine (HSQL db). This could be introduction to later development of complete database import from ODB to a Kexi database.<br />
<br />
'''Expected results:''' In the GUI the feature shall be put in the same place as the import from MDB: External Data -> Import Tables -> Table Importing Wizard. Then user would see .odb support in the open file dialog, just like it has access to importing CSV or MDB.<br />
<br />
'''Knowledge Prerequisite:''' C++, some Qt, some databases, some XML, software architecture<br />
<br />
'''Mentor:''' [[User:Jstaniek|Jarosław Staniek]] (Kexi maintainer)<br />
<br />
'''First steps''':<br />
:*See [http://wiki.openoffice.org/wiki/FAQ_(Base)] for a start.<br />
:*Sample .odb databases are available for [http://www.floppybunny.org/robin/web/virtualclassroom/chap8/libreoffice_base.html this] tutorial.<br />
:*Studying kexi/migration/importtablewizard.cpp which is a GUI taking an instance of implementation of a migrate driver derived from KexiMigration::KexiMigrate (in your case - the ODB driver). It's the m_migrateDriver attribute.<br />
:*Implementing plugin (needed methods of the driver) in migration/odb/ by looking how it was performed for other cases, e.g. for mysql (see kexi/migration/mysql/ dir) or other cases such as pqxx, txt, xbase, sybase or mdb<br />
:*In the actual C++ implementation, KoOdfReadStore class from calligra libs can be used to read contents of the .odb.<br />
<br />
=== Calligra Plugins ===<br />
<br />
Calligra is an office suite with lots of different applications with an user interface that is easy to use, highly customizable and extensible.<br />
<br />
More info: [http://www.calligra.org web site for users], [https://mail.kde.org/mailman/listinfo/calligra-devel mailing list], IRC channel: #calligra on Freenode.<br />
<br />
==== Project: Variable thickness lines ====<br />
<br />
'''Brief explanation:''' One of the most fundamental basics of drawing is varying the width of your lines to show shape, form and perspective. Almost every line tapers at either end, and often gets thicker and thinner in different places as needed. For purely technical and histrorical reasons though, every vector program (Illustrator, Inkscape, Karbon etc) make curves all one hard width. <br />
This proposal is to create a variable width path shape / tool, much like the path tool, would allow drawing curves, but where each node could have its width set so that the line width changed smoothly from node to node. <br />
As a plugin for the Calligra suite, this would clearly benefit apps as Karbon and also Krita.<br />
<br />
'''Expected results:''' variable width path tool is able to change the width of any path node to an arbitary percentage (say 155%) of the stroke width. See http://bugsfiles.kde.org/attachment.cgi?id=56995 for mockup. The shape needs to be able to save and load in svg/odf.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt, SVG?<br />
<br />
'''Mentor:''' Thorsten Zachmann < zachmann @ kde dot org ><br />
<br />
=== Keyboard Layouts ===<br />
<br />
Keyboard layouts in KDE allow user to use multiple keyboard layouts and switch between them. It consists of keyboard configuration module (in System Settings), keyboard layout widget/applet, and keyboard layout daemon.<br />
<br />
==== Project: Integrating Input Methods with keyboard layout configuration ====<br />
<br />
'''Brief explanation:''' Input method and keyboard layout configuration are serving the same purpose - to allow users to type text in non-default language. Currently KDE has integrated system to configure keyboard layouts but IM need to be configured somewhere else. Also when IM is configured it takes over some functions of keyboard layout configuration. So it would be nice if we could have IM and keyboard layout configuration in one place.<br />
It seems that IBus has already gained community acceptance so this will be the target for integration into KDE keyboard module.<br />
<br />
'''Expected results:''' Keyboard configuration module in System settings will include IM configuration and it will be integrated with existing keyboard layout options.<br />
<br />
'''Knowledge Prerequisite:''' good knowledge of C++, development experience with Qt and KDE, understanding of Input Methods (IBus)<br />
<br />
'''Mentor:''' Andriy Rysin <arysin@gmail.com><br />
<br />
=== KDevelop ===<br />
<br />
==== Project: Clang Integration ====<br />
<br />
'''Brief explanation:''' Finish the kdev-clang plugin to make it a usable replacement for the existing C++ plugin.<br />
<br />
'''Expected results:''' All advanced features of the KDevelop C++ are ported to the kdev-clang plugin. This includes code completion helpers, as well as basic refactoring and assistant integration.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt. Knowledge about Clang is helpful<br />
<br />
'''Mentor:''' Milian Wolff<br />
<br />
==== Project: Checker Framework ====<br />
<br />
'''Brief explanation:''' A generic framework should be created which provides the foundation for other plugins to report errors. <br />
<br />
'''Expected results:''' Right now we have the problems toolview but it is tightly coupled to the DUChain. This should be changed to use a separate item repository which stores the problems for a given path. The data stored would be: Path and range of where the issue is found, a short error message and optionally a long description. Furthermore, plugins might want to store additional info from which the problem could be fixed (compare to the 'add include path' or similar wizards we have already in the language framework).<br />
<br />
This framework should then be used to integrate various tools.<br />
<br />
First of all the existing language plugins should show the problems they find there.<br />
The existing playground plugins for krazy and cppcheck integration should reuse that framework<br />
any other linters could be integrated, such as jslint, pylint etc. pp.<br />
runtime checkers could be integrated, such as valgrind's memcheck, ptrcheck, helgrind, drd, ...<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt. Knowledge of linters such as Valgrind etc. is helpful.<br />
<br />
'''Mentor:''' Milian Wolff<br />
<br />
==== Project: SVN Plugin Rewrite ====<br />
<br />
'''Brief explanation:''' Rewrite the SVN plugin to use the C-API directly.<br />
<br />
'''Expected results:''' The existing SVN plugin uses an outdated kdevsvncpp checkout internally which causes troubles, warnings and licensing issues. Port the plugin to either the C-API of svn or alternatively try to reuse code from current kdevsvn. The result should be a tested, working plugin for SVN integration without licensing issues nor compile time warnings about usage of deprecated API.<br />
<br />
'''Knowledge Prerequisite:''' C, C++, Qt, SVN<br />
<br />
'''Mentor:''' Milian Wolff<br />
<br />
=== KDE PIM ===<br />
<br />
The KDE PIM community work on a set of libraries and applications for Personal Information Management, including email, calendaring, contacts, and feed aggregation.<br />
<br />
==== Project: OpenHolidays ====<br />
<br />
'''Brief explanation:''' The KHolidays library provides KDE applications with information on public holidays around the world, however the file format is very hard to use and maintain and the library features are very limited and restricted to Qt users. The goal of the OpenHolidays project is to develop a new open standard and data repository that can be used by any project that needs the data. See http://community.kde.org/KDE_PIM/KHolidays for more details.<br />
<br />
'''Expected results:''' Define the new JSON file format and port the existing data files to the new format. Develop a shared Qt-only library to parse the holiday files and provide access to them with a iCal style event-based api. Implement an Akonadi resource to access the data. Extended goals: Develop a JavaScript library to use the files. Develop a web site and web service at openholidays.org to provide online access to the data files.<br />
<br />
'''Knowledge Prerequisite:''' C++ and Qt for core goals, JavaScript and web services for extended goals.<br />
<br />
'''Mentor:''' John Layt and other KDE PIM community members.<br />
<br />
==== Project: Enhanced Searching in KMail ====<br />
<br />
'''Brief explanation:''' KMail is the defacto email client in KDE. It currently has a complex search dialog which allows the users to configure many different parts of the search. While it is very powerful, it is not very usable. A better search dialog is required which allows the user to modify the initial search and filter the data appropriately. A good example of this would be the Thunderbird search dialog - https://support.mozillamessaging.com/media/uploads/gallery/images/2011-03-14-10-05-42-56151b.jpg<br />
<br />
'''Expected results:''' Implementing the new search dialog and updating the backend search code to include whatever new features are required. Implementing this search dialog will require messing around with Akonadi, Baloo and KPeople.<br />
<br />
'''Knowledge Prerequisite:''' C++ and Qt. A basic understanding of Information Retrieval would be nice.<br />
<br />
'''Mentor:''' Vishesh Handa and other KDE PIM community members.<br />
<br />
==== Project: Active Mail ====<br />
'''Brief explanation:''' Active Mail is a QtQuick based mail application, a touch input friendly version of KMail so to speak. Currently it still depends on QtWidget based user interfaces for certain tasks which will have to be replaced before Active Mail can live up to its promise. Such missing pieces are the email composer and the email viewer. <br />
<br />
'''Expected results:''' Define and implement a general QtQuick API for composing emails. Rework the Active Mail composer UI/UX with the help of our usability expert and make it shine.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt, QtQuick<br />
<br />
'''Possible Mentors:''' Thomas Pfeiffer, Michael Bohlender, Kevin Krammer<br />
<br />
==== Project: QtQuick ToDo API / Plasmoid====<br />
<br />
'''Brief explanation:''' KDE PIM wants to make it's data accessible for applications which use QML to declare their user interfaces, e.g. applications using QtQuick. For that they need data handling objects that are accessible through QML, e.g. item models that have a mapping of string based role names to enum value based roles in C++, etc.<br />
<br />
'''Expected results:''' Define and implement a general QML API for accessing and creating Akonadis ToDo data. Write / Port a ToDo Plasmoid for Plasma Desktop or Plasma Active to show off the new API. Bonus: Port Kontact Touch Task to the new API instead of, or in addition to the Plasmoid.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt, QtQuick<br />
<br />
'''Possible Mentors:''' Kevin Krammer, Michael Bohlender and other KDE PIM community members<br />
<br />
====Project: KPeople / Kontact Touch People====<br />
<br />
'''Brief explanation:''' KPeople is a KDE framework for aggregating contact information of people from various data sources, e.g. the user's addressbook and instant messaging programs. For the future KDE would like this to be the main source of data for its address book application.<br />
<br />
'''Expected results:''' Define and implement a QML API for accessing kPeoples features. Create a pretty QtQuick example App/Plasmoid to show off and prove the API. Bonus: Bonus: Port Kontact Touch Addressbook to the new API instead of, or in addition to the Example.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt, QtQuick<br />
<br />
'''Possible Mentors:''' Martin Klapetek, Thomas Pfeiffer and other KDE PIM community members<br />
<br />
==== Project: Akonadi Commandline/Shellscripting Interface ====<br />
<br />
'''Brief explanation:''' Akonadi is a system that enables uniform access to various data formats across a wide range of data sources. Its main clients are graphics end user applications such as KMail. However, in some cases it is advantageous if data manipulation can be automated.<br />
Power users or system administrators often employ the multitudes of Unix/Linux commandline tools to achieve such automation tasks. The idea is to provide a tool or set of tools that allow Akonadi operations to be used in such scripts.<br />
<br />
'''Expected results:''' A non-GUI program able to perform useful tasks on Akonadi provided data, like creating folders, adding/deleting/copying/moving data such as contacts or emails, etc.<br />
<br />
'''Knowledge Prerequisite:''' C++, Shell scripting<br />
<br />
'''Mentor:''' Jonathan Marten, Kevin Krammer and other KDE PIM community members<br />
<br />
'''Resources:''' An early prototype can be found here https://projects.kde.org/projects/playground/pim/akonadiclient and there are two, non-Akonadi, clients which are part of KDE PIM: kabbclient (contacts), konsolecalendar (calendar)<br />
Contact the kde-pim mailinglist for discussions: https://mail.kde.org/mailman/listinfo/kde-pim<br />
<br />
<br />
=== Simon ===<br />
Simon is a speech recognition suite.<br />
<br />
[http://simon.kde.org Website] - [https://mail.kde.org/mailman/listinfo/kde-speech Mailing list] - IRC channel: #kde-speech on Freenode.<br />
<br />
==== Project: Streamline handling of various resources ====<br />
<br />
'''Brief explanation:''' Simon uses a multitude of different components: Scenarios, Base models, Shadow vocabulary, Language profiles, etc.<br />
<br />
While many of these components can be downloaded from within Simon, some can't and even for those that are better integrated, end-users still have to read additional documentation to know which components work together and which don't.<br />
<br />
The aim of this project is to bring the handling of these resources under a uniform and user-friendly interface.<br />
Specifically, the interface should resolve conflicts automatically and deduce an optimal default setup by itself (e.g. based on the system language and installed programs).<br />
<br />
'''Expected results:''' Much more user friendly setup.<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt<br />
<br />
'''Mentor:''' Peter Grasch <peter {+at+} grasch.net><br />
<br />
'''Resources:''' Some work (mostly brainstorming and UI design) was already conducted during Season of KDE 2013. Please contact me for details. This does not mean that this project is already assigned!<br />
<br />
=== KDE Telepathy===<br />
<br />
==== Project: Conference Video Call Support ====<br />
<br />
'''Brief explanation:''' Our current IM client can handle a 1-1 video call reasonably well. It currently does not<br />
support conference calls (>2 people). Our backend Telepathy should support this, but we do not make use of it in our client. This project will involve<br />
* some UI design<br />
* some low level GStreamer work<br />
* fixing parts of the Telepathy stack.<br />
<br />
Current code is inside the repository ktp-call-ui.<br />
<br />
'''Expected results:'''<br />
Working multi conference video calls.<br />
<br />
'''Knowledge Prerequisite:'''<br />
* C++, Qt<br />
* Ideally; QML, GStreamer and Telepathy<br />
<br />
'''Mentor:''' David Edmundson and Diane Trout<br />
<br />
==== Project: Telegram Network Support ====<br />
<br />
'''Brief explanation:''' Telegram is an upcoming network that aims to replace WhatsApp. Unlike whatsapp it has an open protocol (https://telegram.org/) and is gaining popularity.<br />
<br />
We want support in our IM client. This should be done by creating a connection manager using TelepathyQt service bindings. <br />
<br />
When this is complete, not only will we get Telegram support, but due to the distributed nature of Telepathy it will also work for Jolla, Ubuntu Phone and Empathy.<br />
<br />
'''Expected results:'''<br />
Working single and group chats using KDE Telepathy over the Telegram network<br />
<br />
'''Knowledge Prerequisite:'''<br />
C++, Qt, Reading Protocol Documentation<br />
<br />
'''Mentor:''' David Edmundson<br />
<br />
=== Solid ===<br />
==== Project: iOS Integration ====<br />
'''Brief explanation:''' Integrate the iOS platform with the Plasma desktop using libraries like libimobiledevice and kdeconnect.<br />
<br />
'''Expected results:''' Have an iOS application that is able to talk to KDE Connect and desktop integration using libimobiledevices.<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt, Objective C<br />
<br />
'''Mentor:''' Àlex Fiestas <afiestas {+at+} kde.org><br />
<br />
'''Resources:''' libimobiledevice, kdeconnect, plasma<br />
<br />
==== Project: Make Libbluedevil Async ====<br />
'''Brief explanation:''' Extend libbluedevil to have an asynchronous api, and port bluedevil to it.<br />
<br />
'''Expected results:''' libbluedevil should have an asynchronous api, and bluedevil should be ported to them.<br />
<br />
'''Knowledge Prerequisite:''' basic Qt and DBus<br />
<br />
'''Mentor:''' Àlex Fiestas <afiestas {+at+} kde.org><br />
<br />
'''Resources:''' libbluedevil, bluedevil, afiestas<br />
<br />
==== Project: Improve sharing experience ====<br />
'''Brief explanation:''' Improve the content sharing experience in Plasma by extending and improving Samba share, implementing other ways of sharing and write new ways of discovering other people's shares.<br />
<br />
'''Expected results:''' It should be possible to discover "shares" using dolphin (possibly via a new kioslave?) and it should be possible to share a folder between two Plasma computers really fast and easy (possibly implementing an http server plus discovery via avahi).<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt, extra points for KIO experience.<br />
<br />
'''Mentor:''' Àlex Fiestas <afiestas {+at+} kde.org><br />
<br />
'''Resources:''' avahi, http, kdenetwork-fileshare<br />
<br />
=== Plasma Media Center ===<br />
KDE's Plasma Media Center (PMC) is aimed towards a unified media experience on PCs, Tablets, Netbooks, TVs and any other device that is capable of running KDE software. PMC can be used to view images, play music or watch videos. Media files can be on the local filesystem or accessed with KDE’s Desktop Search.<br />
<br />
===== Mentors =====<br />
Unless explicitly noted, one of the follwing will mentor for the selected proposals-<br />
* Shantanu Tushar<br />
* Sinny Kumari<br />
Please use plasma-devel AT kde.org to discuss your ideas and proposals.<br />
<br />
==== Project: Integrate with Simon ====<br />
<br />
'''Brief explanation:''' Simon is an open source speech recognition program that can replace your mouse and keyboard. The system is designed to be as flexible as possible and will work with any language or dialect. This project aims at integrating it with Plasma Media Center to control it.<br />
<br />
'''Expected results:''' Using Simon, the user should at least be able to use voice to -<br />
* Control playback of media (images, music, videos)<br />
* Navigate in the media browser (next page, previous page, "goto the 3rd item")<br />
* Home Screen navigation<br />
* Ability to switch to the player, image viewer, or playlist<br />
* Play a media file in the browser (or the playlist, when its shown) using its name<br />
<br />
'''Knowledge Prerequisite:''' Basic C++, Qt and QML<br />
<br />
'''Co-Mentor:''' Peter Grasch <peter {+at+} grasch.net><br />
<br />
==== Project: Integrate with Plasma Next ====<br />
<br />
'''Brief explanation:''' Plasma Next is the refreshed Plasma workspace written using the new KF5, Qt5 and QtQuick2 frameworks. Plasma Next is able to switch to different modes/formfactors on-the-fly (such as desktop, netbook, tablet). We want to be able to make Plasma Next able to switch into a media center mode.<br />
<br />
'''Expected results:''' After the project is complete, the Plasma Next shell should be able to switch to a Media Center mode and offer every feature that the standalone Plasma Media Center application provides. Examples are ability to browse media, playback, playlists etc.<br />
<br />
'''Knowledge Prerequisite:''' Qt, QML is required. Understanding of Plasma Next is a huge plus<br />
<br />
'''Resources:''' Some info about Plasma Next<br />
* http://vizzzion.org/blog/2014/01/plasma-new-beginning/<br />
* http://vizzzion.org/blog/2014/02/next-means-focus-on-the-core/<br />
* http://vizzzion.org/blog/2013/11/responsible-evolution/<br />
<br />
==== Project: DVB Support for TV ====<br />
<br />
'''Brief explanation:''' https://en.wikipedia.org/wiki/Kaffeine is a KDE media player which supports playing TV using DVB. Our users have ben requesting for this support in PMC as well so that it becomes possible to watch TV as well.<br />
<br />
'''Expected results:''' Once the project is completed, Plasma Media Center should be able to play streams from a TV card with DVB support. There should be feature parity with Kaffeine.<br />
<br />
'''Knowledge Prerequisite:''' Basic C++, Qt and QML. Access to DVB hardware and signal availability in student's region is mandatory for testing https://en.wikipedia.org/wiki/Digital_Video_Broadcasting<br />
<br />
'''Mentor:''' Mentor wanted with DVB knowledge for the DVB bits.</div>Shantanu Tusharhttps://community.kde.org/index.php?title=GSoC/2014/Ideas&diff=36616GSoC/2014/Ideas2014-02-25T07:06:17Z<p>Shantanu Tushar: /* Project: DVB Support for TV */</p>
<hr />
<div>[[Category:Mentoring]]<br />
See also: [[../../|GSoc Instructions]], [[../../2013/Ideas|Last year ideas]]<br />
<br />
== Guidelines ==<br />
<br />
=== Information for Students ===<br />
<br />
These ideas were contributed by our developers and users. They are sometimes vague or incomplete. If you wish to submit a proposal based on these ideas, you may wish to contact the developers and find out more about the particular suggestion you're looking at.<br />
<br />
Being accepted as a Google Summer of Code student is quite competitive. Accepted students typically have thoroughly researched the technologies of their proposed project and have been in frequent contact with potential mentors. Simply copying and pasting an idea here will not work. On the other hand, creating a completely new idea without first consulting potential mentors is unlikely to work out.<br />
<br />
When writing your proposal or asking for help from the general KDE community don't assume people are familiar with the ideas here. KDE is really big!<br />
<br />
If there is no specific contact given you can ask questions on the general KDE development list kde-devel@kde.org. See [http://www.kde.org/mailinglists/ the KDE mailing lists page] for information on available mailing lists and how to subscribe.<br />
<br />
=== Adding a Proposal ===<br />
<br />
{{Note|Follow the template of other proposals!}}<br />
<br />
==== Project: ====<br />
<br />
'''Brief explanation:'''<br />
<br />
'''Expected results:'''<br />
<br />
'''Knowledge Prerequisite:'''<br />
<br />
'''Mentor:'''<br />
<br />
When adding an idea to this section, please try to include the following data:<br />
<br />
:*if the application is not widely known, a description of what it does and where its code lives<br />
:*a brief explanation<br />
:*the expected results<br />
:*pre-requisites for working on your project<br />
:*if applicable, links to more information or discussions<br />
:*mailing list or IRC channel for your application/library/module<br />
:*your name and email address for contact (if you're willing to be a mentor)<br />
<br />
If you are not a developer but have a good idea for a proposal, get in contact with relevant developers first.<br />
<br />
<br />
==Ideas==<br />
<br />
===Your Own Idea ===<br />
<br />
==== Project: Something that you're totally excited about ====<br />
<br />
'''Brief explanation:''' Do you have an awesome idea you want to work on with KDE but that is not among the ideas below? That's cool. We love that! But please do us a favor: Get in touch with a mentor early on and make sure your project is realistic and within the scope of KDE. That will spare you and us a lot of frustration.<br />
<br />
'''Expected results:''' Something you and KDE loves<br />
<br />
'''Knowledge Prerequisite:''' Probably C++ and Qt but depends on your project<br />
<br />
'''Mentor:''' Try to see who in KDE is interested in what you want to work on and approach them. If you are unsure you can always ask in #kde-soc on Freenode IRC.<br />
<br />
=== Amarok ===<br />
<br />
==== Project: Lyric support improvements ====<br />
<br />
'''Brief explanation:''' Amarok's support for fetching and displaying of lyrics is very limited. It just fetches from a single provider and many times no results are fetched, sometimes due to minor errors in track/album/artist name. Add some more providers of online lyrics databases. If no results are found this can be coupled with the better tagguessing feature (and even if the tags are not saved), the the lyrics providers can be searched with these guessed tags.<br />
Then, improve the lyrics display. Currently it just scrolls at a constant rate, generally that's inconsistent with the actual playback of the song. All .lrc files have timestamps, that can be followed: probably by highlighting the line playing.<br />
<br />
'''Expected results:''' Greatly increase the probability of fetching of the lyrics for any song. In the lyrics display, a highlighted line will display the current line being played.<br />
<br />
'''Knowledge Prerequisite:''' Knowledge of the Amarok code base (hence of Qt, C++). Basic knowledge of webservices.<br />
<br />
'''Mentor:''' Mark Kretschmann<br />
<br />
===digiKam===<br />
<br />
digiKam is an advanced digital photo management application for Linux, Windows, and Mac-OSX.<br />
<br />
* [http://www.digikam.org digiKam project web site]<br />
* [https://mail.kde.org/mailman/listinfo/digikam-devel Mailinglist]<br />
* [https://plus.google.com/+digikam Google+ page]<br />
* [http://webchat.freenode.net/?channels=digikam #digikam IRC channel on Freenode]<br />
<br />
==== Project: Integrate KIPI Export Plugins directly in the GUI of KIPI host applications ====<br />
<br />
'''Brief explanation:''' It would be nice to be able to encapsulate the Export/Import KIPI plugins directly in the GUI of the host application without opening a dedicated window. For the Export Plugins the place to load the plugins will be BQM and for the Import Plugins this can be in the digiKam import tool or in the main view. For this one must factorize the export/import kipi plugin interface and to group the common calls into a virtual interface, to implement tree and list view for the plugins.<br />
<br />
'''Dependencies:''' : digiKam KIPI interface, libkipi, KIPI Plugins <br />
<br />
'''Bugzilla entries:''' [https://bugs.kde.org/show_bug.cgi?id=235572 235572], [https://bugs.kde.org/show_bug.cgi?id=221704 221704] ,[https://bugs.kde.org/show_bug.cgi?id=143978 143978]<br />
<br />
'''Knowledge Prerequisite:''' C/C++, Qt/KDE, GUI<br />
<br />
'''Expected results:''' KIPI host apps that are compatible with the project will load KIPI Plugins in the BQM, the others will load the plugins as it's done right now without breaking any compatibility.<br />
<br />
'''Difficulty:''' high<br />
<br />
'''Lead Mentor:''' Gilles Caulier <caulier dot gilles at gmail dot com><br />
<br />
==== Project: Port Greystoration CImg interface to GMic ====<br />
<br />
'''Brief explanation:''' digiKam include [https://projects.kde.org/projects/extragear/graphics/digikam/repository/revisions/master/show/libs/3rdparty/cimg CImg library] to be able to use Greystoration algorithm which give nice fix to image based on Vortex theory, as [http://www.flickr.com/photos/digikam/8535414322/sizes/l/in/photostream/ Restoration tools]. Since CImg > 1.3.0, Greystoration algorithm have been moved in a new library named GMic with a completely different API. The goal of this project is to adapt digiKam Greystoration interface to GMic library.<br />
<br />
'''Dependencies:''' [https://projects.kde.org/projects/extragear/graphics/digikam/repository/revisions/master/show/libs/dimg/filters/greycstoration digiKam core], [https://projects.kde.org/projects/extragear/graphics/digikam/repository/revisions/master/changes/imageplugins/enhance/ Restauration and Inpaint editor tools], and [https://projects.kde.org/projects/extragear/graphics/digikam/repository/revisions/master/show/utilities/queuemanager/basetools/enhance Restauration tool from Batch Queue Manager]<br />
<br />
'''Knowledge Prerequisite:''' C/C++, math, Qt, <br />
<br />
'''Expected results:''' port image restoration algorithm from [http://cimg.sourceforge.net/ CImg] to [http://gmic.sourceforge.net/ GMic] API<br />
<br />
'''Difficulty:''' high<br />
<br />
'''Lead Mentor:''' Gilles Caulier <caulier dot gilles at gmail dot com><br />
<br />
==== Project: Add a quick access to Labels in dedicated tree-view ====<br />
<br />
'''Brief explanation:''' It would be nice to be able show all items from collections in icon-view which has Rating, Pick Labels, and Color Labels attributed, as it's already do with Tags. The goal is to build a tree-view with all Labels available on digiKam and process database query to show items relevant. This view must include No rating, All Rating values, No Pick Label, All Pick Label values, No Color Label, all Color Labels, which must be selected individually or grouped. This Labels tree-view must be available in KIPI album selector widget, as it's done currently for Tags, to be able to export these virtual albums with kipi-plugins. Also, in this project a way to select No Tagged items must be add to current Tags tree-view, to be homogenous with new Labels tree-view feature.<br />
<br />
'''Dependencies:''' : digiKam Database<br />
<br />
'''Bugzilla entries:''' [https://bugs.kde.org/show_bug.cgi?id=160363 160363], <br />
<br />
'''Knowledge Prerequisite:''' C/C++, Qt/KDE, GUI, Database<br />
<br />
'''Expected results:''' To have a quick acess tree-view in all relevant gui where Labels can be selected for photo workflow.<br />
<br />
'''Screenshots:''' [http://blogs.thesitedoctor.co.uk/tim/img/Windows-Photo-Gallery.JPG Microsoft Live Photo Rating tree-view], [http://images.apple.com/euro/aperture/features/images/video-audio-rating-20091020.jpg Apple Aperture Labels tree-view]<br />
<br />
'''Difficulty:''' medium<br />
<br />
'''Lead Mentor:''' Gilles Caulier <caulier dot gilles at gmail dot com><br />
<br />
===Marble===<br />
Marble is a virtual globe and world atlas — your swiss army knife for maps. Find your way and explore the world!<br />
<br />
* [http://marble.kde.org/ Marble project website]<br />
* [https://mail.kde.org/mailman/listinfo/marble-devel Mailinglist]<br />
* [http://gplus.to/Marble Google+ page]<br />
* [http://webchat.freenode.net/?channels=marble #marble IRC channel on Freenode]<br />
<br />
==== Project: Interactive Tours ====<br />
<br />
'''Brief explanation:''' A Tour is a set of related places along with supporting media (text, images, audio, video). Tours can be viewed (playback): The invididual places are visited in a defined timeline. They're useful for a wide range of tasks, like showing an interesting hike along with panorama pictures, highlighting places of interest for sightseeing or showing historic events and political changes happening over decades. The Marble library has been designed to support these use cases, but the user interface does not reveal all the features yet. This project is about changing that.<br />
<br />
'''Expected results:''' <br />
* Extend the existing Tour widget for animated tour playback<br />
* Improve the usability of the Tour widget<br />
* Support interactive elements in tour playback<br />
* Implement time support for tours for different time ranges (from eras to years to days to minutes to milliseconds)<br />
* Add support for recording tours<br />
* Enhance the screencast feature to generate videos from tours.<br />
Optional:<br />
* Extend Marble's owncloud synchronization feature for uploading tours to owncloud<br />
* Add tour viewing support to the Marble owncloud app<br />
* Implement tour viewing in the QML version of Marble<br />
* Provide tours for existing map themes to highlight features of them<br />
<br />
'''Knowledge Prerequisite:''' C++ and Qt. Would-be applicants are expected to work on junior jobs (possibly related to the project). Try to find your way into http://marble.kde.org/dashboard.php#contributors and solve as many tasks and bugfixes as possible.<br />
<br />
'''Mentor:''' Dennis Nienhüser and other Marble developers.<br />
<br />
==== Project: Marble Game ====<br />
<br />
'''Brief explanation:''' The latest introduction of a recent vector map inside Marble ("Natural Earth dataset") allows for interesting features: With recent and detailed political borders it's also possible to create a game based on Marble similar in spirit to KGeography. In terms of user-featureset the goal is to create an entertaining and educational game-application or game-plugin using Marble. Technically the goal is to extend Marble's framework to allow for this (there surely will be roadblocks). <br />
<br />
'''Expected results:''' <br />
* An application that is based on the MarbleWidget which teaches Geography in a style similar to KGeography.<br />
* OR/AND a plugin that extends Marble with a menu entry that invokes a Quiz-style educational game.<br />
* Extend Marble's framework to allow for the features required<br />
* Improve the Marble framework so that it provides a better experience for 3rd-party developers (by providing missing tutorials, documentation or even better APIs)<br />
<br />
'''Knowledge Prerequisite:''' C++ and Qt. Would-be applicants are expected to work on junior jobs (possibly related to the project). Try to find your way into http://marble.kde.org/dashboard.php#contributors and solve as many tasks and bugfixes as possible.<br />
<br />
'''Mentor:''' Torsten Rahn and other Marble developers.<br />
<br />
==== Project: Marble Editing mode: Polygons ====<br />
<br />
'''Brief explanation:''' During last GSoC a mode for editing ground overlays was added to the experimental editing Mode for Marble. During this GSoC the editing mode should be extended with polygon editing. The resulting editor should allow to create polygons and edit nodes of existing files in a way similar to inkscape. If there is enough time then the editing mode for Marble should be polished so that it can be included with the next release.<br />
<br />
'''Expected results:''' <br />
* An editing mode for polygons inside Marble. <br />
* Adding, moving and removing nodes. <br />
* Possibly merging nodes and other features that tools like inkscape provide for node interaction<br />
* Assignment of lables, outline color and fill color.<br />
* Possibly editing of "holes" inside the Polygon.<br />
<br />
'''Knowledge Prerequisite:''' C++ and Qt. Would-be applicants are expected to work on junior jobs (possibly related to the project). Try to find your way into http://marble.kde.org/dashboard.php#contributors and solve as many tasks and bugfixes as possible.<br />
<br />
'''Mentor:''' Torsten Rahn and other Marble developers.<br />
<br />
<br />
=== KDE Edu ===<br />
<br />
==== Project: Sound Visualization and Sound Effects in Artikulate ====<br />
'''Brief explanation:''' Artikulate is a language learning application that focus on improving a learner's pronunciation skills by repeating native speaker recordings, recording that try and comparing boths. By repeating these trials, a learner can continuously improve his/her language skills. There are areas for this project:<br />
# native speaker recordings are recorded (either by GStreamer or QtMultimedia), converted to an OGG file and saved. What is missing is an application of noise cleanup filters, removing of no-sound intervals, and normalization (possibly combined with a very basic sound editor)<br />
# when playing and comparing sounds, there is no visual feedback about how much the soundwaves differ: plotting the soundwaves in a reasonable format <br />
'''Goals:''' The goal is to extend the sound processing in Artikulate to<br />
# Implement simple sound filters for normalization, noise removal, removal of white noise and integrate sound postprocessing into the editor workflow<br />
# Implement plotter for soundwaves and integrate this in the training mode<br />
Yet for both it is important to research which libraries already exist and possibly could be reused. Also, research is needed about which techniques for comparing the soundwaves is appropriate. A proposal should already contain verbose information about these questions.<br />
<br />
'''Knowledge Prerequisite:''' a must is knowledge of C++ and Qt, a plus is knowledge of sound processing libraries (e.g. GStreamer) or experience in sound processing<br />
<br />
'''Mentor:''' Andreas Cord-Landwehr and/or other people from KDE Edu<br />
<br />
==== Project: Semi-Automatic Generation of Language Lessons for Parley ====<br />
<br />
'''Brief explanation:''' Parley is an advanced vocabulary trainer with features like 8 different learning modes, including flashcards, genders of nouns, conjugation of verbs and several more. A lesson for Parley is encoded in kvtml, KDE Vocabulary Training Markup Language which is an XML format for vocabulary lessons of many different types.<br />
<br />
But it is a relatively demanding task to create good lessons for Parley. You need to manually edit a list of words in several different languages, add images and/or sound clips to them all, word class, pronounciation, etc.<br />
<br />
We would like to create a semi-automatic generator for lessons using the Kexi database in the Calligra suite. The workflow will be something like this.<br />
<br />
# You use an import script to import a selected part of the word list in wiktionary.org, an online wiki dictionary, into Kexi. This will then form the basis for the work on the lessons. <br />
# You define a list of words in the so called primary language, which is the language that the lesson is supposed to teach. This list will be the words only and could be created either using the editor inside Parley or a standard text editor and then import it into Parley.<br />
# You define which secondary languages you want in your lesson. These languages are the ones that the student is already familiar with. The training session will then consist of translations from one of the secondary languages (most often the native language of the student) and the primary language. At this point you also define which other parameters you want to include in the lesson, like image, sound clip, phonetic text, explanation, etc.<br />
# You invoke the automatic lesson generator which will search for the words you have defined in the database, look up suitable translations and add the other fields that you asked for.<br />
# If necessary, patch up the newly generated lesson with missing data that wasn't present in the database or add the information to the database and redo the generation.<br />
<br />
'''Goals:''' The goal is to create software that supports the workflow above. It will at least comprise the following tasks:<br />
# Define an efficient database schema for the words and translations. Wiktionary.org has 3.6 million entries and even a subset of that can take significant amounts of storage.<br />
# Implement a script that reads from wiktionary.org and enters the data into the Kexi database using the calligradb library. There is already a script for downloading and parsing the contents of Wiktionary at [1] but you will have to adapt it to Kexi. <br />
# Implement the code that searches the database and populates the lesson with the data found.<br />
# (If time permits) Implement a more advanced lesson editor than is currently present in Parley or a stand-alone editor.<br />
<br />
'''Knowledge Prerequisite:''' Good knowledge of C++ and Qt, a plus is knowledge of of kvtml and the related C++ classes in the kde edu libraries. Also some knowledge of databases and database searches.<br />
<br />
'''Mentor:''' Jaroslaw Staniek, the maintainer of Calligra Kexi, with help from Inge Wallin<br />
<br />
[1] http://en.wiktionary.org/wiki/Help:FAQ#Downloading_Wiktionary<br />
<br />
==== Project: Kig - Geogebra Support ====<br />
[http://edu.kde.org/applications/mathematics/kig/ Kig] is an application for interactive geometry.<br />
<br />
'''Goals:''' The overall goal is to support Geogebra files in KDE Edu. Because Geogebra is both a plotting tool and a tool for interactive geometry, the stated goal is very broad. For this particular project, we are interested in supporting interactive geometry in Kig. The current progress towards this goal is in the [https://projects.kde.org/projects/kde/kdeedu/kig/repository/show?rev=geogebra geogebra] branch of Kig's repository. Since there is some progress towards that goal, the particular goal of supporting these files in Kig may or may not be smaller than a GSoC project, in which case we can move forward to implement support for these files in the many plotting tools we have in KDE Edu.<br />
<br />
'''Knowledge Prerequisite:''' By the start of GSoC you should<br />
# Be familiar with Kig as a user<br />
# Be familiar with Geogebra as a user<br />
# Be familiar with Git, you will have to work with branches<br />
# Be able to build Kig<br />
# Be familiar with Kig's filter code: Kig is a large code base, so you are not expected to know everything about it, but you should at least be familiar with how filters are created and be able to modify filters since this will be the part of the code that you will be working with.<br />
<br />
'''Mentor:''' David Narvaez (IRC: dMaggot, please [[User:DMaggot/Mentoring|read this]] before applying)<br />
<br />
==== Project: Kig - Analitza Integration (Experimental) ====<br />
[http://edu.kde.org/applications/mathematics/kig/ Kig] is an application for interactive geometry.<br />
<br />
'''Goals:''' Kig's core is full of code to deal with finding solutions to linear or quadratic equations which are the bulk of interactive geometry. While this code works, in many cases it does so by approximations and it is, in general, very convoluted. The goal of this project is to implement all of this code in terms of a [https://en.wikipedia.org/wiki/Computer_algebra_system CAS] to address both of the disadvantages mentioned before. Analitza is an "in-house" library that deals with mathematical expressions, and is thus a good candidate for a CAS provider in Kig. This project is experimental because:<br />
# Implementing everything in terms of a CAS may or may not improve code quality in terms of readability. If it doesn't (and we would only know this at the end of the project), the implementation of this project will not make it to the master branch.<br />
# Analitza may or may not be up for all of the tasks we need to do in Kig, in which case improving Analitza is an option.<br />
<br />
'''Knowledge Prerequisite:''' By the start of GSoC you should<br />
# Be familiar with Kig as a user<br />
# Be familiar with Analitza as a consumer (it is a library, so you would not be a "user")<br />
# Be able to build Kig<br />
# Be able to build Analitza<br />
# Be familiar with Kig<br />
# Be familiar with Kig's object hierarchy and the mathematics behind that<br />
<br />
'''Mentor:''' David Narvaez (IRC: dMaggot, please [[User:DMaggot/Mentoring|read this]] before applying)<br />
<br />
==== Project: Integrate Cantor into LabPlot====<br />
[http://labplot.sourceforge.net/ LabPlot] is a KDE-application for interactive graphing and analysis of scientific data.<br />
<br />
'''Brief explanation:''' The integration is twofold:<br />
<br />
# currently, for the created plots LabPlot uses either the data provided by hand in a spreadseet or by using data imported from external ascii-files. By having Cantor within LabPlot it should be possible to access the data sets created in a computer algebra session (say Maxima) provided by Cantor. Cantor's session have to be integrated into LabPlot's model-view framework and have to be put onto the same foot as all the other objects managable in LabPlot (spreadsheet, worksheets etc.).<br />
# By calling a CAS-specific command for creating a 2D-plot in Cantor, Cantor creates an external process that renders the plot and embeds the result as a pixmap. Instead of such a static pixmap, LabPlot's plots should be embeded. This would provide high degree of control of the plot appearance as provided by LabPlot.<br />
<br />
'''Mentor:''' Alexander Semke<br />
<br />
==== Project: Integrate [http://en.wikipedia.org/wiki/VTK VTK] into LabPlot, investigate [http://en.wikipedia.org/wiki/Tulip_(software) Tulip] ====<br />
[http://labplot.sourceforge.net/ LabPlot] is a KDE-application for interactive graphing and analysis of scientific data.<br />
<br />
'''Brief explanation:'''<br />
# LabPlot lacks 3D-functionality. In the old KDE3-based LabPlot qwt3D was used for this that is not an option anymore. The task consists of the integration of [http://en.wikipedia.org/wiki/VTK VTK] -libs. Also, the relevant widgets for 3D-plot editting should be created in a manner similar for all the other objects available in LabPlot now.<br />
# Investigate whether it's reasonable to use LabPlot as a frontend (or to extend it to be a frontend) to the functionality provided by [http://en.wikipedia.org/wiki/Tulip_(software) Tulip] yes, how?<br />
<br />
'''Mentor:''' Alexander Semke<br />
<br />
===Krita===<br />
We welcome students who want to work on Krita for Google Summer of Code. If you want to work on Krita, keep in mind that we would like you to stay with the project, also outside Summer of Code. Summer of Code isn't just a summer job with some mentoring added -- it's a way of becoming part of the team.<br />
<br />
If you haven't worked on Krita before, we want you to demonstrate your skill beforehand by fixing bugs or implementing some features. It's a good idea to start on that in January. Here is a list of pre-gsoc ideas:<br />
<br />
==== Project: Painting and Separation of 3D Textures====<br />
<br />
As one of it’s use cases, Krita’s vision statement includes painting textures for 3D. 3D textures are typically comprised of a number of separate black and white, RGB or RGBA images. Thus painting for textures typically requires painting on more than one single layer / channel at a time. For example painting a scratch into a metal surface may require painting black onto the bump channel, another colour on the diffuse channel, and another to the specularity channel (as well as possibly some others such as the displacement channel). All of these are affected simultaneously.<br />
<br />
Currently Krita’s painting system is only able to paint onto single layers at a time and brushes have not been designed in such a way as to allow adjusting multiple channels simultaneously as would be needed. This topic would require looking at how Krita’s current painting system could be extended to paint the necessary adjustments to the channels used in 3D rendering, show the textures created in OpenGL and then export those channels for use in 3D applications.<br />
<br />
==== Project: 3D Material Image Maps====<br />
<br />
3D materials are made up of a bunch of images called image maps. If the user could associate layers as image maps in Krita, and paint on all of them at the same time, artists could paint whole 3D materials - something currently only available in high end 3d apps like zBrush (not even Photoshop / Corel Painter). The trick is that the position of what's painted needs to match on every map/layer, but the colours vary. For example, a scratch on a human characters skin would have a red colour map, a white (=raised) bump map, a light grey (=semi-shiny) specularity map etc, all in the exact same location on the each image map. Traditional methods of trying to create each image from scratch or by manipulating the colour map are very, very slow and painful. A simple version of this could be done as follows:<br />
<br />
* Each layer has a toggle in the layers docker called "texture map" or similar. This is turned off by default. When active, the brush paints on *all* layers that currently have "texture map" active.<br />
<br />
* When picking a colour, a dropdown lets the user pick "Default" or any active texture map layer. "Default" is just the current behaviour. If the user selects a layer in the dropdown, then the selected colour will be applied to that layer when painting on *any* layer.<br />
* In the file or layer menu is an option "Export texture maps" which saves each texture map layer as an image. The layer name and extension appended automatically to the file name. For example, on a file called character.kra, the layer titled "colour" would be saved as "character-colour.jpg" (or whatever format was selected).<br />
<br />
For step 3, a simple, one click / shortcut, method is vital, as artists often have to check their material in their 3d app every few minutes, and wading through saving 10 layers individually, each with manual file naming and confirming file format settings each time is unacceptably slow. For any artist who requires this level of control, they can use Layers menu -> "Save Layer as Image" already in krita.<br />
<br />
Allowing artists to paint a single material rather than creating multiple separate image maps by hand, would make Krita formidable for painting 3D textures, and the most advanced open source application for 3D texturing.<br />
<br />
==== Project: Matte painting====<br />
<br />
One of Krita's main use cases is as a professional tool for painting textures and mattes in digital film. Mattes are primarily made of sequences of images generated by a combination of two methods, first by animatable spline based shapes, which currently exists and is being developed in blender, and then after that, by hand painting frames for detailed areas and corrections. The trouble is that no currently maintained FOSS application currently tries to provide the ability to create hand painted mattes. This project is to extend Krita for this purpose. What's needed here is the following:<br />
* The ability for Krita to load manually selected sequences of color managed images as frames to be represented as a single layer in Krita. Optionally would be the ability to display playback at reduced resolutions to increase performance and to offset the time at which sequences were inserted.<br />
* A “Timeline” docker which would display the current frame displayed, and allow clicking and dragging to different points in time, updating the image displayed in the canvas to match. Optional would be the ability to zoom and scroll the timeline, mark modified frames on the timeline, playback the image sequence, forwards and backwards as video (most likely only in the openGL mode of Krita or with an external tool like ffplay) and display times in a range of formate EG SMTP, PAL, NTSC, Secam etc.<br />
* Updating the paint and transparency layer types, so that when Krita is using a frame sequence and one of these layer types is created, they also represent a series of frames rather than just a single image. This could possibly be a toggle switch on layers, much as visibility, alpha lock etc. are now.<br />
* The ability to save layers that are displaying frame sequences out as frame sequences also, giving them user definable names (eg where to insert the frame number, how many digits to pad).<br />
* Keyboard shortcuts to move forwards and backwards 1/10/100 frames, to jump to the start and end of the timeline and forward / backwards play if video playback is supported.<br />
<br />
==== Project: Cartoon Text Balloon System====<br />
<br />
Krita already has two text tools, but neither is suited for creating cartoon balloons. The system should allow the creation of vector-based balloons in different styles. The balloons can contain styled text. The text and balloons should be translatable and a system to select the current language should be created. It should be possible to save the balloon text to a separate file that can be used as input for translations. Finally, care must be taken to support right-left languages.<br />
<br />
==== Project: Substrate simulation ====<br />
<br />
'''Brief explanation''': Substrates for painting and drawing have a direct influence on the result of the art. The goal of this project is bringing this richness of these effects to Krita. There is an existing body of literature and academic projects on this topic, with Bill Baxter and Tom van Laerhoven being among the best known researchers. For the right effect, we need to take care of the 3d structure of the substrate, it’s effect on paint tools -- smoothness, absorbency and other parameters. An interesting option is to make it possible to apply different substrates to existing paintings.<br />
Expected results: an optional substrate simulation that works with all current Krita tools<br />
<br />
==== Project: Real Paint Emulation ====<br />
<br />
We already did some research on the emulation of real-world paint and we do already have some essential pieces of it: Hairy Brush and Bumpmap filter. Now we need to bring this all together and allow a painter to use it easily, so that he could paint images like that: TODO. This project would involve creation of a special type of layer and a new colorspace, so the student should already be familiar with our layer stack and pigment code.<br />
<br />
==== Research Project: layer stack optimizations ====<br />
<br />
Right now when one layer got changed our merger should walk through all the layers of the current group and compose all of them into projection one by one. But this doesn't take into account that COMPOSITE_OVER (which is the most popular composition mode) has an associativity property, which means we can merge all the layers below and all the layers above dirty one into two groups, and calculate a group of any size with only two composition operations, which would give huge speed advantages.<br />
<br />
Unoptimized group:<br />
<br />
* layer 6<br />
* layer 5<br />
* layer 4<br />
* layer 3 <-- active layer (becomes dirty quite often)<br />
* layer 2<br />
* layer 1<br />
<br />
Optimized group:<br />
<br />
* <flattened 4-6><br />
* layer 3 <-- active layer (becomes dirty quite often)<br />
* <flattened 1-2><br />
<br />
After this project is done, we can start implementing layer composition on the GPU using openGL.<br />
<br />
==== Project: Improved Animation Brush System ====<br />
This should result in animation brushes being more readily available and adjustable. The current way of doing this is not as userfriendly as it could be.<br />
<br />
*Dedicated "Animation Brush GROUP"-> everything in group is a frame of the animation. (for use in current file,instead of in another instance of krita)<br />
*Convert group to animation group ->Normal group becomes animation brush reference.<br />
*Save as animation brush PRESET<br />
*options to set animation brush continuity to custom, random, incremental, pressure,angular,loop...<br />
*animation brush presets (in settings) need a timeslider to flip through the available frames<br />
<br />
https://bugs.kde.org/show_bug.cgi?id=322159<br />
<br />
==== Project: seamless textures by using UV layout as self-wrapping paint mask====<br />
This is a tool that should help in creating seamless (or as close as possible) textures for organic models. It will help in painting creases and other details across seams.<br />
http://www.sintel.org/wp-content/uploads/2010/01/face_uv_export.png<br />
<br />
*Convert intersections on uvlayout to seam transfer points.<br />
*use those points to transfer painted strokes to connected points on other side (set by user) <br />
*create userfriendly way to add,manage those seam transfer points. (multiple should be active at once)<br />
<br />
https://bugs.kde.org/show_bug.cgi?id=324072<br />
<br />
ALTERNATIVE<br />
*Similar to previous idea,but with movable curves/grid with adjustable seam transfer points in stead of converting a whole UV layout automaticly<br />
<br />
https://bugs.kde.org/show_bug.cgi?id=321547<br />
<br />
More ideas for projects can be found here:<br />
https://bugs.kde.org/buglist.cgi?cmdtype=runnamed&namedcmd=Wishlist%20count&list_id=884686<br />
<br />
=== Kexi ===<br />
Kexi is a visual database creator. It can be used for designing database applications, inserting and editing data, performing queries, and processing data.<br />
<br />
More info: [[Kexi|Developers' wiki]], [http://www.calligra.org/kexi web site for users], [https://mail.kde.org/mailman/listinfo/calligra-devel mailing list], IRC channel: #kexi and #calligra on Freenode.<br />
<br />
==== Project: Add support for importing tables from LibreOffice Base to Kexi ====<br />
<br />
'''Brief explanation:''' Add support for importing (Kexi calls it data/design migration) tables from LibreOffice (or OpenOffice) Base (ODB format) to Kexi. This task involves research on ODB format (it's relatively openly defined). Qt/C++ shall be used for the task, not any Java engine (HSQL db). This could be introduction to later development of complete database import from ODB to a Kexi database.<br />
<br />
'''Expected results:''' In the GUI the feature shall be put in the same place as the import from MDB: External Data -> Import Tables -> Table Importing Wizard. Then user would see .odb support in the open file dialog, just like it has access to importing CSV or MDB.<br />
<br />
'''Knowledge Prerequisite:''' C++, some Qt, some databases, some XML, software architecture<br />
<br />
'''Mentor:''' [[User:Jstaniek|Jarosław Staniek]] (Kexi maintainer)<br />
<br />
'''First steps''':<br />
:*See [http://wiki.openoffice.org/wiki/FAQ_(Base)] for a start.<br />
:*Sample .odb databases are available for [http://www.floppybunny.org/robin/web/virtualclassroom/chap8/libreoffice_base.html this] tutorial.<br />
:*Studying kexi/migration/importtablewizard.cpp which is a GUI taking an instance of implementation of a migrate driver derived from KexiMigration::KexiMigrate (in your case - the ODB driver). It's the m_migrateDriver attribute.<br />
:*Implementing plugin (needed methods of the driver) in migration/odb/ by looking how it was performed for other cases, e.g. for mysql (see kexi/migration/mysql/ dir) or other cases such as pqxx, txt, xbase, sybase or mdb<br />
:*In the actual C++ implementation, KoOdfReadStore class from calligra libs can be used to read contents of the .odb.<br />
<br />
=== Calligra Plugins ===<br />
<br />
Calligra is an office suite with lots of different applications with an user interface that is easy to use, highly customizable and extensible.<br />
<br />
More info: [http://www.calligra.org web site for users], [https://mail.kde.org/mailman/listinfo/calligra-devel mailing list], IRC channel: #calligra on Freenode.<br />
<br />
==== Project: Variable thickness lines ====<br />
<br />
'''Brief explanation:''' One of the most fundamental basics of drawing is varying the width of your lines to show shape, form and perspective. Almost every line tapers at either end, and often gets thicker and thinner in different places as needed. For purely technical and histrorical reasons though, every vector program (Illustrator, Inkscape, Karbon etc) make curves all one hard width. <br />
This proposal is to create a variable width path shape / tool, much like the path tool, would allow drawing curves, but where each node could have its width set so that the line width changed smoothly from node to node. <br />
As a plugin for the Calligra suite, this would clearly benefit apps as Karbon and also Krita.<br />
<br />
'''Expected results:''' variable width path tool is able to change the width of any path node to an arbitary percentage (say 155%) of the stroke width. See http://bugsfiles.kde.org/attachment.cgi?id=56995 for mockup. The shape needs to be able to save and load in svg/odf.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt, SVG?<br />
<br />
'''Mentor:''' Thorsten Zachmann < zachmann @ kde dot org ><br />
<br />
=== Keyboard Layouts ===<br />
<br />
Keyboard layouts in KDE allow user to use multiple keyboard layouts and switch between them. It consists of keyboard configuration module (in System Settings), keyboard layout widget/applet, and keyboard layout daemon.<br />
<br />
==== Project: Integrating Input Methods with keyboard layout configuration ====<br />
<br />
'''Brief explanation:''' Input method and keyboard layout configuration are serving the same purpose - to allow users to type text in non-default language. Currently KDE has integrated system to configure keyboard layouts but IM need to be configured somewhere else. Also when IM is configured it takes over some functions of keyboard layout configuration. So it would be nice if we could have IM and keyboard layout configuration in one place.<br />
It seems that IBus has already gained community acceptance so this will be the target for integration into KDE keyboard module.<br />
<br />
'''Expected results:''' Keyboard configuration module in System settings will include IM configuration and it will be integrated with existing keyboard layout options.<br />
<br />
'''Knowledge Prerequisite:''' good knowledge of C++, development experience with Qt and KDE, understanding of Input Methods (IBus)<br />
<br />
'''Mentor:''' Andriy Rysin <arysin@gmail.com><br />
<br />
=== KDevelop ===<br />
<br />
==== Project: Clang Integration ====<br />
<br />
'''Brief explanation:''' Finish the kdev-clang plugin to make it a usable replacement for the existing C++ plugin.<br />
<br />
'''Expected results:''' All advanced features of the KDevelop C++ are ported to the kdev-clang plugin. This includes code completion helpers, as well as basic refactoring and assistant integration.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt. Knowledge about Clang is helpful<br />
<br />
'''Mentor:''' Milian Wolff<br />
<br />
==== Project: Checker Framework ====<br />
<br />
'''Brief explanation:''' A generic framework should be created which provides the foundation for other plugins to report errors. <br />
<br />
'''Expected results:''' Right now we have the problems toolview but it is tightly coupled to the DUChain. This should be changed to use a separate item repository which stores the problems for a given path. The data stored would be: Path and range of where the issue is found, a short error message and optionally a long description. Furthermore, plugins might want to store additional info from which the problem could be fixed (compare to the 'add include path' or similar wizards we have already in the language framework).<br />
<br />
This framework should then be used to integrate various tools.<br />
<br />
First of all the existing language plugins should show the problems they find there.<br />
The existing playground plugins for krazy and cppcheck integration should reuse that framework<br />
any other linters could be integrated, such as jslint, pylint etc. pp.<br />
runtime checkers could be integrated, such as valgrind's memcheck, ptrcheck, helgrind, drd, ...<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt. Knowledge of linters such as Valgrind etc. is helpful.<br />
<br />
'''Mentor:''' Milian Wolff<br />
<br />
==== Project: SVN Plugin Rewrite ====<br />
<br />
'''Brief explanation:''' Rewrite the SVN plugin to use the C-API directly.<br />
<br />
'''Expected results:''' The existing SVN plugin uses an outdated kdevsvncpp checkout internally which causes troubles, warnings and licensing issues. Port the plugin to either the C-API of svn or alternatively try to reuse code from current kdevsvn. The result should be a tested, working plugin for SVN integration without licensing issues nor compile time warnings about usage of deprecated API.<br />
<br />
'''Knowledge Prerequisite:''' C, C++, Qt, SVN<br />
<br />
'''Mentor:''' Milian Wolff<br />
<br />
=== KDE PIM ===<br />
<br />
The KDE PIM community work on a set of libraries and applications for Personal Information Management, including email, calendaring, contacts, and feed aggregation.<br />
<br />
==== Project: OpenHolidays ====<br />
<br />
'''Brief explanation:''' The KHolidays library provides KDE applications with information on public holidays around the world, however the file format is very hard to use and maintain and the library features are very limited and restricted to Qt users. The goal of the OpenHolidays project is to develop a new open standard and data repository that can be used by any project that needs the data. See http://community.kde.org/KDE_PIM/KHolidays for more details.<br />
<br />
'''Expected results:''' Define the new JSON file format and port the existing data files to the new format. Develop a shared Qt-only library to parse the holiday files and provide access to them with a iCal style event-based api. Implement an Akonadi resource to access the data. Extended goals: Develop a JavaScript library to use the files. Develop a web site and web service at openholidays.org to provide online access to the data files.<br />
<br />
'''Knowledge Prerequisite:''' C++ and Qt for core goals, JavaScript and web services for extended goals.<br />
<br />
'''Mentor:''' John Layt and other KDE PIM community members.<br />
<br />
==== Project: Enhanced Searching in KMail ====<br />
<br />
'''Brief explanation:''' KMail is the defacto email client in KDE. It currently has a complex search dialog which allows the users to configure many different parts of the search. While it is very powerful, it is not very usable. A better search dialog is required which allows the user to modify the initial search and filter the data appropriately. A good example of this would be the Thunderbird search dialog - https://support.mozillamessaging.com/media/uploads/gallery/images/2011-03-14-10-05-42-56151b.jpg<br />
<br />
'''Expected results:''' Implementing the new search dialog and updating the backend search code to include whatever new features are required. Implementing this search dialog will require messing around with Akonadi, Baloo and KPeople.<br />
<br />
'''Knowledge Prerequisite:''' C++ and Qt. A basic understanding of Information Retrieval would be nice.<br />
<br />
'''Mentor:''' Vishesh Handa and other KDE PIM community members.<br />
<br />
==== Project: Active Mail ====<br />
'''Brief explanation:''' Active Mail is a QtQuick based mail application, a touch input friendly version of KMail so to speak. Currently it still depends on QtWidget based user interfaces for certain tasks which will have to be replaced before Active Mail can live up to its promise. Such missing pieces are the email composer and the email viewer. <br />
<br />
'''Expected results:''' Define and implement a general QtQuick API for composing emails. Rework the Active Mail composer UI/UX with the help of our usability expert and make it shine.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt, QtQuick<br />
<br />
'''Possible Mentors:''' Thomas Pfeiffer, Michael Bohlender, Kevin Krammer<br />
<br />
==== Project: QtQuick ToDo API / Plasmoid====<br />
<br />
'''Brief explanation:''' KDE PIM wants to make it's data accessible for applications which use QML to declare their user interfaces, e.g. applications using QtQuick. For that they need data handling objects that are accessible through QML, e.g. item models that have a mapping of string based role names to enum value based roles in C++, etc.<br />
<br />
'''Expected results:''' Define and implement a general QML API for accessing and creating Akonadis ToDo data. Write / Port a ToDo Plasmoid for Plasma Desktop or Plasma Active to show off the new API. Bonus: Port Kontact Touch Task to the new API instead of, or in addition to the Plasmoid.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt, QtQuick<br />
<br />
'''Possible Mentors:''' Kevin Krammer, Michael Bohlender and other KDE PIM community members<br />
<br />
====Project: KPeople / Kontact Touch People====<br />
<br />
'''Brief explanation:''' KPeople is a KDE framework for aggregating contact information of people from various data sources, e.g. the user's addressbook and instant messaging programs. For the future KDE would like this to be the main source of data for its address book application.<br />
<br />
'''Expected results:''' Define and implement a QML API for accessing kPeoples features. Create a pretty QtQuick example App/Plasmoid to show off and prove the API. Bonus: Bonus: Port Kontact Touch Addressbook to the new API instead of, or in addition to the Example.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt, QtQuick<br />
<br />
'''Possible Mentors:''' Martin Klapetek, Thomas Pfeiffer and other KDE PIM community members<br />
<br />
==== Project: Akonadi Commandline/Shellscripting Interface ====<br />
<br />
'''Brief explanation:''' Akonadi is a system that enables uniform access to various data formats across a wide range of data sources. Its main clients are graphics end user applications such as KMail. However, in some cases it is advantageous if data manipulation can be automated.<br />
Power users or system administrators often employ the multitudes of Unix/Linux commandline tools to achieve such automation tasks. The idea is to provide a tool or set of tools that allow Akonadi operations to be used in such scripts.<br />
<br />
'''Expected results:''' A non-GUI program able to perform useful tasks on Akonadi provided data, like creating folders, adding/deleting/copying/moving data such as contacts or emails, etc.<br />
<br />
'''Knowledge Prerequisite:''' C++, Shell scripting<br />
<br />
'''Mentor:''' Jonathan Marten, Kevin Krammer and other KDE PIM community members<br />
<br />
'''Resources:''' An early prototype can be found here https://projects.kde.org/projects/playground/pim/akonadiclient and there are two, non-Akonadi, clients which are part of KDE PIM: kabbclient (contacts), konsolecalendar (calendar)<br />
Contact the kde-pim mailinglist for discussions: https://mail.kde.org/mailman/listinfo/kde-pim<br />
<br />
<br />
=== Simon ===<br />
Simon is a speech recognition suite.<br />
<br />
[http://simon.kde.org Website] - [https://mail.kde.org/mailman/listinfo/kde-speech Mailing list] - IRC channel: #kde-speech on Freenode.<br />
<br />
==== Project: Streamline handling of various resources ====<br />
<br />
'''Brief explanation:''' Simon uses a multitude of different components: Scenarios, Base models, Shadow vocabulary, Language profiles, etc.<br />
<br />
While many of these components can be downloaded from within Simon, some can't and even for those that are better integrated, end-users still have to read additional documentation to know which components work together and which don't.<br />
<br />
The aim of this project is to bring the handling of these resources under a uniform and user-friendly interface.<br />
Specifically, the interface should resolve conflicts automatically and deduce an optimal default setup by itself (e.g. based on the system language and installed programs).<br />
<br />
'''Expected results:''' Much more user friendly setup.<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt<br />
<br />
'''Mentor:''' Peter Grasch <peter {+at+} grasch.net><br />
<br />
'''Resources:''' Some work (mostly brainstorming and UI design) was already conducted during Season of KDE 2013. Please contact me for details. This does not mean that this project is already assigned!<br />
<br />
=== KDE Telepathy===<br />
<br />
==== Project: Conference Video Call Support ====<br />
<br />
'''Brief explanation:''' Our current IM client can handle a 1-1 video call reasonably well. It currently does not<br />
support conference calls (>2 people). Our backend Telepathy should support this, but we do not make use of it in our client. This project will involve<br />
* some UI design<br />
* some low level GStreamer work<br />
* fixing parts of the Telepathy stack.<br />
<br />
Current code is inside the repository ktp-call-ui.<br />
<br />
'''Expected results:'''<br />
Working multi conference video calls.<br />
<br />
'''Knowledge Prerequisite:'''<br />
* C++, Qt<br />
* Ideally; QML, GStreamer and Telepathy<br />
<br />
'''Mentor:''' David Edmundson and Diane Trout<br />
<br />
==== Project: Telegram Network Support ====<br />
<br />
'''Brief explanation:''' Telegram is an upcoming network that aims to replace WhatsApp. Unlike whatsapp it has an open protocol (https://telegram.org/) and is gaining popularity.<br />
<br />
We want support in our IM client. This should be done by creating a connection manager using TelepathyQt service bindings. <br />
<br />
When this is complete, not only will we get Telegram support, but due to the distributed nature of Telepathy it will also work for Jolla, Ubuntu Phone and Empathy.<br />
<br />
'''Expected results:'''<br />
Working single and group chats using KDE Telepathy over the Telegram network<br />
<br />
'''Knowledge Prerequisite:'''<br />
C++, Qt, Reading Protocol Documentation<br />
<br />
'''Mentor:''' David Edmundson<br />
<br />
=== Solid ===<br />
==== Project: iOS Integration ====<br />
'''Brief explanation:''' Integrate the iOS platform with the Plasma desktop using libraries like libimobiledevice and kdeconnect.<br />
<br />
'''Expected results:''' Have an iOS application that is able to talk to KDE Connect and desktop integration using libimobiledevices.<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt, Objective C<br />
<br />
'''Mentor:''' Àlex Fiestas <afiestas {+at+} kde.org><br />
<br />
'''Resources:''' libimobiledevice, kdeconnect, plasma<br />
<br />
==== Project: Make Libbluedevil Async ====<br />
'''Brief explanation:''' Extend libbluedevil to have an asynchronous api, and port bluedevil to it.<br />
<br />
'''Expected results:''' libbluedevil should have an asynchronous api, and bluedevil should be ported to them.<br />
<br />
'''Knowledge Prerequisite:''' basic Qt and DBus<br />
<br />
'''Mentor:''' Àlex Fiestas <afiestas {+at+} kde.org><br />
<br />
'''Resources:''' libbluedevil, bluedevil, afiestas<br />
<br />
==== Project: Improve sharing experience ====<br />
'''Brief explanation:''' Improve the content sharing experience in Plasma by extending and improving Samba share, implementing other ways of sharing and write new ways of discovering other people's shares.<br />
<br />
'''Expected results:''' It should be possible to discover "shares" using dolphin (possibly via a new kioslave?) and it should be possible to share a folder between two Plasma computers really fast and easy (possibly implementing an http server plus discovery via avahi).<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt, extra points for KIO experience.<br />
<br />
'''Mentor:''' Àlex Fiestas <afiestas {+at+} kde.org><br />
<br />
'''Resources:''' avahi, http, kdenetwork-fileshare<br />
<br />
=== Plasma Media Center ===<br />
KDE's Plasma Media Center (PMC) is aimed towards a unified media experience on PCs, Tablets, Netbooks, TVs and any other device that is capable of running KDE software. PMC can be used to view images, play music or watch videos. Media files can be on the local filesystem or accessed with KDE’s Desktop Search.<br />
<br />
==== Project: Integrate with Simon ====<br />
<br />
'''Brief explanation:''' Simon is an open source speech recognition program that can replace your mouse and keyboard. The system is designed to be as flexible as possible and will work with any language or dialect. This project aims at integrating it with Plasma Media Center to control it.<br />
<br />
'''Expected results:''' Using Simon, the user should at least be able to use voice to -<br />
* Control playback of media (images, music, videos)<br />
* Navigate in the media browser (next page, previous page, "goto the 3rd item")<br />
* Home Screen navigation<br />
* Ability to switch to the player, image viewer, or playlist<br />
* Play a media file in the browser (or the playlist, when its shown) using its name<br />
<br />
'''Knowledge Prerequisite:''' Basic C++, Qt and QML<br />
<br />
'''Mentor:''' Shantanu Tushar <shantanu {+at+} kde.org> and Peter Grasch <peter {+at+} grasch.net><br />
<br />
==== Project: Integrate with Plasma Next ====<br />
<br />
'''Brief explanation:''' Plasma Next is the refreshed Plasma workspace written using the new KF5, Qt5 and QtQuick2 frameworks. Plasma Next is able to switch to different modes/formfactors on-the-fly (such as desktop, netbook, tablet). We want to be able to make Plasma Next able to switch into a media center mode.<br />
<br />
'''Expected results:''' After the project is complete, the Plasma Next shell should be able to switch to a Media Center mode and offer every feature that the standalone Plasma Media Center application provides. Examples are ability to browse media, playback, playlists etc.<br />
<br />
'''Knowledge Prerequisite:''' Qt, QML is required. Understanding of Plasma Next is a huge plus<br />
<br />
'''Mentor:''' Shantanu Tushar <shantanu {+at+} kde.org><br />
<br />
'''Resources:''' Some info about Plasma Next<br />
* http://vizzzion.org/blog/2014/01/plasma-new-beginning/<br />
* http://vizzzion.org/blog/2014/02/next-means-focus-on-the-core/<br />
* http://vizzzion.org/blog/2013/11/responsible-evolution/<br />
<br />
==== Project: Integrate with Simon ====<br />
<br />
'''Brief explanation:''' Simon is an open source speech recognition program that can replace your mouse and keyboard. The system is designed to be as flexible as possible and will work with any language or dialect. This project aims at integrating it with Plasma Media Center to control it.<br />
<br />
'''Expected results:''' Using Simon, the user should at least be able to use voice to -<br />
* Control playback of media (images, music, videos)<br />
* Navigate in the media browser (next page, previous page, "goto the 3rd item")<br />
* Home Screen navigation<br />
* Ability to switch to the player, image viewer, or playlist<br />
* Play a media file in the browser (or the playlist, when its shown) using its name<br />
<br />
'''Knowledge Prerequisite:''' Basic C++, Qt and QML<br />
<br />
'''Mentor:''' Shantanu Tushar <shantanu {+at+} kde.org> and Peter Grasch <peter {+at+} grasch.net><br />
<br />
==== Project: DVB Support for TV ====<br />
<br />
'''Brief explanation:''' https://en.wikipedia.org/wiki/Kaffeine is a KDE media player which supports playing TV using DVB. Our users have ben requesting for this support in PMC as well so that it becomes possible to watch TV as well.<br />
<br />
'''Expected results:''' Once the project is completed, Plasma Media Center should be able to play streams from a TV card with DVB support. There should be feature parity with Kaffeine.<br />
<br />
'''Knowledge Prerequisite:''' Basic C++, Qt and QML. Access to DVB hardware and signal availability in student's region is mandatory for testing https://en.wikipedia.org/wiki/Digital_Video_Broadcasting<br />
<br />
'''Mentor:''' Mentor wanted with DVB knowledge for the DVB bits. PMC team will mentor for Qt, QML, Plasma bits.</div>Shantanu Tusharhttps://community.kde.org/index.php?title=GSoC/2014/Ideas&diff=36615GSoC/2014/Ideas2014-02-25T07:05:53Z<p>Shantanu Tushar: Add DVB idea</p>
<hr />
<div>[[Category:Mentoring]]<br />
See also: [[../../|GSoc Instructions]], [[../../2013/Ideas|Last year ideas]]<br />
<br />
== Guidelines ==<br />
<br />
=== Information for Students ===<br />
<br />
These ideas were contributed by our developers and users. They are sometimes vague or incomplete. If you wish to submit a proposal based on these ideas, you may wish to contact the developers and find out more about the particular suggestion you're looking at.<br />
<br />
Being accepted as a Google Summer of Code student is quite competitive. Accepted students typically have thoroughly researched the technologies of their proposed project and have been in frequent contact with potential mentors. Simply copying and pasting an idea here will not work. On the other hand, creating a completely new idea without first consulting potential mentors is unlikely to work out.<br />
<br />
When writing your proposal or asking for help from the general KDE community don't assume people are familiar with the ideas here. KDE is really big!<br />
<br />
If there is no specific contact given you can ask questions on the general KDE development list kde-devel@kde.org. See [http://www.kde.org/mailinglists/ the KDE mailing lists page] for information on available mailing lists and how to subscribe.<br />
<br />
=== Adding a Proposal ===<br />
<br />
{{Note|Follow the template of other proposals!}}<br />
<br />
==== Project: ====<br />
<br />
'''Brief explanation:'''<br />
<br />
'''Expected results:'''<br />
<br />
'''Knowledge Prerequisite:'''<br />
<br />
'''Mentor:'''<br />
<br />
When adding an idea to this section, please try to include the following data:<br />
<br />
:*if the application is not widely known, a description of what it does and where its code lives<br />
:*a brief explanation<br />
:*the expected results<br />
:*pre-requisites for working on your project<br />
:*if applicable, links to more information or discussions<br />
:*mailing list or IRC channel for your application/library/module<br />
:*your name and email address for contact (if you're willing to be a mentor)<br />
<br />
If you are not a developer but have a good idea for a proposal, get in contact with relevant developers first.<br />
<br />
<br />
==Ideas==<br />
<br />
===Your Own Idea ===<br />
<br />
==== Project: Something that you're totally excited about ====<br />
<br />
'''Brief explanation:''' Do you have an awesome idea you want to work on with KDE but that is not among the ideas below? That's cool. We love that! But please do us a favor: Get in touch with a mentor early on and make sure your project is realistic and within the scope of KDE. That will spare you and us a lot of frustration.<br />
<br />
'''Expected results:''' Something you and KDE loves<br />
<br />
'''Knowledge Prerequisite:''' Probably C++ and Qt but depends on your project<br />
<br />
'''Mentor:''' Try to see who in KDE is interested in what you want to work on and approach them. If you are unsure you can always ask in #kde-soc on Freenode IRC.<br />
<br />
=== Amarok ===<br />
<br />
==== Project: Lyric support improvements ====<br />
<br />
'''Brief explanation:''' Amarok's support for fetching and displaying of lyrics is very limited. It just fetches from a single provider and many times no results are fetched, sometimes due to minor errors in track/album/artist name. Add some more providers of online lyrics databases. If no results are found this can be coupled with the better tagguessing feature (and even if the tags are not saved), the the lyrics providers can be searched with these guessed tags.<br />
Then, improve the lyrics display. Currently it just scrolls at a constant rate, generally that's inconsistent with the actual playback of the song. All .lrc files have timestamps, that can be followed: probably by highlighting the line playing.<br />
<br />
'''Expected results:''' Greatly increase the probability of fetching of the lyrics for any song. In the lyrics display, a highlighted line will display the current line being played.<br />
<br />
'''Knowledge Prerequisite:''' Knowledge of the Amarok code base (hence of Qt, C++). Basic knowledge of webservices.<br />
<br />
'''Mentor:''' Mark Kretschmann<br />
<br />
===digiKam===<br />
<br />
digiKam is an advanced digital photo management application for Linux, Windows, and Mac-OSX.<br />
<br />
* [http://www.digikam.org digiKam project web site]<br />
* [https://mail.kde.org/mailman/listinfo/digikam-devel Mailinglist]<br />
* [https://plus.google.com/+digikam Google+ page]<br />
* [http://webchat.freenode.net/?channels=digikam #digikam IRC channel on Freenode]<br />
<br />
==== Project: Integrate KIPI Export Plugins directly in the GUI of KIPI host applications ====<br />
<br />
'''Brief explanation:''' It would be nice to be able to encapsulate the Export/Import KIPI plugins directly in the GUI of the host application without opening a dedicated window. For the Export Plugins the place to load the plugins will be BQM and for the Import Plugins this can be in the digiKam import tool or in the main view. For this one must factorize the export/import kipi plugin interface and to group the common calls into a virtual interface, to implement tree and list view for the plugins.<br />
<br />
'''Dependencies:''' : digiKam KIPI interface, libkipi, KIPI Plugins <br />
<br />
'''Bugzilla entries:''' [https://bugs.kde.org/show_bug.cgi?id=235572 235572], [https://bugs.kde.org/show_bug.cgi?id=221704 221704] ,[https://bugs.kde.org/show_bug.cgi?id=143978 143978]<br />
<br />
'''Knowledge Prerequisite:''' C/C++, Qt/KDE, GUI<br />
<br />
'''Expected results:''' KIPI host apps that are compatible with the project will load KIPI Plugins in the BQM, the others will load the plugins as it's done right now without breaking any compatibility.<br />
<br />
'''Difficulty:''' high<br />
<br />
'''Lead Mentor:''' Gilles Caulier <caulier dot gilles at gmail dot com><br />
<br />
==== Project: Port Greystoration CImg interface to GMic ====<br />
<br />
'''Brief explanation:''' digiKam include [https://projects.kde.org/projects/extragear/graphics/digikam/repository/revisions/master/show/libs/3rdparty/cimg CImg library] to be able to use Greystoration algorithm which give nice fix to image based on Vortex theory, as [http://www.flickr.com/photos/digikam/8535414322/sizes/l/in/photostream/ Restoration tools]. Since CImg > 1.3.0, Greystoration algorithm have been moved in a new library named GMic with a completely different API. The goal of this project is to adapt digiKam Greystoration interface to GMic library.<br />
<br />
'''Dependencies:''' [https://projects.kde.org/projects/extragear/graphics/digikam/repository/revisions/master/show/libs/dimg/filters/greycstoration digiKam core], [https://projects.kde.org/projects/extragear/graphics/digikam/repository/revisions/master/changes/imageplugins/enhance/ Restauration and Inpaint editor tools], and [https://projects.kde.org/projects/extragear/graphics/digikam/repository/revisions/master/show/utilities/queuemanager/basetools/enhance Restauration tool from Batch Queue Manager]<br />
<br />
'''Knowledge Prerequisite:''' C/C++, math, Qt, <br />
<br />
'''Expected results:''' port image restoration algorithm from [http://cimg.sourceforge.net/ CImg] to [http://gmic.sourceforge.net/ GMic] API<br />
<br />
'''Difficulty:''' high<br />
<br />
'''Lead Mentor:''' Gilles Caulier <caulier dot gilles at gmail dot com><br />
<br />
==== Project: Add a quick access to Labels in dedicated tree-view ====<br />
<br />
'''Brief explanation:''' It would be nice to be able show all items from collections in icon-view which has Rating, Pick Labels, and Color Labels attributed, as it's already do with Tags. The goal is to build a tree-view with all Labels available on digiKam and process database query to show items relevant. This view must include No rating, All Rating values, No Pick Label, All Pick Label values, No Color Label, all Color Labels, which must be selected individually or grouped. This Labels tree-view must be available in KIPI album selector widget, as it's done currently for Tags, to be able to export these virtual albums with kipi-plugins. Also, in this project a way to select No Tagged items must be add to current Tags tree-view, to be homogenous with new Labels tree-view feature.<br />
<br />
'''Dependencies:''' : digiKam Database<br />
<br />
'''Bugzilla entries:''' [https://bugs.kde.org/show_bug.cgi?id=160363 160363], <br />
<br />
'''Knowledge Prerequisite:''' C/C++, Qt/KDE, GUI, Database<br />
<br />
'''Expected results:''' To have a quick acess tree-view in all relevant gui where Labels can be selected for photo workflow.<br />
<br />
'''Screenshots:''' [http://blogs.thesitedoctor.co.uk/tim/img/Windows-Photo-Gallery.JPG Microsoft Live Photo Rating tree-view], [http://images.apple.com/euro/aperture/features/images/video-audio-rating-20091020.jpg Apple Aperture Labels tree-view]<br />
<br />
'''Difficulty:''' medium<br />
<br />
'''Lead Mentor:''' Gilles Caulier <caulier dot gilles at gmail dot com><br />
<br />
===Marble===<br />
Marble is a virtual globe and world atlas — your swiss army knife for maps. Find your way and explore the world!<br />
<br />
* [http://marble.kde.org/ Marble project website]<br />
* [https://mail.kde.org/mailman/listinfo/marble-devel Mailinglist]<br />
* [http://gplus.to/Marble Google+ page]<br />
* [http://webchat.freenode.net/?channels=marble #marble IRC channel on Freenode]<br />
<br />
==== Project: Interactive Tours ====<br />
<br />
'''Brief explanation:''' A Tour is a set of related places along with supporting media (text, images, audio, video). Tours can be viewed (playback): The invididual places are visited in a defined timeline. They're useful for a wide range of tasks, like showing an interesting hike along with panorama pictures, highlighting places of interest for sightseeing or showing historic events and political changes happening over decades. The Marble library has been designed to support these use cases, but the user interface does not reveal all the features yet. This project is about changing that.<br />
<br />
'''Expected results:''' <br />
* Extend the existing Tour widget for animated tour playback<br />
* Improve the usability of the Tour widget<br />
* Support interactive elements in tour playback<br />
* Implement time support for tours for different time ranges (from eras to years to days to minutes to milliseconds)<br />
* Add support for recording tours<br />
* Enhance the screencast feature to generate videos from tours.<br />
Optional:<br />
* Extend Marble's owncloud synchronization feature for uploading tours to owncloud<br />
* Add tour viewing support to the Marble owncloud app<br />
* Implement tour viewing in the QML version of Marble<br />
* Provide tours for existing map themes to highlight features of them<br />
<br />
'''Knowledge Prerequisite:''' C++ and Qt. Would-be applicants are expected to work on junior jobs (possibly related to the project). Try to find your way into http://marble.kde.org/dashboard.php#contributors and solve as many tasks and bugfixes as possible.<br />
<br />
'''Mentor:''' Dennis Nienhüser and other Marble developers.<br />
<br />
==== Project: Marble Game ====<br />
<br />
'''Brief explanation:''' The latest introduction of a recent vector map inside Marble ("Natural Earth dataset") allows for interesting features: With recent and detailed political borders it's also possible to create a game based on Marble similar in spirit to KGeography. In terms of user-featureset the goal is to create an entertaining and educational game-application or game-plugin using Marble. Technically the goal is to extend Marble's framework to allow for this (there surely will be roadblocks). <br />
<br />
'''Expected results:''' <br />
* An application that is based on the MarbleWidget which teaches Geography in a style similar to KGeography.<br />
* OR/AND a plugin that extends Marble with a menu entry that invokes a Quiz-style educational game.<br />
* Extend Marble's framework to allow for the features required<br />
* Improve the Marble framework so that it provides a better experience for 3rd-party developers (by providing missing tutorials, documentation or even better APIs)<br />
<br />
'''Knowledge Prerequisite:''' C++ and Qt. Would-be applicants are expected to work on junior jobs (possibly related to the project). Try to find your way into http://marble.kde.org/dashboard.php#contributors and solve as many tasks and bugfixes as possible.<br />
<br />
'''Mentor:''' Torsten Rahn and other Marble developers.<br />
<br />
==== Project: Marble Editing mode: Polygons ====<br />
<br />
'''Brief explanation:''' During last GSoC a mode for editing ground overlays was added to the experimental editing Mode for Marble. During this GSoC the editing mode should be extended with polygon editing. The resulting editor should allow to create polygons and edit nodes of existing files in a way similar to inkscape. If there is enough time then the editing mode for Marble should be polished so that it can be included with the next release.<br />
<br />
'''Expected results:''' <br />
* An editing mode for polygons inside Marble. <br />
* Adding, moving and removing nodes. <br />
* Possibly merging nodes and other features that tools like inkscape provide for node interaction<br />
* Assignment of lables, outline color and fill color.<br />
* Possibly editing of "holes" inside the Polygon.<br />
<br />
'''Knowledge Prerequisite:''' C++ and Qt. Would-be applicants are expected to work on junior jobs (possibly related to the project). Try to find your way into http://marble.kde.org/dashboard.php#contributors and solve as many tasks and bugfixes as possible.<br />
<br />
'''Mentor:''' Torsten Rahn and other Marble developers.<br />
<br />
<br />
=== KDE Edu ===<br />
<br />
==== Project: Sound Visualization and Sound Effects in Artikulate ====<br />
'''Brief explanation:''' Artikulate is a language learning application that focus on improving a learner's pronunciation skills by repeating native speaker recordings, recording that try and comparing boths. By repeating these trials, a learner can continuously improve his/her language skills. There are areas for this project:<br />
# native speaker recordings are recorded (either by GStreamer or QtMultimedia), converted to an OGG file and saved. What is missing is an application of noise cleanup filters, removing of no-sound intervals, and normalization (possibly combined with a very basic sound editor)<br />
# when playing and comparing sounds, there is no visual feedback about how much the soundwaves differ: plotting the soundwaves in a reasonable format <br />
'''Goals:''' The goal is to extend the sound processing in Artikulate to<br />
# Implement simple sound filters for normalization, noise removal, removal of white noise and integrate sound postprocessing into the editor workflow<br />
# Implement plotter for soundwaves and integrate this in the training mode<br />
Yet for both it is important to research which libraries already exist and possibly could be reused. Also, research is needed about which techniques for comparing the soundwaves is appropriate. A proposal should already contain verbose information about these questions.<br />
<br />
'''Knowledge Prerequisite:''' a must is knowledge of C++ and Qt, a plus is knowledge of sound processing libraries (e.g. GStreamer) or experience in sound processing<br />
<br />
'''Mentor:''' Andreas Cord-Landwehr and/or other people from KDE Edu<br />
<br />
==== Project: Semi-Automatic Generation of Language Lessons for Parley ====<br />
<br />
'''Brief explanation:''' Parley is an advanced vocabulary trainer with features like 8 different learning modes, including flashcards, genders of nouns, conjugation of verbs and several more. A lesson for Parley is encoded in kvtml, KDE Vocabulary Training Markup Language which is an XML format for vocabulary lessons of many different types.<br />
<br />
But it is a relatively demanding task to create good lessons for Parley. You need to manually edit a list of words in several different languages, add images and/or sound clips to them all, word class, pronounciation, etc.<br />
<br />
We would like to create a semi-automatic generator for lessons using the Kexi database in the Calligra suite. The workflow will be something like this.<br />
<br />
# You use an import script to import a selected part of the word list in wiktionary.org, an online wiki dictionary, into Kexi. This will then form the basis for the work on the lessons. <br />
# You define a list of words in the so called primary language, which is the language that the lesson is supposed to teach. This list will be the words only and could be created either using the editor inside Parley or a standard text editor and then import it into Parley.<br />
# You define which secondary languages you want in your lesson. These languages are the ones that the student is already familiar with. The training session will then consist of translations from one of the secondary languages (most often the native language of the student) and the primary language. At this point you also define which other parameters you want to include in the lesson, like image, sound clip, phonetic text, explanation, etc.<br />
# You invoke the automatic lesson generator which will search for the words you have defined in the database, look up suitable translations and add the other fields that you asked for.<br />
# If necessary, patch up the newly generated lesson with missing data that wasn't present in the database or add the information to the database and redo the generation.<br />
<br />
'''Goals:''' The goal is to create software that supports the workflow above. It will at least comprise the following tasks:<br />
# Define an efficient database schema for the words and translations. Wiktionary.org has 3.6 million entries and even a subset of that can take significant amounts of storage.<br />
# Implement a script that reads from wiktionary.org and enters the data into the Kexi database using the calligradb library. There is already a script for downloading and parsing the contents of Wiktionary at [1] but you will have to adapt it to Kexi. <br />
# Implement the code that searches the database and populates the lesson with the data found.<br />
# (If time permits) Implement a more advanced lesson editor than is currently present in Parley or a stand-alone editor.<br />
<br />
'''Knowledge Prerequisite:''' Good knowledge of C++ and Qt, a plus is knowledge of of kvtml and the related C++ classes in the kde edu libraries. Also some knowledge of databases and database searches.<br />
<br />
'''Mentor:''' Jaroslaw Staniek, the maintainer of Calligra Kexi, with help from Inge Wallin<br />
<br />
[1] http://en.wiktionary.org/wiki/Help:FAQ#Downloading_Wiktionary<br />
<br />
==== Project: Kig - Geogebra Support ====<br />
[http://edu.kde.org/applications/mathematics/kig/ Kig] is an application for interactive geometry.<br />
<br />
'''Goals:''' The overall goal is to support Geogebra files in KDE Edu. Because Geogebra is both a plotting tool and a tool for interactive geometry, the stated goal is very broad. For this particular project, we are interested in supporting interactive geometry in Kig. The current progress towards this goal is in the [https://projects.kde.org/projects/kde/kdeedu/kig/repository/show?rev=geogebra geogebra] branch of Kig's repository. Since there is some progress towards that goal, the particular goal of supporting these files in Kig may or may not be smaller than a GSoC project, in which case we can move forward to implement support for these files in the many plotting tools we have in KDE Edu.<br />
<br />
'''Knowledge Prerequisite:''' By the start of GSoC you should<br />
# Be familiar with Kig as a user<br />
# Be familiar with Geogebra as a user<br />
# Be familiar with Git, you will have to work with branches<br />
# Be able to build Kig<br />
# Be familiar with Kig's filter code: Kig is a large code base, so you are not expected to know everything about it, but you should at least be familiar with how filters are created and be able to modify filters since this will be the part of the code that you will be working with.<br />
<br />
'''Mentor:''' David Narvaez (IRC: dMaggot, please [[User:DMaggot/Mentoring|read this]] before applying)<br />
<br />
==== Project: Kig - Analitza Integration (Experimental) ====<br />
[http://edu.kde.org/applications/mathematics/kig/ Kig] is an application for interactive geometry.<br />
<br />
'''Goals:''' Kig's core is full of code to deal with finding solutions to linear or quadratic equations which are the bulk of interactive geometry. While this code works, in many cases it does so by approximations and it is, in general, very convoluted. The goal of this project is to implement all of this code in terms of a [https://en.wikipedia.org/wiki/Computer_algebra_system CAS] to address both of the disadvantages mentioned before. Analitza is an "in-house" library that deals with mathematical expressions, and is thus a good candidate for a CAS provider in Kig. This project is experimental because:<br />
# Implementing everything in terms of a CAS may or may not improve code quality in terms of readability. If it doesn't (and we would only know this at the end of the project), the implementation of this project will not make it to the master branch.<br />
# Analitza may or may not be up for all of the tasks we need to do in Kig, in which case improving Analitza is an option.<br />
<br />
'''Knowledge Prerequisite:''' By the start of GSoC you should<br />
# Be familiar with Kig as a user<br />
# Be familiar with Analitza as a consumer (it is a library, so you would not be a "user")<br />
# Be able to build Kig<br />
# Be able to build Analitza<br />
# Be familiar with Kig<br />
# Be familiar with Kig's object hierarchy and the mathematics behind that<br />
<br />
'''Mentor:''' David Narvaez (IRC: dMaggot, please [[User:DMaggot/Mentoring|read this]] before applying)<br />
<br />
==== Project: Integrate Cantor into LabPlot====<br />
[http://labplot.sourceforge.net/ LabPlot] is a KDE-application for interactive graphing and analysis of scientific data.<br />
<br />
'''Brief explanation:''' The integration is twofold:<br />
<br />
# currently, for the created plots LabPlot uses either the data provided by hand in a spreadseet or by using data imported from external ascii-files. By having Cantor within LabPlot it should be possible to access the data sets created in a computer algebra session (say Maxima) provided by Cantor. Cantor's session have to be integrated into LabPlot's model-view framework and have to be put onto the same foot as all the other objects managable in LabPlot (spreadsheet, worksheets etc.).<br />
# By calling a CAS-specific command for creating a 2D-plot in Cantor, Cantor creates an external process that renders the plot and embeds the result as a pixmap. Instead of such a static pixmap, LabPlot's plots should be embeded. This would provide high degree of control of the plot appearance as provided by LabPlot.<br />
<br />
'''Mentor:''' Alexander Semke<br />
<br />
==== Project: Integrate [http://en.wikipedia.org/wiki/VTK VTK] into LabPlot, investigate [http://en.wikipedia.org/wiki/Tulip_(software) Tulip] ====<br />
[http://labplot.sourceforge.net/ LabPlot] is a KDE-application for interactive graphing and analysis of scientific data.<br />
<br />
'''Brief explanation:'''<br />
# LabPlot lacks 3D-functionality. In the old KDE3-based LabPlot qwt3D was used for this that is not an option anymore. The task consists of the integration of [http://en.wikipedia.org/wiki/VTK VTK] -libs. Also, the relevant widgets for 3D-plot editting should be created in a manner similar for all the other objects available in LabPlot now.<br />
# Investigate whether it's reasonable to use LabPlot as a frontend (or to extend it to be a frontend) to the functionality provided by [http://en.wikipedia.org/wiki/Tulip_(software) Tulip] yes, how?<br />
<br />
'''Mentor:''' Alexander Semke<br />
<br />
===Krita===<br />
We welcome students who want to work on Krita for Google Summer of Code. If you want to work on Krita, keep in mind that we would like you to stay with the project, also outside Summer of Code. Summer of Code isn't just a summer job with some mentoring added -- it's a way of becoming part of the team.<br />
<br />
If you haven't worked on Krita before, we want you to demonstrate your skill beforehand by fixing bugs or implementing some features. It's a good idea to start on that in January. Here is a list of pre-gsoc ideas:<br />
<br />
==== Project: Painting and Separation of 3D Textures====<br />
<br />
As one of it’s use cases, Krita’s vision statement includes painting textures for 3D. 3D textures are typically comprised of a number of separate black and white, RGB or RGBA images. Thus painting for textures typically requires painting on more than one single layer / channel at a time. For example painting a scratch into a metal surface may require painting black onto the bump channel, another colour on the diffuse channel, and another to the specularity channel (as well as possibly some others such as the displacement channel). All of these are affected simultaneously.<br />
<br />
Currently Krita’s painting system is only able to paint onto single layers at a time and brushes have not been designed in such a way as to allow adjusting multiple channels simultaneously as would be needed. This topic would require looking at how Krita’s current painting system could be extended to paint the necessary adjustments to the channels used in 3D rendering, show the textures created in OpenGL and then export those channels for use in 3D applications.<br />
<br />
==== Project: 3D Material Image Maps====<br />
<br />
3D materials are made up of a bunch of images called image maps. If the user could associate layers as image maps in Krita, and paint on all of them at the same time, artists could paint whole 3D materials - something currently only available in high end 3d apps like zBrush (not even Photoshop / Corel Painter). The trick is that the position of what's painted needs to match on every map/layer, but the colours vary. For example, a scratch on a human characters skin would have a red colour map, a white (=raised) bump map, a light grey (=semi-shiny) specularity map etc, all in the exact same location on the each image map. Traditional methods of trying to create each image from scratch or by manipulating the colour map are very, very slow and painful. A simple version of this could be done as follows:<br />
<br />
* Each layer has a toggle in the layers docker called "texture map" or similar. This is turned off by default. When active, the brush paints on *all* layers that currently have "texture map" active.<br />
<br />
* When picking a colour, a dropdown lets the user pick "Default" or any active texture map layer. "Default" is just the current behaviour. If the user selects a layer in the dropdown, then the selected colour will be applied to that layer when painting on *any* layer.<br />
* In the file or layer menu is an option "Export texture maps" which saves each texture map layer as an image. The layer name and extension appended automatically to the file name. For example, on a file called character.kra, the layer titled "colour" would be saved as "character-colour.jpg" (or whatever format was selected).<br />
<br />
For step 3, a simple, one click / shortcut, method is vital, as artists often have to check their material in their 3d app every few minutes, and wading through saving 10 layers individually, each with manual file naming and confirming file format settings each time is unacceptably slow. For any artist who requires this level of control, they can use Layers menu -> "Save Layer as Image" already in krita.<br />
<br />
Allowing artists to paint a single material rather than creating multiple separate image maps by hand, would make Krita formidable for painting 3D textures, and the most advanced open source application for 3D texturing.<br />
<br />
==== Project: Matte painting====<br />
<br />
One of Krita's main use cases is as a professional tool for painting textures and mattes in digital film. Mattes are primarily made of sequences of images generated by a combination of two methods, first by animatable spline based shapes, which currently exists and is being developed in blender, and then after that, by hand painting frames for detailed areas and corrections. The trouble is that no currently maintained FOSS application currently tries to provide the ability to create hand painted mattes. This project is to extend Krita for this purpose. What's needed here is the following:<br />
* The ability for Krita to load manually selected sequences of color managed images as frames to be represented as a single layer in Krita. Optionally would be the ability to display playback at reduced resolutions to increase performance and to offset the time at which sequences were inserted.<br />
* A “Timeline” docker which would display the current frame displayed, and allow clicking and dragging to different points in time, updating the image displayed in the canvas to match. Optional would be the ability to zoom and scroll the timeline, mark modified frames on the timeline, playback the image sequence, forwards and backwards as video (most likely only in the openGL mode of Krita or with an external tool like ffplay) and display times in a range of formate EG SMTP, PAL, NTSC, Secam etc.<br />
* Updating the paint and transparency layer types, so that when Krita is using a frame sequence and one of these layer types is created, they also represent a series of frames rather than just a single image. This could possibly be a toggle switch on layers, much as visibility, alpha lock etc. are now.<br />
* The ability to save layers that are displaying frame sequences out as frame sequences also, giving them user definable names (eg where to insert the frame number, how many digits to pad).<br />
* Keyboard shortcuts to move forwards and backwards 1/10/100 frames, to jump to the start and end of the timeline and forward / backwards play if video playback is supported.<br />
<br />
==== Project: Cartoon Text Balloon System====<br />
<br />
Krita already has two text tools, but neither is suited for creating cartoon balloons. The system should allow the creation of vector-based balloons in different styles. The balloons can contain styled text. The text and balloons should be translatable and a system to select the current language should be created. It should be possible to save the balloon text to a separate file that can be used as input for translations. Finally, care must be taken to support right-left languages.<br />
<br />
==== Project: Substrate simulation ====<br />
<br />
'''Brief explanation''': Substrates for painting and drawing have a direct influence on the result of the art. The goal of this project is bringing this richness of these effects to Krita. There is an existing body of literature and academic projects on this topic, with Bill Baxter and Tom van Laerhoven being among the best known researchers. For the right effect, we need to take care of the 3d structure of the substrate, it’s effect on paint tools -- smoothness, absorbency and other parameters. An interesting option is to make it possible to apply different substrates to existing paintings.<br />
Expected results: an optional substrate simulation that works with all current Krita tools<br />
<br />
==== Project: Real Paint Emulation ====<br />
<br />
We already did some research on the emulation of real-world paint and we do already have some essential pieces of it: Hairy Brush and Bumpmap filter. Now we need to bring this all together and allow a painter to use it easily, so that he could paint images like that: TODO. This project would involve creation of a special type of layer and a new colorspace, so the student should already be familiar with our layer stack and pigment code.<br />
<br />
==== Research Project: layer stack optimizations ====<br />
<br />
Right now when one layer got changed our merger should walk through all the layers of the current group and compose all of them into projection one by one. But this doesn't take into account that COMPOSITE_OVER (which is the most popular composition mode) has an associativity property, which means we can merge all the layers below and all the layers above dirty one into two groups, and calculate a group of any size with only two composition operations, which would give huge speed advantages.<br />
<br />
Unoptimized group:<br />
<br />
* layer 6<br />
* layer 5<br />
* layer 4<br />
* layer 3 <-- active layer (becomes dirty quite often)<br />
* layer 2<br />
* layer 1<br />
<br />
Optimized group:<br />
<br />
* <flattened 4-6><br />
* layer 3 <-- active layer (becomes dirty quite often)<br />
* <flattened 1-2><br />
<br />
After this project is done, we can start implementing layer composition on the GPU using openGL.<br />
<br />
==== Project: Improved Animation Brush System ====<br />
This should result in animation brushes being more readily available and adjustable. The current way of doing this is not as userfriendly as it could be.<br />
<br />
*Dedicated "Animation Brush GROUP"-> everything in group is a frame of the animation. (for use in current file,instead of in another instance of krita)<br />
*Convert group to animation group ->Normal group becomes animation brush reference.<br />
*Save as animation brush PRESET<br />
*options to set animation brush continuity to custom, random, incremental, pressure,angular,loop...<br />
*animation brush presets (in settings) need a timeslider to flip through the available frames<br />
<br />
https://bugs.kde.org/show_bug.cgi?id=322159<br />
<br />
==== Project: seamless textures by using UV layout as self-wrapping paint mask====<br />
This is a tool that should help in creating seamless (or as close as possible) textures for organic models. It will help in painting creases and other details across seams.<br />
http://www.sintel.org/wp-content/uploads/2010/01/face_uv_export.png<br />
<br />
*Convert intersections on uvlayout to seam transfer points.<br />
*use those points to transfer painted strokes to connected points on other side (set by user) <br />
*create userfriendly way to add,manage those seam transfer points. (multiple should be active at once)<br />
<br />
https://bugs.kde.org/show_bug.cgi?id=324072<br />
<br />
ALTERNATIVE<br />
*Similar to previous idea,but with movable curves/grid with adjustable seam transfer points in stead of converting a whole UV layout automaticly<br />
<br />
https://bugs.kde.org/show_bug.cgi?id=321547<br />
<br />
More ideas for projects can be found here:<br />
https://bugs.kde.org/buglist.cgi?cmdtype=runnamed&namedcmd=Wishlist%20count&list_id=884686<br />
<br />
=== Kexi ===<br />
Kexi is a visual database creator. It can be used for designing database applications, inserting and editing data, performing queries, and processing data.<br />
<br />
More info: [[Kexi|Developers' wiki]], [http://www.calligra.org/kexi web site for users], [https://mail.kde.org/mailman/listinfo/calligra-devel mailing list], IRC channel: #kexi and #calligra on Freenode.<br />
<br />
==== Project: Add support for importing tables from LibreOffice Base to Kexi ====<br />
<br />
'''Brief explanation:''' Add support for importing (Kexi calls it data/design migration) tables from LibreOffice (or OpenOffice) Base (ODB format) to Kexi. This task involves research on ODB format (it's relatively openly defined). Qt/C++ shall be used for the task, not any Java engine (HSQL db). This could be introduction to later development of complete database import from ODB to a Kexi database.<br />
<br />
'''Expected results:''' In the GUI the feature shall be put in the same place as the import from MDB: External Data -> Import Tables -> Table Importing Wizard. Then user would see .odb support in the open file dialog, just like it has access to importing CSV or MDB.<br />
<br />
'''Knowledge Prerequisite:''' C++, some Qt, some databases, some XML, software architecture<br />
<br />
'''Mentor:''' [[User:Jstaniek|Jarosław Staniek]] (Kexi maintainer)<br />
<br />
'''First steps''':<br />
:*See [http://wiki.openoffice.org/wiki/FAQ_(Base)] for a start.<br />
:*Sample .odb databases are available for [http://www.floppybunny.org/robin/web/virtualclassroom/chap8/libreoffice_base.html this] tutorial.<br />
:*Studying kexi/migration/importtablewizard.cpp which is a GUI taking an instance of implementation of a migrate driver derived from KexiMigration::KexiMigrate (in your case - the ODB driver). It's the m_migrateDriver attribute.<br />
:*Implementing plugin (needed methods of the driver) in migration/odb/ by looking how it was performed for other cases, e.g. for mysql (see kexi/migration/mysql/ dir) or other cases such as pqxx, txt, xbase, sybase or mdb<br />
:*In the actual C++ implementation, KoOdfReadStore class from calligra libs can be used to read contents of the .odb.<br />
<br />
=== Calligra Plugins ===<br />
<br />
Calligra is an office suite with lots of different applications with an user interface that is easy to use, highly customizable and extensible.<br />
<br />
More info: [http://www.calligra.org web site for users], [https://mail.kde.org/mailman/listinfo/calligra-devel mailing list], IRC channel: #calligra on Freenode.<br />
<br />
==== Project: Variable thickness lines ====<br />
<br />
'''Brief explanation:''' One of the most fundamental basics of drawing is varying the width of your lines to show shape, form and perspective. Almost every line tapers at either end, and often gets thicker and thinner in different places as needed. For purely technical and histrorical reasons though, every vector program (Illustrator, Inkscape, Karbon etc) make curves all one hard width. <br />
This proposal is to create a variable width path shape / tool, much like the path tool, would allow drawing curves, but where each node could have its width set so that the line width changed smoothly from node to node. <br />
As a plugin for the Calligra suite, this would clearly benefit apps as Karbon and also Krita.<br />
<br />
'''Expected results:''' variable width path tool is able to change the width of any path node to an arbitary percentage (say 155%) of the stroke width. See http://bugsfiles.kde.org/attachment.cgi?id=56995 for mockup. The shape needs to be able to save and load in svg/odf.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt, SVG?<br />
<br />
'''Mentor:''' Thorsten Zachmann < zachmann @ kde dot org ><br />
<br />
=== Keyboard Layouts ===<br />
<br />
Keyboard layouts in KDE allow user to use multiple keyboard layouts and switch between them. It consists of keyboard configuration module (in System Settings), keyboard layout widget/applet, and keyboard layout daemon.<br />
<br />
==== Project: Integrating Input Methods with keyboard layout configuration ====<br />
<br />
'''Brief explanation:''' Input method and keyboard layout configuration are serving the same purpose - to allow users to type text in non-default language. Currently KDE has integrated system to configure keyboard layouts but IM need to be configured somewhere else. Also when IM is configured it takes over some functions of keyboard layout configuration. So it would be nice if we could have IM and keyboard layout configuration in one place.<br />
It seems that IBus has already gained community acceptance so this will be the target for integration into KDE keyboard module.<br />
<br />
'''Expected results:''' Keyboard configuration module in System settings will include IM configuration and it will be integrated with existing keyboard layout options.<br />
<br />
'''Knowledge Prerequisite:''' good knowledge of C++, development experience with Qt and KDE, understanding of Input Methods (IBus)<br />
<br />
'''Mentor:''' Andriy Rysin <arysin@gmail.com><br />
<br />
=== KDevelop ===<br />
<br />
==== Project: Clang Integration ====<br />
<br />
'''Brief explanation:''' Finish the kdev-clang plugin to make it a usable replacement for the existing C++ plugin.<br />
<br />
'''Expected results:''' All advanced features of the KDevelop C++ are ported to the kdev-clang plugin. This includes code completion helpers, as well as basic refactoring and assistant integration.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt. Knowledge about Clang is helpful<br />
<br />
'''Mentor:''' Milian Wolff<br />
<br />
==== Project: Checker Framework ====<br />
<br />
'''Brief explanation:''' A generic framework should be created which provides the foundation for other plugins to report errors. <br />
<br />
'''Expected results:''' Right now we have the problems toolview but it is tightly coupled to the DUChain. This should be changed to use a separate item repository which stores the problems for a given path. The data stored would be: Path and range of where the issue is found, a short error message and optionally a long description. Furthermore, plugins might want to store additional info from which the problem could be fixed (compare to the 'add include path' or similar wizards we have already in the language framework).<br />
<br />
This framework should then be used to integrate various tools.<br />
<br />
First of all the existing language plugins should show the problems they find there.<br />
The existing playground plugins for krazy and cppcheck integration should reuse that framework<br />
any other linters could be integrated, such as jslint, pylint etc. pp.<br />
runtime checkers could be integrated, such as valgrind's memcheck, ptrcheck, helgrind, drd, ...<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt. Knowledge of linters such as Valgrind etc. is helpful.<br />
<br />
'''Mentor:''' Milian Wolff<br />
<br />
==== Project: SVN Plugin Rewrite ====<br />
<br />
'''Brief explanation:''' Rewrite the SVN plugin to use the C-API directly.<br />
<br />
'''Expected results:''' The existing SVN plugin uses an outdated kdevsvncpp checkout internally which causes troubles, warnings and licensing issues. Port the plugin to either the C-API of svn or alternatively try to reuse code from current kdevsvn. The result should be a tested, working plugin for SVN integration without licensing issues nor compile time warnings about usage of deprecated API.<br />
<br />
'''Knowledge Prerequisite:''' C, C++, Qt, SVN<br />
<br />
'''Mentor:''' Milian Wolff<br />
<br />
=== KDE PIM ===<br />
<br />
The KDE PIM community work on a set of libraries and applications for Personal Information Management, including email, calendaring, contacts, and feed aggregation.<br />
<br />
==== Project: OpenHolidays ====<br />
<br />
'''Brief explanation:''' The KHolidays library provides KDE applications with information on public holidays around the world, however the file format is very hard to use and maintain and the library features are very limited and restricted to Qt users. The goal of the OpenHolidays project is to develop a new open standard and data repository that can be used by any project that needs the data. See http://community.kde.org/KDE_PIM/KHolidays for more details.<br />
<br />
'''Expected results:''' Define the new JSON file format and port the existing data files to the new format. Develop a shared Qt-only library to parse the holiday files and provide access to them with a iCal style event-based api. Implement an Akonadi resource to access the data. Extended goals: Develop a JavaScript library to use the files. Develop a web site and web service at openholidays.org to provide online access to the data files.<br />
<br />
'''Knowledge Prerequisite:''' C++ and Qt for core goals, JavaScript and web services for extended goals.<br />
<br />
'''Mentor:''' John Layt and other KDE PIM community members.<br />
<br />
==== Project: Enhanced Searching in KMail ====<br />
<br />
'''Brief explanation:''' KMail is the defacto email client in KDE. It currently has a complex search dialog which allows the users to configure many different parts of the search. While it is very powerful, it is not very usable. A better search dialog is required which allows the user to modify the initial search and filter the data appropriately. A good example of this would be the Thunderbird search dialog - https://support.mozillamessaging.com/media/uploads/gallery/images/2011-03-14-10-05-42-56151b.jpg<br />
<br />
'''Expected results:''' Implementing the new search dialog and updating the backend search code to include whatever new features are required. Implementing this search dialog will require messing around with Akonadi, Baloo and KPeople.<br />
<br />
'''Knowledge Prerequisite:''' C++ and Qt. A basic understanding of Information Retrieval would be nice.<br />
<br />
'''Mentor:''' Vishesh Handa and other KDE PIM community members.<br />
<br />
==== Project: Active Mail ====<br />
'''Brief explanation:''' Active Mail is a QtQuick based mail application, a touch input friendly version of KMail so to speak. Currently it still depends on QtWidget based user interfaces for certain tasks which will have to be replaced before Active Mail can live up to its promise. Such missing pieces are the email composer and the email viewer. <br />
<br />
'''Expected results:''' Define and implement a general QtQuick API for composing emails. Rework the Active Mail composer UI/UX with the help of our usability expert and make it shine.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt, QtQuick<br />
<br />
'''Possible Mentors:''' Thomas Pfeiffer, Michael Bohlender, Kevin Krammer<br />
<br />
==== Project: QtQuick ToDo API / Plasmoid====<br />
<br />
'''Brief explanation:''' KDE PIM wants to make it's data accessible for applications which use QML to declare their user interfaces, e.g. applications using QtQuick. For that they need data handling objects that are accessible through QML, e.g. item models that have a mapping of string based role names to enum value based roles in C++, etc.<br />
<br />
'''Expected results:''' Define and implement a general QML API for accessing and creating Akonadis ToDo data. Write / Port a ToDo Plasmoid for Plasma Desktop or Plasma Active to show off the new API. Bonus: Port Kontact Touch Task to the new API instead of, or in addition to the Plasmoid.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt, QtQuick<br />
<br />
'''Possible Mentors:''' Kevin Krammer, Michael Bohlender and other KDE PIM community members<br />
<br />
====Project: KPeople / Kontact Touch People====<br />
<br />
'''Brief explanation:''' KPeople is a KDE framework for aggregating contact information of people from various data sources, e.g. the user's addressbook and instant messaging programs. For the future KDE would like this to be the main source of data for its address book application.<br />
<br />
'''Expected results:''' Define and implement a QML API for accessing kPeoples features. Create a pretty QtQuick example App/Plasmoid to show off and prove the API. Bonus: Bonus: Port Kontact Touch Addressbook to the new API instead of, or in addition to the Example.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt, QtQuick<br />
<br />
'''Possible Mentors:''' Martin Klapetek, Thomas Pfeiffer and other KDE PIM community members<br />
<br />
==== Project: Akonadi Commandline/Shellscripting Interface ====<br />
<br />
'''Brief explanation:''' Akonadi is a system that enables uniform access to various data formats across a wide range of data sources. Its main clients are graphics end user applications such as KMail. However, in some cases it is advantageous if data manipulation can be automated.<br />
Power users or system administrators often employ the multitudes of Unix/Linux commandline tools to achieve such automation tasks. The idea is to provide a tool or set of tools that allow Akonadi operations to be used in such scripts.<br />
<br />
'''Expected results:''' A non-GUI program able to perform useful tasks on Akonadi provided data, like creating folders, adding/deleting/copying/moving data such as contacts or emails, etc.<br />
<br />
'''Knowledge Prerequisite:''' C++, Shell scripting<br />
<br />
'''Mentor:''' Jonathan Marten, Kevin Krammer and other KDE PIM community members<br />
<br />
'''Resources:''' An early prototype can be found here https://projects.kde.org/projects/playground/pim/akonadiclient and there are two, non-Akonadi, clients which are part of KDE PIM: kabbclient (contacts), konsolecalendar (calendar)<br />
Contact the kde-pim mailinglist for discussions: https://mail.kde.org/mailman/listinfo/kde-pim<br />
<br />
<br />
=== Simon ===<br />
Simon is a speech recognition suite.<br />
<br />
[http://simon.kde.org Website] - [https://mail.kde.org/mailman/listinfo/kde-speech Mailing list] - IRC channel: #kde-speech on Freenode.<br />
<br />
==== Project: Streamline handling of various resources ====<br />
<br />
'''Brief explanation:''' Simon uses a multitude of different components: Scenarios, Base models, Shadow vocabulary, Language profiles, etc.<br />
<br />
While many of these components can be downloaded from within Simon, some can't and even for those that are better integrated, end-users still have to read additional documentation to know which components work together and which don't.<br />
<br />
The aim of this project is to bring the handling of these resources under a uniform and user-friendly interface.<br />
Specifically, the interface should resolve conflicts automatically and deduce an optimal default setup by itself (e.g. based on the system language and installed programs).<br />
<br />
'''Expected results:''' Much more user friendly setup.<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt<br />
<br />
'''Mentor:''' Peter Grasch <peter {+at+} grasch.net><br />
<br />
'''Resources:''' Some work (mostly brainstorming and UI design) was already conducted during Season of KDE 2013. Please contact me for details. This does not mean that this project is already assigned!<br />
<br />
=== KDE Telepathy===<br />
<br />
==== Project: Conference Video Call Support ====<br />
<br />
'''Brief explanation:''' Our current IM client can handle a 1-1 video call reasonably well. It currently does not<br />
support conference calls (>2 people). Our backend Telepathy should support this, but we do not make use of it in our client. This project will involve<br />
* some UI design<br />
* some low level GStreamer work<br />
* fixing parts of the Telepathy stack.<br />
<br />
Current code is inside the repository ktp-call-ui.<br />
<br />
'''Expected results:'''<br />
Working multi conference video calls.<br />
<br />
'''Knowledge Prerequisite:'''<br />
* C++, Qt<br />
* Ideally; QML, GStreamer and Telepathy<br />
<br />
'''Mentor:''' David Edmundson and Diane Trout<br />
<br />
==== Project: Telegram Network Support ====<br />
<br />
'''Brief explanation:''' Telegram is an upcoming network that aims to replace WhatsApp. Unlike whatsapp it has an open protocol (https://telegram.org/) and is gaining popularity.<br />
<br />
We want support in our IM client. This should be done by creating a connection manager using TelepathyQt service bindings. <br />
<br />
When this is complete, not only will we get Telegram support, but due to the distributed nature of Telepathy it will also work for Jolla, Ubuntu Phone and Empathy.<br />
<br />
'''Expected results:'''<br />
Working single and group chats using KDE Telepathy over the Telegram network<br />
<br />
'''Knowledge Prerequisite:'''<br />
C++, Qt, Reading Protocol Documentation<br />
<br />
'''Mentor:''' David Edmundson<br />
<br />
=== Solid ===<br />
==== Project: iOS Integration ====<br />
'''Brief explanation:''' Integrate the iOS platform with the Plasma desktop using libraries like libimobiledevice and kdeconnect.<br />
<br />
'''Expected results:''' Have an iOS application that is able to talk to KDE Connect and desktop integration using libimobiledevices.<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt, Objective C<br />
<br />
'''Mentor:''' Àlex Fiestas <afiestas {+at+} kde.org><br />
<br />
'''Resources:''' libimobiledevice, kdeconnect, plasma<br />
<br />
==== Project: Make Libbluedevil Async ====<br />
'''Brief explanation:''' Extend libbluedevil to have an asynchronous api, and port bluedevil to it.<br />
<br />
'''Expected results:''' libbluedevil should have an asynchronous api, and bluedevil should be ported to them.<br />
<br />
'''Knowledge Prerequisite:''' basic Qt and DBus<br />
<br />
'''Mentor:''' Àlex Fiestas <afiestas {+at+} kde.org><br />
<br />
'''Resources:''' libbluedevil, bluedevil, afiestas<br />
<br />
==== Project: Improve sharing experience ====<br />
'''Brief explanation:''' Improve the content sharing experience in Plasma by extending and improving Samba share, implementing other ways of sharing and write new ways of discovering other people's shares.<br />
<br />
'''Expected results:''' It should be possible to discover "shares" using dolphin (possibly via a new kioslave?) and it should be possible to share a folder between two Plasma computers really fast and easy (possibly implementing an http server plus discovery via avahi).<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt, extra points for KIO experience.<br />
<br />
'''Mentor:''' Àlex Fiestas <afiestas {+at+} kde.org><br />
<br />
'''Resources:''' avahi, http, kdenetwork-fileshare<br />
<br />
=== Plasma Media Center ===<br />
KDE's Plasma Media Center (PMC) is aimed towards a unified media experience on PCs, Tablets, Netbooks, TVs and any other device that is capable of running KDE software. PMC can be used to view images, play music or watch videos. Media files can be on the local filesystem or accessed with KDE’s Desktop Search.<br />
<br />
==== Project: Integrate with Simon ====<br />
<br />
'''Brief explanation:''' Simon is an open source speech recognition program that can replace your mouse and keyboard. The system is designed to be as flexible as possible and will work with any language or dialect. This project aims at integrating it with Plasma Media Center to control it.<br />
<br />
'''Expected results:''' Using Simon, the user should at least be able to use voice to -<br />
* Control playback of media (images, music, videos)<br />
* Navigate in the media browser (next page, previous page, "goto the 3rd item")<br />
* Home Screen navigation<br />
* Ability to switch to the player, image viewer, or playlist<br />
* Play a media file in the browser (or the playlist, when its shown) using its name<br />
<br />
'''Knowledge Prerequisite:''' Basic C++, Qt and QML<br />
<br />
'''Mentor:''' Shantanu Tushar <shantanu {+at+} kde.org> and Peter Grasch <peter {+at+} grasch.net><br />
<br />
==== Project: Integrate with Plasma Next ====<br />
<br />
'''Brief explanation:''' Plasma Next is the refreshed Plasma workspace written using the new KF5, Qt5 and QtQuick2 frameworks. Plasma Next is able to switch to different modes/formfactors on-the-fly (such as desktop, netbook, tablet). We want to be able to make Plasma Next able to switch into a media center mode.<br />
<br />
'''Expected results:''' After the project is complete, the Plasma Next shell should be able to switch to a Media Center mode and offer every feature that the standalone Plasma Media Center application provides. Examples are ability to browse media, playback, playlists etc.<br />
<br />
'''Knowledge Prerequisite:''' Qt, QML is required. Understanding of Plasma Next is a huge plus<br />
<br />
'''Mentor:''' Shantanu Tushar <shantanu {+at+} kde.org><br />
<br />
'''Resources:''' Some info about Plasma Next<br />
* http://vizzzion.org/blog/2014/01/plasma-new-beginning/<br />
* http://vizzzion.org/blog/2014/02/next-means-focus-on-the-core/<br />
* http://vizzzion.org/blog/2013/11/responsible-evolution/<br />
<br />
==== Project: Integrate with Simon ====<br />
<br />
'''Brief explanation:''' Simon is an open source speech recognition program that can replace your mouse and keyboard. The system is designed to be as flexible as possible and will work with any language or dialect. This project aims at integrating it with Plasma Media Center to control it.<br />
<br />
'''Expected results:''' Using Simon, the user should at least be able to use voice to -<br />
* Control playback of media (images, music, videos)<br />
* Navigate in the media browser (next page, previous page, "goto the 3rd item")<br />
* Home Screen navigation<br />
* Ability to switch to the player, image viewer, or playlist<br />
* Play a media file in the browser (or the playlist, when its shown) using its name<br />
<br />
'''Knowledge Prerequisite:''' Basic C++, Qt and QML<br />
<br />
'''Mentor:''' Shantanu Tushar <shantanu {+at+} kde.org> and Peter Grasch <peter {+at+} grasch.net><br />
<br />
==== Project: DVB Support for TV ====<br />
<br />
'''Brief explanation:''' https://en.wikipedia.org/wiki/Kaffeine is a KDE media player which supports playing TV using DVB. Our users have ben requesting for this support in PMC as well so that it becomes possible to watch TV as well.<br />
<br />
'''Expected results:''' Once the project is completed, Plasma Media Center should be able to play streams from a TV card with DVB support. There should be feature parity with Kaffeine.<br />
<br />
'''Knowledge Prerequisite:''' Basic C++, Qt and QML. Access to DVB hardware is mandatory for testing https://en.wikipedia.org/wiki/Digital_Video_Broadcasting<br />
<br />
'''Mentor:''' Mentor wanted with DVB knowledge for the DVB bits. PMC team will mentor for Qt, QML, Plasma bits.</div>Shantanu Tusharhttps://community.kde.org/index.php?title=GSoC/2014/Ideas&diff=36614GSoC/2014/Ideas2014-02-25T06:57:22Z<p>Shantanu Tushar: /* Project: Integrate with Plasma Next */</p>
<hr />
<div>[[Category:Mentoring]]<br />
See also: [[../../|GSoc Instructions]], [[../../2013/Ideas|Last year ideas]]<br />
<br />
== Guidelines ==<br />
<br />
=== Information for Students ===<br />
<br />
These ideas were contributed by our developers and users. They are sometimes vague or incomplete. If you wish to submit a proposal based on these ideas, you may wish to contact the developers and find out more about the particular suggestion you're looking at.<br />
<br />
Being accepted as a Google Summer of Code student is quite competitive. Accepted students typically have thoroughly researched the technologies of their proposed project and have been in frequent contact with potential mentors. Simply copying and pasting an idea here will not work. On the other hand, creating a completely new idea without first consulting potential mentors is unlikely to work out.<br />
<br />
When writing your proposal or asking for help from the general KDE community don't assume people are familiar with the ideas here. KDE is really big!<br />
<br />
If there is no specific contact given you can ask questions on the general KDE development list kde-devel@kde.org. See [http://www.kde.org/mailinglists/ the KDE mailing lists page] for information on available mailing lists and how to subscribe.<br />
<br />
=== Adding a Proposal ===<br />
<br />
{{Note|Follow the template of other proposals!}}<br />
<br />
==== Project: ====<br />
<br />
'''Brief explanation:'''<br />
<br />
'''Expected results:'''<br />
<br />
'''Knowledge Prerequisite:'''<br />
<br />
'''Mentor:'''<br />
<br />
When adding an idea to this section, please try to include the following data:<br />
<br />
:*if the application is not widely known, a description of what it does and where its code lives<br />
:*a brief explanation<br />
:*the expected results<br />
:*pre-requisites for working on your project<br />
:*if applicable, links to more information or discussions<br />
:*mailing list or IRC channel for your application/library/module<br />
:*your name and email address for contact (if you're willing to be a mentor)<br />
<br />
If you are not a developer but have a good idea for a proposal, get in contact with relevant developers first.<br />
<br />
<br />
==Ideas==<br />
<br />
===Your Own Idea ===<br />
<br />
==== Project: Something that you're totally excited about ====<br />
<br />
'''Brief explanation:''' Do you have an awesome idea you want to work on with KDE but that is not among the ideas below? That's cool. We love that! But please do us a favor: Get in touch with a mentor early on and make sure your project is realistic and within the scope of KDE. That will spare you and us a lot of frustration.<br />
<br />
'''Expected results:''' Something you and KDE loves<br />
<br />
'''Knowledge Prerequisite:''' Probably C++ and Qt but depends on your project<br />
<br />
'''Mentor:''' Try to see who in KDE is interested in what you want to work on and approach them. If you are unsure you can always ask in #kde-soc on Freenode IRC.<br />
<br />
=== Amarok ===<br />
<br />
==== Project: Lyric support improvements ====<br />
<br />
'''Brief explanation:''' Amarok's support for fetching and displaying of lyrics is very limited. It just fetches from a single provider and many times no results are fetched, sometimes due to minor errors in track/album/artist name. Add some more providers of online lyrics databases. If no results are found this can be coupled with the better tagguessing feature (and even if the tags are not saved), the the lyrics providers can be searched with these guessed tags.<br />
Then, improve the lyrics display. Currently it just scrolls at a constant rate, generally that's inconsistent with the actual playback of the song. All .lrc files have timestamps, that can be followed: probably by highlighting the line playing.<br />
<br />
'''Expected results:''' Greatly increase the probability of fetching of the lyrics for any song. In the lyrics display, a highlighted line will display the current line being played.<br />
<br />
'''Knowledge Prerequisite:''' Knowledge of the Amarok code base (hence of Qt, C++). Basic knowledge of webservices.<br />
<br />
'''Mentor:''' Mark Kretschmann<br />
<br />
===digiKam===<br />
<br />
digiKam is an advanced digital photo management application for Linux, Windows, and Mac-OSX.<br />
<br />
* [http://www.digikam.org digiKam project web site]<br />
* [https://mail.kde.org/mailman/listinfo/digikam-devel Mailinglist]<br />
* [https://plus.google.com/+digikam Google+ page]<br />
* [http://webchat.freenode.net/?channels=digikam #digikam IRC channel on Freenode]<br />
<br />
==== Project: Integrate KIPI Export Plugins directly in the GUI of KIPI host applications ====<br />
<br />
'''Brief explanation:''' It would be nice to be able to encapsulate the Export/Import KIPI plugins directly in the GUI of the host application without opening a dedicated window. For the Export Plugins the place to load the plugins will be BQM and for the Import Plugins this can be in the digiKam import tool or in the main view. For this one must factorize the export/import kipi plugin interface and to group the common calls into a virtual interface, to implement tree and list view for the plugins.<br />
<br />
'''Dependencies:''' : digiKam KIPI interface, libkipi, KIPI Plugins <br />
<br />
'''Bugzilla entries:''' [https://bugs.kde.org/show_bug.cgi?id=235572 235572], [https://bugs.kde.org/show_bug.cgi?id=221704 221704] ,[https://bugs.kde.org/show_bug.cgi?id=143978 143978]<br />
<br />
'''Knowledge Prerequisite:''' C/C++, Qt/KDE, GUI<br />
<br />
'''Expected results:''' KIPI host apps that are compatible with the project will load KIPI Plugins in the BQM, the others will load the plugins as it's done right now without breaking any compatibility.<br />
<br />
'''Difficulty:''' high<br />
<br />
'''Lead Mentor:''' Gilles Caulier <caulier dot gilles at gmail dot com><br />
<br />
==== Project: Port Greystoration CImg interface to GMic ====<br />
<br />
'''Brief explanation:''' digiKam include [https://projects.kde.org/projects/extragear/graphics/digikam/repository/revisions/master/show/libs/3rdparty/cimg CImg library] to be able to use Greystoration algorithm which give nice fix to image based on Vortex theory, as [http://www.flickr.com/photos/digikam/8535414322/sizes/l/in/photostream/ Restoration tools]. Since CImg > 1.3.0, Greystoration algorithm have been moved in a new library named GMic with a completely different API. The goal of this project is to adapt digiKam Greystoration interface to GMic library.<br />
<br />
'''Dependencies:''' [https://projects.kde.org/projects/extragear/graphics/digikam/repository/revisions/master/show/libs/dimg/filters/greycstoration digiKam core], [https://projects.kde.org/projects/extragear/graphics/digikam/repository/revisions/master/changes/imageplugins/enhance/ Restauration and Inpaint editor tools], and [https://projects.kde.org/projects/extragear/graphics/digikam/repository/revisions/master/show/utilities/queuemanager/basetools/enhance Restauration tool from Batch Queue Manager]<br />
<br />
'''Knowledge Prerequisite:''' C/C++, math, Qt, <br />
<br />
'''Expected results:''' port image restoration algorithm from [http://cimg.sourceforge.net/ CImg] to [http://gmic.sourceforge.net/ GMic] API<br />
<br />
'''Difficulty:''' high<br />
<br />
'''Lead Mentor:''' Gilles Caulier <caulier dot gilles at gmail dot com><br />
<br />
==== Project: Add a quick access to Labels in dedicated tree-view ====<br />
<br />
'''Brief explanation:''' It would be nice to be able show all items from collections in icon-view which has Rating, Pick Labels, and Color Labels attributed, as it's already do with Tags. The goal is to build a tree-view with all Labels available on digiKam and process database query to show items relevant. This view must include No rating, All Rating values, No Pick Label, All Pick Label values, No Color Label, all Color Labels, which must be selected individually or grouped. This Labels tree-view must be available in KIPI album selector widget, as it's done currently for Tags, to be able to export these virtual albums with kipi-plugins. Also, in this project a way to select No Tagged items must be add to current Tags tree-view, to be homogenous with new Labels tree-view feature.<br />
<br />
'''Dependencies:''' : digiKam Database<br />
<br />
'''Bugzilla entries:''' [https://bugs.kde.org/show_bug.cgi?id=160363 160363], <br />
<br />
'''Knowledge Prerequisite:''' C/C++, Qt/KDE, GUI, Database<br />
<br />
'''Expected results:''' To have a quick acess tree-view in all relevant gui where Labels can be selected for photo workflow.<br />
<br />
'''Screenshots:''' [http://blogs.thesitedoctor.co.uk/tim/img/Windows-Photo-Gallery.JPG Microsoft Live Photo Rating tree-view], [http://images.apple.com/euro/aperture/features/images/video-audio-rating-20091020.jpg Apple Aperture Labels tree-view]<br />
<br />
'''Difficulty:''' medium<br />
<br />
'''Lead Mentor:''' Gilles Caulier <caulier dot gilles at gmail dot com><br />
<br />
===Marble===<br />
Marble is a virtual globe and world atlas — your swiss army knife for maps. Find your way and explore the world!<br />
<br />
* [http://marble.kde.org/ Marble project website]<br />
* [https://mail.kde.org/mailman/listinfo/marble-devel Mailinglist]<br />
* [http://gplus.to/Marble Google+ page]<br />
* [http://webchat.freenode.net/?channels=marble #marble IRC channel on Freenode]<br />
<br />
==== Project: Interactive Tours ====<br />
<br />
'''Brief explanation:''' A Tour is a set of related places along with supporting media (text, images, audio, video). Tours can be viewed (playback): The invididual places are visited in a defined timeline. They're useful for a wide range of tasks, like showing an interesting hike along with panorama pictures, highlighting places of interest for sightseeing or showing historic events and political changes happening over decades. The Marble library has been designed to support these use cases, but the user interface does not reveal all the features yet. This project is about changing that.<br />
<br />
'''Expected results:''' <br />
* Extend the existing Tour widget for animated tour playback<br />
* Improve the usability of the Tour widget<br />
* Support interactive elements in tour playback<br />
* Implement time support for tours for different time ranges (from eras to years to days to minutes to milliseconds)<br />
* Add support for recording tours<br />
* Enhance the screencast feature to generate videos from tours.<br />
Optional:<br />
* Extend Marble's owncloud synchronization feature for uploading tours to owncloud<br />
* Add tour viewing support to the Marble owncloud app<br />
* Implement tour viewing in the QML version of Marble<br />
* Provide tours for existing map themes to highlight features of them<br />
<br />
'''Knowledge Prerequisite:''' C++ and Qt. Would-be applicants are expected to work on junior jobs (possibly related to the project). Try to find your way into http://marble.kde.org/dashboard.php#contributors and solve as many tasks and bugfixes as possible.<br />
<br />
'''Mentor:''' Dennis Nienhüser and other Marble developers.<br />
<br />
==== Project: Marble Game ====<br />
<br />
'''Brief explanation:''' The latest introduction of a recent vector map inside Marble ("Natural Earth dataset") allows for interesting features: With recent and detailed political borders it's also possible to create a game based on Marble similar in spirit to KGeography. In terms of user-featureset the goal is to create an entertaining and educational game-application or game-plugin using Marble. Technically the goal is to extend Marble's framework to allow for this (there surely will be roadblocks). <br />
<br />
'''Expected results:''' <br />
* An application that is based on the MarbleWidget which teaches Geography in a style similar to KGeography.<br />
* OR/AND a plugin that extends Marble with a menu entry that invokes a Quiz-style educational game.<br />
* Extend Marble's framework to allow for the features required<br />
* Improve the Marble framework so that it provides a better experience for 3rd-party developers (by providing missing tutorials, documentation or even better APIs)<br />
<br />
'''Knowledge Prerequisite:''' C++ and Qt. Would-be applicants are expected to work on junior jobs (possibly related to the project). Try to find your way into http://marble.kde.org/dashboard.php#contributors and solve as many tasks and bugfixes as possible.<br />
<br />
'''Mentor:''' Torsten Rahn and other Marble developers.<br />
<br />
==== Project: Marble Editing mode: Polygons ====<br />
<br />
'''Brief explanation:''' During last GSoC a mode for editing ground overlays was added to the experimental editing Mode for Marble. During this GSoC the editing mode should be extended with polygon editing. The resulting editor should allow to create polygons and edit nodes of existing files in a way similar to inkscape. If there is enough time then the editing mode for Marble should be polished so that it can be included with the next release.<br />
<br />
'''Expected results:''' <br />
* An editing mode for polygons inside Marble. <br />
* Adding, moving and removing nodes. <br />
* Possibly merging nodes and other features that tools like inkscape provide for node interaction<br />
* Assignment of lables, outline color and fill color.<br />
* Possibly editing of "holes" inside the Polygon.<br />
<br />
'''Knowledge Prerequisite:''' C++ and Qt. Would-be applicants are expected to work on junior jobs (possibly related to the project). Try to find your way into http://marble.kde.org/dashboard.php#contributors and solve as many tasks and bugfixes as possible.<br />
<br />
'''Mentor:''' Torsten Rahn and other Marble developers.<br />
<br />
<br />
=== KDE Edu ===<br />
<br />
==== Project: Sound Visualization and Sound Effects in Artikulate ====<br />
'''Brief explanation:''' Artikulate is a language learning application that focus on improving a learner's pronunciation skills by repeating native speaker recordings, recording that try and comparing boths. By repeating these trials, a learner can continuously improve his/her language skills. There are areas for this project:<br />
# native speaker recordings are recorded (either by GStreamer or QtMultimedia), converted to an OGG file and saved. What is missing is an application of noise cleanup filters, removing of no-sound intervals, and normalization (possibly combined with a very basic sound editor)<br />
# when playing and comparing sounds, there is no visual feedback about how much the soundwaves differ: plotting the soundwaves in a reasonable format <br />
'''Goals:''' The goal is to extend the sound processing in Artikulate to<br />
# Implement simple sound filters for normalization, noise removal, removal of white noise and integrate sound postprocessing into the editor workflow<br />
# Implement plotter for soundwaves and integrate this in the training mode<br />
Yet for both it is important to research which libraries already exist and possibly could be reused. Also, research is needed about which techniques for comparing the soundwaves is appropriate. A proposal should already contain verbose information about these questions.<br />
<br />
'''Knowledge Prerequisite:''' a must is knowledge of C++ and Qt, a plus is knowledge of sound processing libraries (e.g. GStreamer) or experience in sound processing<br />
<br />
'''Mentor:''' Andreas Cord-Landwehr and/or other people from KDE Edu<br />
<br />
==== Project: Semi-Automatic Generation of Language Lessons for Parley ====<br />
<br />
'''Brief explanation:''' Parley is an advanced vocabulary trainer with features like 8 different learning modes, including flashcards, genders of nouns, conjugation of verbs and several more. A lesson for Parley is encoded in kvtml, KDE Vocabulary Training Markup Language which is an XML format for vocabulary lessons of many different types.<br />
<br />
But it is a relatively demanding task to create good lessons for Parley. You need to manually edit a list of words in several different languages, add images and/or sound clips to them all, word class, pronounciation, etc.<br />
<br />
We would like to create a semi-automatic generator for lessons using the Kexi database in the Calligra suite. The workflow will be something like this.<br />
<br />
# You use an import script to import a selected part of the word list in wiktionary.org, an online wiki dictionary, into Kexi. This will then form the basis for the work on the lessons. <br />
# You define a list of words in the so called primary language, which is the language that the lesson is supposed to teach. This list will be the words only and could be created either using the editor inside Parley or a standard text editor and then import it into Parley.<br />
# You define which secondary languages you want in your lesson. These languages are the ones that the student is already familiar with. The training session will then consist of translations from one of the secondary languages (most often the native language of the student) and the primary language. At this point you also define which other parameters you want to include in the lesson, like image, sound clip, phonetic text, explanation, etc.<br />
# You invoke the automatic lesson generator which will search for the words you have defined in the database, look up suitable translations and add the other fields that you asked for.<br />
# If necessary, patch up the newly generated lesson with missing data that wasn't present in the database or add the information to the database and redo the generation.<br />
<br />
'''Goals:''' The goal is to create software that supports the workflow above. It will at least comprise the following tasks:<br />
# Define an efficient database schema for the words and translations. Wiktionary.org has 3.6 million entries and even a subset of that can take significant amounts of storage.<br />
# Implement a script that reads from wiktionary.org and enters the data into the Kexi database using the calligradb library. There is already a script for downloading and parsing the contents of Wiktionary at [1] but you will have to adapt it to Kexi. <br />
# Implement the code that searches the database and populates the lesson with the data found.<br />
# (If time permits) Implement a more advanced lesson editor than is currently present in Parley or a stand-alone editor.<br />
<br />
'''Knowledge Prerequisite:''' Good knowledge of C++ and Qt, a plus is knowledge of of kvtml and the related C++ classes in the kde edu libraries. Also some knowledge of databases and database searches.<br />
<br />
'''Mentor:''' Jaroslaw Staniek, the maintainer of Calligra Kexi, with help from Inge Wallin<br />
<br />
[1] http://en.wiktionary.org/wiki/Help:FAQ#Downloading_Wiktionary<br />
<br />
==== Project: Kig - Geogebra Support ====<br />
[http://edu.kde.org/applications/mathematics/kig/ Kig] is an application for interactive geometry.<br />
<br />
'''Goals:''' The overall goal is to support Geogebra files in KDE Edu. Because Geogebra is both a plotting tool and a tool for interactive geometry, the stated goal is very broad. For this particular project, we are interested in supporting interactive geometry in Kig. The current progress towards this goal is in the [https://projects.kde.org/projects/kde/kdeedu/kig/repository/show?rev=geogebra geogebra] branch of Kig's repository. Since there is some progress towards that goal, the particular goal of supporting these files in Kig may or may not be smaller than a GSoC project, in which case we can move forward to implement support for these files in the many plotting tools we have in KDE Edu.<br />
<br />
'''Knowledge Prerequisite:''' By the start of GSoC you should<br />
# Be familiar with Kig as a user<br />
# Be familiar with Geogebra as a user<br />
# Be familiar with Git, you will have to work with branches<br />
# Be able to build Kig<br />
# Be familiar with Kig's filter code: Kig is a large code base, so you are not expected to know everything about it, but you should at least be familiar with how filters are created and be able to modify filters since this will be the part of the code that you will be working with.<br />
<br />
'''Mentor:''' David Narvaez (IRC: dMaggot, please [[User:DMaggot/Mentoring|read this]] before applying)<br />
<br />
==== Project: Kig - Analitza Integration (Experimental) ====<br />
[http://edu.kde.org/applications/mathematics/kig/ Kig] is an application for interactive geometry.<br />
<br />
'''Goals:''' Kig's core is full of code to deal with finding solutions to linear or quadratic equations which are the bulk of interactive geometry. While this code works, in many cases it does so by approximations and it is, in general, very convoluted. The goal of this project is to implement all of this code in terms of a [https://en.wikipedia.org/wiki/Computer_algebra_system CAS] to address both of the disadvantages mentioned before. Analitza is an "in-house" library that deals with mathematical expressions, and is thus a good candidate for a CAS provider in Kig. This project is experimental because:<br />
# Implementing everything in terms of a CAS may or may not improve code quality in terms of readability. If it doesn't (and we would only know this at the end of the project), the implementation of this project will not make it to the master branch.<br />
# Analitza may or may not be up for all of the tasks we need to do in Kig, in which case improving Analitza is an option.<br />
<br />
'''Knowledge Prerequisite:''' By the start of GSoC you should<br />
# Be familiar with Kig as a user<br />
# Be familiar with Analitza as a consumer (it is a library, so you would not be a "user")<br />
# Be able to build Kig<br />
# Be able to build Analitza<br />
# Be familiar with Kig<br />
# Be familiar with Kig's object hierarchy and the mathematics behind that<br />
<br />
'''Mentor:''' David Narvaez (IRC: dMaggot, please [[User:DMaggot/Mentoring|read this]] before applying)<br />
<br />
==== Project: Integrate Cantor into LabPlot====<br />
[http://labplot.sourceforge.net/ LabPlot] is a KDE-application for interactive graphing and analysis of scientific data.<br />
<br />
'''Brief explanation:''' The integration is twofold:<br />
<br />
# currently, for the created plots LabPlot uses either the data provided by hand in a spreadseet or by using data imported from external ascii-files. By having Cantor within LabPlot it should be possible to access the data sets created in a computer algebra session (say Maxima) provided by Cantor. Cantor's session have to be integrated into LabPlot's model-view framework and have to be put onto the same foot as all the other objects managable in LabPlot (spreadsheet, worksheets etc.).<br />
# By calling a CAS-specific command for creating a 2D-plot in Cantor, Cantor creates an external process that renders the plot and embeds the result as a pixmap. Instead of such a static pixmap, LabPlot's plots should be embeded. This would provide high degree of control of the plot appearance as provided by LabPlot.<br />
<br />
'''Mentor:''' Alexander Semke<br />
<br />
==== Project: Integrate [http://en.wikipedia.org/wiki/VTK VTK] into LabPlot, investigate [http://en.wikipedia.org/wiki/Tulip_(software) Tulip] ====<br />
[http://labplot.sourceforge.net/ LabPlot] is a KDE-application for interactive graphing and analysis of scientific data.<br />
<br />
'''Brief explanation:'''<br />
# LabPlot lacks 3D-functionality. In the old KDE3-based LabPlot qwt3D was used for this that is not an option anymore. The task consists of the integration of [http://en.wikipedia.org/wiki/VTK VTK] -libs. Also, the relevant widgets for 3D-plot editting should be created in a manner similar for all the other objects available in LabPlot now.<br />
# Investigate whether it's reasonable to use LabPlot as a frontend (or to extend it to be a frontend) to the functionality provided by [http://en.wikipedia.org/wiki/Tulip_(software) Tulip] yes, how?<br />
<br />
'''Mentor:''' Alexander Semke<br />
<br />
===Krita===<br />
We welcome students who want to work on Krita for Google Summer of Code. If you want to work on Krita, keep in mind that we would like you to stay with the project, also outside Summer of Code. Summer of Code isn't just a summer job with some mentoring added -- it's a way of becoming part of the team.<br />
<br />
If you haven't worked on Krita before, we want you to demonstrate your skill beforehand by fixing bugs or implementing some features. It's a good idea to start on that in January. Here is a list of pre-gsoc ideas:<br />
<br />
==== Project: Painting and Separation of 3D Textures====<br />
<br />
As one of it’s use cases, Krita’s vision statement includes painting textures for 3D. 3D textures are typically comprised of a number of separate black and white, RGB or RGBA images. Thus painting for textures typically requires painting on more than one single layer / channel at a time. For example painting a scratch into a metal surface may require painting black onto the bump channel, another colour on the diffuse channel, and another to the specularity channel (as well as possibly some others such as the displacement channel). All of these are affected simultaneously.<br />
<br />
Currently Krita’s painting system is only able to paint onto single layers at a time and brushes have not been designed in such a way as to allow adjusting multiple channels simultaneously as would be needed. This topic would require looking at how Krita’s current painting system could be extended to paint the necessary adjustments to the channels used in 3D rendering, show the textures created in OpenGL and then export those channels for use in 3D applications.<br />
<br />
==== Project: 3D Material Image Maps====<br />
<br />
3D materials are made up of a bunch of images called image maps. If the user could associate layers as image maps in Krita, and paint on all of them at the same time, artists could paint whole 3D materials - something currently only available in high end 3d apps like zBrush (not even Photoshop / Corel Painter). The trick is that the position of what's painted needs to match on every map/layer, but the colours vary. For example, a scratch on a human characters skin would have a red colour map, a white (=raised) bump map, a light grey (=semi-shiny) specularity map etc, all in the exact same location on the each image map. Traditional methods of trying to create each image from scratch or by manipulating the colour map are very, very slow and painful. A simple version of this could be done as follows:<br />
<br />
* Each layer has a toggle in the layers docker called "texture map" or similar. This is turned off by default. When active, the brush paints on *all* layers that currently have "texture map" active.<br />
<br />
* When picking a colour, a dropdown lets the user pick "Default" or any active texture map layer. "Default" is just the current behaviour. If the user selects a layer in the dropdown, then the selected colour will be applied to that layer when painting on *any* layer.<br />
* In the file or layer menu is an option "Export texture maps" which saves each texture map layer as an image. The layer name and extension appended automatically to the file name. For example, on a file called character.kra, the layer titled "colour" would be saved as "character-colour.jpg" (or whatever format was selected).<br />
<br />
For step 3, a simple, one click / shortcut, method is vital, as artists often have to check their material in their 3d app every few minutes, and wading through saving 10 layers individually, each with manual file naming and confirming file format settings each time is unacceptably slow. For any artist who requires this level of control, they can use Layers menu -> "Save Layer as Image" already in krita.<br />
<br />
Allowing artists to paint a single material rather than creating multiple separate image maps by hand, would make Krita formidable for painting 3D textures, and the most advanced open source application for 3D texturing.<br />
<br />
==== Project: Matte painting====<br />
<br />
One of Krita's main use cases is as a professional tool for painting textures and mattes in digital film. Mattes are primarily made of sequences of images generated by a combination of two methods, first by animatable spline based shapes, which currently exists and is being developed in blender, and then after that, by hand painting frames for detailed areas and corrections. The trouble is that no currently maintained FOSS application currently tries to provide the ability to create hand painted mattes. This project is to extend Krita for this purpose. What's needed here is the following:<br />
* The ability for Krita to load manually selected sequences of color managed images as frames to be represented as a single layer in Krita. Optionally would be the ability to display playback at reduced resolutions to increase performance and to offset the time at which sequences were inserted.<br />
* A “Timeline” docker which would display the current frame displayed, and allow clicking and dragging to different points in time, updating the image displayed in the canvas to match. Optional would be the ability to zoom and scroll the timeline, mark modified frames on the timeline, playback the image sequence, forwards and backwards as video (most likely only in the openGL mode of Krita or with an external tool like ffplay) and display times in a range of formate EG SMTP, PAL, NTSC, Secam etc.<br />
* Updating the paint and transparency layer types, so that when Krita is using a frame sequence and one of these layer types is created, they also represent a series of frames rather than just a single image. This could possibly be a toggle switch on layers, much as visibility, alpha lock etc. are now.<br />
* The ability to save layers that are displaying frame sequences out as frame sequences also, giving them user definable names (eg where to insert the frame number, how many digits to pad).<br />
* Keyboard shortcuts to move forwards and backwards 1/10/100 frames, to jump to the start and end of the timeline and forward / backwards play if video playback is supported.<br />
<br />
==== Project: Cartoon Text Balloon System====<br />
<br />
Krita already has two text tools, but neither is suited for creating cartoon balloons. The system should allow the creation of vector-based balloons in different styles. The balloons can contain styled text. The text and balloons should be translatable and a system to select the current language should be created. It should be possible to save the balloon text to a separate file that can be used as input for translations. Finally, care must be taken to support right-left languages.<br />
<br />
==== Project: Substrate simulation ====<br />
<br />
'''Brief explanation''': Substrates for painting and drawing have a direct influence on the result of the art. The goal of this project is bringing this richness of these effects to Krita. There is an existing body of literature and academic projects on this topic, with Bill Baxter and Tom van Laerhoven being among the best known researchers. For the right effect, we need to take care of the 3d structure of the substrate, it’s effect on paint tools -- smoothness, absorbency and other parameters. An interesting option is to make it possible to apply different substrates to existing paintings.<br />
Expected results: an optional substrate simulation that works with all current Krita tools<br />
<br />
==== Project: Real Paint Emulation ====<br />
<br />
We already did some research on the emulation of real-world paint and we do already have some essential pieces of it: Hairy Brush and Bumpmap filter. Now we need to bring this all together and allow a painter to use it easily, so that he could paint images like that: TODO. This project would involve creation of a special type of layer and a new colorspace, so the student should already be familiar with our layer stack and pigment code.<br />
<br />
==== Research Project: layer stack optimizations ====<br />
<br />
Right now when one layer got changed our merger should walk through all the layers of the current group and compose all of them into projection one by one. But this doesn't take into account that COMPOSITE_OVER (which is the most popular composition mode) has an associativity property, which means we can merge all the layers below and all the layers above dirty one into two groups, and calculate a group of any size with only two composition operations, which would give huge speed advantages.<br />
<br />
Unoptimized group:<br />
<br />
* layer 6<br />
* layer 5<br />
* layer 4<br />
* layer 3 <-- active layer (becomes dirty quite often)<br />
* layer 2<br />
* layer 1<br />
<br />
Optimized group:<br />
<br />
* <flattened 4-6><br />
* layer 3 <-- active layer (becomes dirty quite often)<br />
* <flattened 1-2><br />
<br />
After this project is done, we can start implementing layer composition on the GPU using openGL.<br />
<br />
==== Project: Improved Animation Brush System ====<br />
This should result in animation brushes being more readily available and adjustable. The current way of doing this is not as userfriendly as it could be.<br />
<br />
*Dedicated "Animation Brush GROUP"-> everything in group is a frame of the animation. (for use in current file,instead of in another instance of krita)<br />
*Convert group to animation group ->Normal group becomes animation brush reference.<br />
*Save as animation brush PRESET<br />
*options to set animation brush continuity to custom, random, incremental, pressure,angular,loop...<br />
*animation brush presets (in settings) need a timeslider to flip through the available frames<br />
<br />
https://bugs.kde.org/show_bug.cgi?id=322159<br />
<br />
==== Project: seamless textures by using UV layout as self-wrapping paint mask====<br />
This is a tool that should help in creating seamless (or as close as possible) textures for organic models. It will help in painting creases and other details across seams.<br />
http://www.sintel.org/wp-content/uploads/2010/01/face_uv_export.png<br />
<br />
*Convert intersections on uvlayout to seam transfer points.<br />
*use those points to transfer painted strokes to connected points on other side (set by user) <br />
*create userfriendly way to add,manage those seam transfer points. (multiple should be active at once)<br />
<br />
https://bugs.kde.org/show_bug.cgi?id=324072<br />
<br />
ALTERNATIVE<br />
*Similar to previous idea,but with movable curves/grid with adjustable seam transfer points in stead of converting a whole UV layout automaticly<br />
<br />
https://bugs.kde.org/show_bug.cgi?id=321547<br />
<br />
More ideas for projects can be found here:<br />
https://bugs.kde.org/buglist.cgi?cmdtype=runnamed&namedcmd=Wishlist%20count&list_id=884686<br />
<br />
=== Kexi ===<br />
Kexi is a visual database creator. It can be used for designing database applications, inserting and editing data, performing queries, and processing data.<br />
<br />
More info: [[Kexi|Developers' wiki]], [http://www.calligra.org/kexi web site for users], [https://mail.kde.org/mailman/listinfo/calligra-devel mailing list], IRC channel: #kexi and #calligra on Freenode.<br />
<br />
==== Project: Add support for importing tables from LibreOffice Base to Kexi ====<br />
<br />
'''Brief explanation:''' Add support for importing (Kexi calls it data/design migration) tables from LibreOffice (or OpenOffice) Base (ODB format) to Kexi. This task involves research on ODB format (it's relatively openly defined). Qt/C++ shall be used for the task, not any Java engine (HSQL db). This could be introduction to later development of complete database import from ODB to a Kexi database.<br />
<br />
'''Expected results:''' In the GUI the feature shall be put in the same place as the import from MDB: External Data -> Import Tables -> Table Importing Wizard. Then user would see .odb support in the open file dialog, just like it has access to importing CSV or MDB.<br />
<br />
'''Knowledge Prerequisite:''' C++, some Qt, some databases, some XML, software architecture<br />
<br />
'''Mentor:''' [[User:Jstaniek|Jarosław Staniek]] (Kexi maintainer)<br />
<br />
'''First steps''':<br />
:*See [http://wiki.openoffice.org/wiki/FAQ_(Base)] for a start.<br />
:*Sample .odb databases are available for [http://www.floppybunny.org/robin/web/virtualclassroom/chap8/libreoffice_base.html this] tutorial.<br />
:*Studying kexi/migration/importtablewizard.cpp which is a GUI taking an instance of implementation of a migrate driver derived from KexiMigration::KexiMigrate (in your case - the ODB driver). It's the m_migrateDriver attribute.<br />
:*Implementing plugin (needed methods of the driver) in migration/odb/ by looking how it was performed for other cases, e.g. for mysql (see kexi/migration/mysql/ dir) or other cases such as pqxx, txt, xbase, sybase or mdb<br />
:*In the actual C++ implementation, KoOdfReadStore class from calligra libs can be used to read contents of the .odb.<br />
<br />
=== Calligra Plugins ===<br />
<br />
Calligra is an office suite with lots of different applications with an user interface that is easy to use, highly customizable and extensible.<br />
<br />
More info: [http://www.calligra.org web site for users], [https://mail.kde.org/mailman/listinfo/calligra-devel mailing list], IRC channel: #calligra on Freenode.<br />
<br />
==== Project: Variable thickness lines ====<br />
<br />
'''Brief explanation:''' One of the most fundamental basics of drawing is varying the width of your lines to show shape, form and perspective. Almost every line tapers at either end, and often gets thicker and thinner in different places as needed. For purely technical and histrorical reasons though, every vector program (Illustrator, Inkscape, Karbon etc) make curves all one hard width. <br />
This proposal is to create a variable width path shape / tool, much like the path tool, would allow drawing curves, but where each node could have its width set so that the line width changed smoothly from node to node. <br />
As a plugin for the Calligra suite, this would clearly benefit apps as Karbon and also Krita.<br />
<br />
'''Expected results:''' variable width path tool is able to change the width of any path node to an arbitary percentage (say 155%) of the stroke width. See http://bugsfiles.kde.org/attachment.cgi?id=56995 for mockup. The shape needs to be able to save and load in svg/odf.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt, SVG?<br />
<br />
'''Mentor:''' Thorsten Zachmann < zachmann @ kde dot org ><br />
<br />
=== Keyboard Layouts ===<br />
<br />
Keyboard layouts in KDE allow user to use multiple keyboard layouts and switch between them. It consists of keyboard configuration module (in System Settings), keyboard layout widget/applet, and keyboard layout daemon.<br />
<br />
==== Project: Integrating Input Methods with keyboard layout configuration ====<br />
<br />
'''Brief explanation:''' Input method and keyboard layout configuration are serving the same purpose - to allow users to type text in non-default language. Currently KDE has integrated system to configure keyboard layouts but IM need to be configured somewhere else. Also when IM is configured it takes over some functions of keyboard layout configuration. So it would be nice if we could have IM and keyboard layout configuration in one place.<br />
It seems that IBus has already gained community acceptance so this will be the target for integration into KDE keyboard module.<br />
<br />
'''Expected results:''' Keyboard configuration module in System settings will include IM configuration and it will be integrated with existing keyboard layout options.<br />
<br />
'''Knowledge Prerequisite:''' good knowledge of C++, development experience with Qt and KDE, understanding of Input Methods (IBus)<br />
<br />
'''Mentor:''' Andriy Rysin <arysin@gmail.com><br />
<br />
=== KDevelop ===<br />
<br />
==== Project: Clang Integration ====<br />
<br />
'''Brief explanation:''' Finish the kdev-clang plugin to make it a usable replacement for the existing C++ plugin.<br />
<br />
'''Expected results:''' All advanced features of the KDevelop C++ are ported to the kdev-clang plugin. This includes code completion helpers, as well as basic refactoring and assistant integration.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt. Knowledge about Clang is helpful<br />
<br />
'''Mentor:''' Milian Wolff<br />
<br />
==== Project: Checker Framework ====<br />
<br />
'''Brief explanation:''' A generic framework should be created which provides the foundation for other plugins to report errors. <br />
<br />
'''Expected results:''' Right now we have the problems toolview but it is tightly coupled to the DUChain. This should be changed to use a separate item repository which stores the problems for a given path. The data stored would be: Path and range of where the issue is found, a short error message and optionally a long description. Furthermore, plugins might want to store additional info from which the problem could be fixed (compare to the 'add include path' or similar wizards we have already in the language framework).<br />
<br />
This framework should then be used to integrate various tools.<br />
<br />
First of all the existing language plugins should show the problems they find there.<br />
The existing playground plugins for krazy and cppcheck integration should reuse that framework<br />
any other linters could be integrated, such as jslint, pylint etc. pp.<br />
runtime checkers could be integrated, such as valgrind's memcheck, ptrcheck, helgrind, drd, ...<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt. Knowledge of linters such as Valgrind etc. is helpful.<br />
<br />
'''Mentor:''' Milian Wolff<br />
<br />
==== Project: SVN Plugin Rewrite ====<br />
<br />
'''Brief explanation:''' Rewrite the SVN plugin to use the C-API directly.<br />
<br />
'''Expected results:''' The existing SVN plugin uses an outdated kdevsvncpp checkout internally which causes troubles, warnings and licensing issues. Port the plugin to either the C-API of svn or alternatively try to reuse code from current kdevsvn. The result should be a tested, working plugin for SVN integration without licensing issues nor compile time warnings about usage of deprecated API.<br />
<br />
'''Knowledge Prerequisite:''' C, C++, Qt, SVN<br />
<br />
'''Mentor:''' Milian Wolff<br />
<br />
=== KDE PIM ===<br />
<br />
The KDE PIM community work on a set of libraries and applications for Personal Information Management, including email, calendaring, contacts, and feed aggregation.<br />
<br />
==== Project: OpenHolidays ====<br />
<br />
'''Brief explanation:''' The KHolidays library provides KDE applications with information on public holidays around the world, however the file format is very hard to use and maintain and the library features are very limited and restricted to Qt users. The goal of the OpenHolidays project is to develop a new open standard and data repository that can be used by any project that needs the data. See http://community.kde.org/KDE_PIM/KHolidays for more details.<br />
<br />
'''Expected results:''' Define the new JSON file format and port the existing data files to the new format. Develop a shared Qt-only library to parse the holiday files and provide access to them with a iCal style event-based api. Implement an Akonadi resource to access the data. Extended goals: Develop a JavaScript library to use the files. Develop a web site and web service at openholidays.org to provide online access to the data files.<br />
<br />
'''Knowledge Prerequisite:''' C++ and Qt for core goals, JavaScript and web services for extended goals.<br />
<br />
'''Mentor:''' John Layt and other KDE PIM community members.<br />
<br />
==== Project: Enhanced Searching in KMail ====<br />
<br />
'''Brief explanation:''' KMail is the defacto email client in KDE. It currently has a complex search dialog which allows the users to configure many different parts of the search. While it is very powerful, it is not very usable. A better search dialog is required which allows the user to modify the initial search and filter the data appropriately. A good example of this would be the Thunderbird search dialog - https://support.mozillamessaging.com/media/uploads/gallery/images/2011-03-14-10-05-42-56151b.jpg<br />
<br />
'''Expected results:''' Implementing the new search dialog and updating the backend search code to include whatever new features are required. Implementing this search dialog will require messing around with Akonadi, Baloo and KPeople.<br />
<br />
'''Knowledge Prerequisite:''' C++ and Qt. A basic understanding of Information Retrieval would be nice.<br />
<br />
'''Mentor:''' Vishesh Handa and other KDE PIM community members.<br />
<br />
==== Project: Active Mail ====<br />
'''Brief explanation:''' Active Mail is a QtQuick based mail application, a touch input friendly version of KMail so to speak. Currently it still depends on QtWidget based user interfaces for certain tasks which will have to be replaced before Active Mail can live up to its promise. Such missing pieces are the email composer and the email viewer. <br />
<br />
'''Expected results:''' Define and implement a general QtQuick API for composing emails. Rework the Active Mail composer UI/UX with the help of our usability expert and make it shine.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt, QtQuick<br />
<br />
'''Possible Mentors:''' Thomas Pfeiffer, Michael Bohlender, Kevin Krammer<br />
<br />
==== Project: QtQuick ToDo API / Plasmoid====<br />
<br />
'''Brief explanation:''' KDE PIM wants to make it's data accessible for applications which use QML to declare their user interfaces, e.g. applications using QtQuick. For that they need data handling objects that are accessible through QML, e.g. item models that have a mapping of string based role names to enum value based roles in C++, etc.<br />
<br />
'''Expected results:''' Define and implement a general QML API for accessing and creating Akonadis ToDo data. Write / Port a ToDo Plasmoid for Plasma Desktop or Plasma Active to show off the new API. Bonus: Port Kontact Touch Task to the new API instead of, or in addition to the Plasmoid.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt, QtQuick<br />
<br />
'''Possible Mentors:''' Kevin Krammer, Michael Bohlender and other KDE PIM community members<br />
<br />
====Project: KPeople / Kontact Touch People====<br />
<br />
'''Brief explanation:''' KPeople is a KDE framework for aggregating contact information of people from various data sources, e.g. the user's addressbook and instant messaging programs. For the future KDE would like this to be the main source of data for its address book application.<br />
<br />
'''Expected results:''' Define and implement a QML API for accessing kPeoples features. Create a pretty QtQuick example App/Plasmoid to show off and prove the API. Bonus: Bonus: Port Kontact Touch Addressbook to the new API instead of, or in addition to the Example.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt, QtQuick<br />
<br />
'''Possible Mentors:''' Martin Klapetek, Thomas Pfeiffer and other KDE PIM community members<br />
<br />
==== Project: Akonadi Commandline/Shellscripting Interface ====<br />
<br />
'''Brief explanation:''' Akonadi is a system that enables uniform access to various data formats across a wide range of data sources. Its main clients are graphics end user applications such as KMail. However, in some cases it is advantageous if data manipulation can be automated.<br />
Power users or system administrators often employ the multitudes of Unix/Linux commandline tools to achieve such automation tasks. The idea is to provide a tool or set of tools that allow Akonadi operations to be used in such scripts.<br />
<br />
'''Expected results:''' A non-GUI program able to perform useful tasks on Akonadi provided data, like creating folders, adding/deleting/copying/moving data such as contacts or emails, etc.<br />
<br />
'''Knowledge Prerequisite:''' C++, Shell scripting<br />
<br />
'''Mentor:''' Jonathan Marten, Kevin Krammer and other KDE PIM community members<br />
<br />
'''Resources:''' An early prototype can be found here https://projects.kde.org/projects/playground/pim/akonadiclient and there are two, non-Akonadi, clients which are part of KDE PIM: kabbclient (contacts), konsolecalendar (calendar)<br />
Contact the kde-pim mailinglist for discussions: https://mail.kde.org/mailman/listinfo/kde-pim<br />
<br />
<br />
=== Simon ===<br />
Simon is a speech recognition suite.<br />
<br />
[http://simon.kde.org Website] - [https://mail.kde.org/mailman/listinfo/kde-speech Mailing list] - IRC channel: #kde-speech on Freenode.<br />
<br />
==== Project: Streamline handling of various resources ====<br />
<br />
'''Brief explanation:''' Simon uses a multitude of different components: Scenarios, Base models, Shadow vocabulary, Language profiles, etc.<br />
<br />
While many of these components can be downloaded from within Simon, some can't and even for those that are better integrated, end-users still have to read additional documentation to know which components work together and which don't.<br />
<br />
The aim of this project is to bring the handling of these resources under a uniform and user-friendly interface.<br />
Specifically, the interface should resolve conflicts automatically and deduce an optimal default setup by itself (e.g. based on the system language and installed programs).<br />
<br />
'''Expected results:''' Much more user friendly setup.<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt<br />
<br />
'''Mentor:''' Peter Grasch <peter {+at+} grasch.net><br />
<br />
'''Resources:''' Some work (mostly brainstorming and UI design) was already conducted during Season of KDE 2013. Please contact me for details. This does not mean that this project is already assigned!<br />
<br />
=== KDE Telepathy===<br />
<br />
==== Project: Conference Video Call Support ====<br />
<br />
'''Brief explanation:''' Our current IM client can handle a 1-1 video call reasonably well. It currently does not<br />
support conference calls (>2 people). Our backend Telepathy should support this, but we do not make use of it in our client. This project will involve<br />
* some UI design<br />
* some low level GStreamer work<br />
* fixing parts of the Telepathy stack.<br />
<br />
Current code is inside the repository ktp-call-ui.<br />
<br />
'''Expected results:'''<br />
Working multi conference video calls.<br />
<br />
'''Knowledge Prerequisite:'''<br />
* C++, Qt<br />
* Ideally; QML, GStreamer and Telepathy<br />
<br />
'''Mentor:''' David Edmundson and Diane Trout<br />
<br />
==== Project: Telegram Network Support ====<br />
<br />
'''Brief explanation:''' Telegram is an upcoming network that aims to replace WhatsApp. Unlike whatsapp it has an open protocol (https://telegram.org/) and is gaining popularity.<br />
<br />
We want support in our IM client. This should be done by creating a connection manager using TelepathyQt service bindings. <br />
<br />
When this is complete, not only will we get Telegram support, but due to the distributed nature of Telepathy it will also work for Jolla, Ubuntu Phone and Empathy.<br />
<br />
'''Expected results:'''<br />
Working single and group chats using KDE Telepathy over the Telegram network<br />
<br />
'''Knowledge Prerequisite:'''<br />
C++, Qt, Reading Protocol Documentation<br />
<br />
'''Mentor:''' David Edmundson<br />
<br />
=== Solid ===<br />
==== Project: iOS Integration ====<br />
'''Brief explanation:''' Integrate the iOS platform with the Plasma desktop using libraries like libimobiledevice and kdeconnect.<br />
<br />
'''Expected results:''' Have an iOS application that is able to talk to KDE Connect and desktop integration using libimobiledevices.<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt, Objective C<br />
<br />
'''Mentor:''' Àlex Fiestas <afiestas {+at+} kde.org><br />
<br />
'''Resources:''' libimobiledevice, kdeconnect, plasma<br />
<br />
==== Project: Make Libbluedevil Async ====<br />
'''Brief explanation:''' Extend libbluedevil to have an asynchronous api, and port bluedevil to it.<br />
<br />
'''Expected results:''' libbluedevil should have an asynchronous api, and bluedevil should be ported to them.<br />
<br />
'''Knowledge Prerequisite:''' basic Qt and DBus<br />
<br />
'''Mentor:''' Àlex Fiestas <afiestas {+at+} kde.org><br />
<br />
'''Resources:''' libbluedevil, bluedevil, afiestas<br />
<br />
==== Project: Improve sharing experience ====<br />
'''Brief explanation:''' Improve the content sharing experience in Plasma by extending and improving Samba share, implementing other ways of sharing and write new ways of discovering other people's shares.<br />
<br />
'''Expected results:''' It should be possible to discover "shares" using dolphin (possibly via a new kioslave?) and it should be possible to share a folder between two Plasma computers really fast and easy (possibly implementing an http server plus discovery via avahi).<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt, extra points for KIO experience.<br />
<br />
'''Mentor:''' Àlex Fiestas <afiestas {+at+} kde.org><br />
<br />
'''Resources:''' avahi, http, kdenetwork-fileshare<br />
<br />
=== Plasma Media Center ===<br />
KDE's Plasma Media Center (PMC) is aimed towards a unified media experience on PCs, Tablets, Netbooks, TVs and any other device that is capable of running KDE software. PMC can be used to view images, play music or watch videos. Media files can be on the local filesystem or accessed with KDE’s Desktop Search.<br />
<br />
==== Project: Integrate with Simon ====<br />
<br />
'''Brief explanation:''' Simon is an open source speech recognition program that can replace your mouse and keyboard. The system is designed to be as flexible as possible and will work with any language or dialect. This project aims at integrating it with Plasma Media Center to control it.<br />
<br />
'''Expected results:''' Using Simon, the user should at least be able to use voice to -<br />
* Control playback of media (images, music, videos)<br />
* Navigate in the media browser (next page, previous page, "goto the 3rd item")<br />
* Home Screen navigation<br />
* Ability to switch to the player, image viewer, or playlist<br />
* Play a media file in the browser (or the playlist, when its shown) using its name<br />
<br />
'''Knowledge Prerequisite:''' Basic C++, Qt and QML<br />
<br />
'''Mentor:''' Shantanu Tushar <shantanu {+at+} kde.org> and Peter Grasch <peter {+at+} grasch.net><br />
<br />
==== Project: Integrate with Plasma Next ====<br />
<br />
'''Brief explanation:''' Plasma Next is the refreshed Plasma workspace written using the new KF5, Qt5 and QtQuick2 frameworks. Plasma Next is able to switch to different modes/formfactors on-the-fly (such as desktop, netbook, tablet). We want to be able to make Plasma Next able to switch into a media center mode.<br />
<br />
'''Expected results:''' After the project is complete, the Plasma Next shell should be able to switch to a Media Center mode and offer every feature that the standalone Plasma Media Center application provides. Examples are ability to browse media, playback, playlists etc.<br />
<br />
'''Knowledge Prerequisite:''' Qt, QML is required. Understanding of Plasma Next is a huge plus<br />
<br />
'''Mentor:''' Shantanu Tushar <shantanu {+at+} kde.org><br />
<br />
'''Resources:''' Some info about Plasma Next<br />
* http://vizzzion.org/blog/2014/01/plasma-new-beginning/<br />
* http://vizzzion.org/blog/2014/02/next-means-focus-on-the-core/<br />
* http://vizzzion.org/blog/2013/11/responsible-evolution/</div>Shantanu Tusharhttps://community.kde.org/index.php?title=GSoC/2014/Ideas&diff=36613GSoC/2014/Ideas2014-02-25T06:48:04Z<p>Shantanu Tushar: /* Project: Integrate with Plasma Next */</p>
<hr />
<div>[[Category:Mentoring]]<br />
See also: [[../../|GSoc Instructions]], [[../../2013/Ideas|Last year ideas]]<br />
<br />
== Guidelines ==<br />
<br />
=== Information for Students ===<br />
<br />
These ideas were contributed by our developers and users. They are sometimes vague or incomplete. If you wish to submit a proposal based on these ideas, you may wish to contact the developers and find out more about the particular suggestion you're looking at.<br />
<br />
Being accepted as a Google Summer of Code student is quite competitive. Accepted students typically have thoroughly researched the technologies of their proposed project and have been in frequent contact with potential mentors. Simply copying and pasting an idea here will not work. On the other hand, creating a completely new idea without first consulting potential mentors is unlikely to work out.<br />
<br />
When writing your proposal or asking for help from the general KDE community don't assume people are familiar with the ideas here. KDE is really big!<br />
<br />
If there is no specific contact given you can ask questions on the general KDE development list kde-devel@kde.org. See [http://www.kde.org/mailinglists/ the KDE mailing lists page] for information on available mailing lists and how to subscribe.<br />
<br />
=== Adding a Proposal ===<br />
<br />
{{Note|Follow the template of other proposals!}}<br />
<br />
==== Project: ====<br />
<br />
'''Brief explanation:'''<br />
<br />
'''Expected results:'''<br />
<br />
'''Knowledge Prerequisite:'''<br />
<br />
'''Mentor:'''<br />
<br />
When adding an idea to this section, please try to include the following data:<br />
<br />
:*if the application is not widely known, a description of what it does and where its code lives<br />
:*a brief explanation<br />
:*the expected results<br />
:*pre-requisites for working on your project<br />
:*if applicable, links to more information or discussions<br />
:*mailing list or IRC channel for your application/library/module<br />
:*your name and email address for contact (if you're willing to be a mentor)<br />
<br />
If you are not a developer but have a good idea for a proposal, get in contact with relevant developers first.<br />
<br />
<br />
==Ideas==<br />
<br />
===Your Own Idea ===<br />
<br />
==== Project: Something that you're totally excited about ====<br />
<br />
'''Brief explanation:''' Do you have an awesome idea you want to work on with KDE but that is not among the ideas below? That's cool. We love that! But please do us a favor: Get in touch with a mentor early on and make sure your project is realistic and within the scope of KDE. That will spare you and us a lot of frustration.<br />
<br />
'''Expected results:''' Something you and KDE loves<br />
<br />
'''Knowledge Prerequisite:''' Probably C++ and Qt but depends on your project<br />
<br />
'''Mentor:''' Try to see who in KDE is interested in what you want to work on and approach them. If you are unsure you can always ask in #kde-soc on Freenode IRC.<br />
<br />
=== Amarok ===<br />
<br />
==== Project: Lyric support improvements ====<br />
<br />
'''Brief explanation:''' Amarok's support for fetching and displaying of lyrics is very limited. It just fetches from a single provider and many times no results are fetched, sometimes due to minor errors in track/album/artist name. Add some more providers of online lyrics databases. If no results are found this can be coupled with the better tagguessing feature (and even if the tags are not saved), the the lyrics providers can be searched with these guessed tags.<br />
Then, improve the lyrics display. Currently it just scrolls at a constant rate, generally that's inconsistent with the actual playback of the song. All .lrc files have timestamps, that can be followed: probably by highlighting the line playing.<br />
<br />
'''Expected results:''' Greatly increase the probability of fetching of the lyrics for any song. In the lyrics display, a highlighted line will display the current line being played.<br />
<br />
'''Knowledge Prerequisite:''' Knowledge of the Amarok code base (hence of Qt, C++). Basic knowledge of webservices.<br />
<br />
'''Mentor:''' Mark Kretschmann<br />
<br />
===digiKam===<br />
<br />
digiKam is an advanced digital photo management application for Linux, Windows, and Mac-OSX.<br />
<br />
* [http://www.digikam.org digiKam project web site]<br />
* [https://mail.kde.org/mailman/listinfo/digikam-devel Mailinglist]<br />
* [https://plus.google.com/+digikam Google+ page]<br />
* [http://webchat.freenode.net/?channels=digikam #digikam IRC channel on Freenode]<br />
<br />
==== Project: Integrate KIPI Export Plugins directly in the GUI of KIPI host applications ====<br />
<br />
'''Brief explanation:''' It would be nice to be able to encapsulate the Export/Import KIPI plugins directly in the GUI of the host application without opening a dedicated window. For the Export Plugins the place to load the plugins will be BQM and for the Import Plugins this can be in the digiKam import tool or in the main view. For this one must factorize the export/import kipi plugin interface and to group the common calls into a virtual interface, to implement tree and list view for the plugins.<br />
<br />
'''Dependencies:''' : digiKam KIPI interface, libkipi, KIPI Plugins <br />
<br />
'''Bugzilla entries:''' [https://bugs.kde.org/show_bug.cgi?id=235572 235572], [https://bugs.kde.org/show_bug.cgi?id=221704 221704] ,[https://bugs.kde.org/show_bug.cgi?id=143978 143978]<br />
<br />
'''Knowledge Prerequisite:''' C/C++, Qt/KDE, GUI<br />
<br />
'''Expected results:''' KIPI host apps that are compatible with the project will load KIPI Plugins in the BQM, the others will load the plugins as it's done right now without breaking any compatibility.<br />
<br />
'''Difficulty:''' high<br />
<br />
'''Lead Mentor:''' Gilles Caulier <caulier dot gilles at gmail dot com><br />
<br />
==== Project: Port Greystoration CImg interface to GMic ====<br />
<br />
'''Brief explanation:''' digiKam include [https://projects.kde.org/projects/extragear/graphics/digikam/repository/revisions/master/show/libs/3rdparty/cimg CImg library] to be able to use Greystoration algorithm which give nice fix to image based on Vortex theory, as [http://www.flickr.com/photos/digikam/8535414322/sizes/l/in/photostream/ Restoration tools]. Since CImg > 1.3.0, Greystoration algorithm have been moved in a new library named GMic with a completely different API. The goal of this project is to adapt digiKam Greystoration interface to GMic library.<br />
<br />
'''Dependencies:''' [https://projects.kde.org/projects/extragear/graphics/digikam/repository/revisions/master/show/libs/dimg/filters/greycstoration digiKam core], [https://projects.kde.org/projects/extragear/graphics/digikam/repository/revisions/master/changes/imageplugins/enhance/ Restauration and Inpaint editor tools], and [https://projects.kde.org/projects/extragear/graphics/digikam/repository/revisions/master/show/utilities/queuemanager/basetools/enhance Restauration tool from Batch Queue Manager]<br />
<br />
'''Knowledge Prerequisite:''' C/C++, math, Qt, <br />
<br />
'''Expected results:''' port image restoration algorithm from [http://cimg.sourceforge.net/ CImg] to [http://gmic.sourceforge.net/ GMic] API<br />
<br />
'''Difficulty:''' high<br />
<br />
'''Lead Mentor:''' Gilles Caulier <caulier dot gilles at gmail dot com><br />
<br />
==== Project: Add a quick access to Labels in dedicated tree-view ====<br />
<br />
'''Brief explanation:''' It would be nice to be able show all items from collections in icon-view which has Rating, Pick Labels, and Color Labels attributed, as it's already do with Tags. The goal is to build a tree-view with all Labels available on digiKam and process database query to show items relevant. This view must include No rating, All Rating values, No Pick Label, All Pick Label values, No Color Label, all Color Labels, which must be selected individually or grouped. This Labels tree-view must be available in KIPI album selector widget, as it's done currently for Tags, to be able to export these virtual albums with kipi-plugins. Also, in this project a way to select No Tagged items must be add to current Tags tree-view, to be homogenous with new Labels tree-view feature.<br />
<br />
'''Dependencies:''' : digiKam Database<br />
<br />
'''Bugzilla entries:''' [https://bugs.kde.org/show_bug.cgi?id=160363 160363], <br />
<br />
'''Knowledge Prerequisite:''' C/C++, Qt/KDE, GUI, Database<br />
<br />
'''Expected results:''' To have a quick acess tree-view in all relevant gui where Labels can be selected for photo workflow.<br />
<br />
'''Screenshots:''' [http://blogs.thesitedoctor.co.uk/tim/img/Windows-Photo-Gallery.JPG Microsoft Live Photo Rating tree-view], [http://images.apple.com/euro/aperture/features/images/video-audio-rating-20091020.jpg Apple Aperture Labels tree-view]<br />
<br />
'''Difficulty:''' medium<br />
<br />
'''Lead Mentor:''' Gilles Caulier <caulier dot gilles at gmail dot com><br />
<br />
===Marble===<br />
Marble is a virtual globe and world atlas — your swiss army knife for maps. Find your way and explore the world!<br />
<br />
* [http://marble.kde.org/ Marble project website]<br />
* [https://mail.kde.org/mailman/listinfo/marble-devel Mailinglist]<br />
* [http://gplus.to/Marble Google+ page]<br />
* [http://webchat.freenode.net/?channels=marble #marble IRC channel on Freenode]<br />
<br />
==== Project: Interactive Tours ====<br />
<br />
'''Brief explanation:''' A Tour is a set of related places along with supporting media (text, images, audio, video). Tours can be viewed (playback): The invididual places are visited in a defined timeline. They're useful for a wide range of tasks, like showing an interesting hike along with panorama pictures, highlighting places of interest for sightseeing or showing historic events and political changes happening over decades. The Marble library has been designed to support these use cases, but the user interface does not reveal all the features yet. This project is about changing that.<br />
<br />
'''Expected results:''' <br />
* Extend the existing Tour widget for animated tour playback<br />
* Improve the usability of the Tour widget<br />
* Support interactive elements in tour playback<br />
* Implement time support for tours for different time ranges (from eras to years to days to minutes to milliseconds)<br />
* Add support for recording tours<br />
* Enhance the screencast feature to generate videos from tours.<br />
Optional:<br />
* Extend Marble's owncloud synchronization feature for uploading tours to owncloud<br />
* Add tour viewing support to the Marble owncloud app<br />
* Implement tour viewing in the QML version of Marble<br />
* Provide tours for existing map themes to highlight features of them<br />
<br />
'''Knowledge Prerequisite:''' C++ and Qt. Would-be applicants are expected to work on junior jobs (possibly related to the project). Try to find your way into http://marble.kde.org/dashboard.php#contributors and solve as many tasks and bugfixes as possible.<br />
<br />
'''Mentor:''' Dennis Nienhüser and other Marble developers.<br />
<br />
==== Project: Marble Game ====<br />
<br />
'''Brief explanation:''' The latest introduction of a recent vector map inside Marble ("Natural Earth dataset") allows for interesting features: With recent and detailed political borders it's also possible to create a game based on Marble similar in spirit to KGeography. In terms of user-featureset the goal is to create an entertaining and educational game-application or game-plugin using Marble. Technically the goal is to extend Marble's framework to allow for this (there surely will be roadblocks). <br />
<br />
'''Expected results:''' <br />
* An application that is based on the MarbleWidget which teaches Geography in a style similar to KGeography.<br />
* OR/AND a plugin that extends Marble with a menu entry that invokes a Quiz-style educational game.<br />
* Extend Marble's framework to allow for the features required<br />
* Improve the Marble framework so that it provides a better experience for 3rd-party developers (by providing missing tutorials, documentation or even better APIs)<br />
<br />
'''Knowledge Prerequisite:''' C++ and Qt. Would-be applicants are expected to work on junior jobs (possibly related to the project). Try to find your way into http://marble.kde.org/dashboard.php#contributors and solve as many tasks and bugfixes as possible.<br />
<br />
'''Mentor:''' Torsten Rahn and other Marble developers.<br />
<br />
==== Project: Marble Editing mode: Polygons ====<br />
<br />
'''Brief explanation:''' During last GSoC a mode for editing ground overlays was added to the experimental editing Mode for Marble. During this GSoC the editing mode should be extended with polygon editing. The resulting editor should allow to create polygons and edit nodes of existing files in a way similar to inkscape. If there is enough time then the editing mode for Marble should be polished so that it can be included with the next release.<br />
<br />
'''Expected results:''' <br />
* An editing mode for polygons inside Marble. <br />
* Adding, moving and removing nodes. <br />
* Possibly merging nodes and other features that tools like inkscape provide for node interaction<br />
* Assignment of lables, outline color and fill color.<br />
* Possibly editing of "holes" inside the Polygon.<br />
<br />
'''Knowledge Prerequisite:''' C++ and Qt. Would-be applicants are expected to work on junior jobs (possibly related to the project). Try to find your way into http://marble.kde.org/dashboard.php#contributors and solve as many tasks and bugfixes as possible.<br />
<br />
'''Mentor:''' Torsten Rahn and other Marble developers.<br />
<br />
<br />
=== KDE Edu ===<br />
<br />
==== Project: Sound Visualization and Sound Effects in Artikulate ====<br />
'''Brief explanation:''' Artikulate is a language learning application that focus on improving a learner's pronunciation skills by repeating native speaker recordings, recording that try and comparing boths. By repeating these trials, a learner can continuously improve his/her language skills. There are areas for this project:<br />
# native speaker recordings are recorded (either by GStreamer or QtMultimedia), converted to an OGG file and saved. What is missing is an application of noise cleanup filters, removing of no-sound intervals, and normalization (possibly combined with a very basic sound editor)<br />
# when playing and comparing sounds, there is no visual feedback about how much the soundwaves differ: plotting the soundwaves in a reasonable format <br />
'''Goals:''' The goal is to extend the sound processing in Artikulate to<br />
# Implement simple sound filters for normalization, noise removal, removal of white noise and integrate sound postprocessing into the editor workflow<br />
# Implement plotter for soundwaves and integrate this in the training mode<br />
Yet for both it is important to research which libraries already exist and possibly could be reused. Also, research is needed about which techniques for comparing the soundwaves is appropriate. A proposal should already contain verbose information about these questions.<br />
<br />
'''Knowledge Prerequisite:''' a must is knowledge of C++ and Qt, a plus is knowledge of sound processing libraries (e.g. GStreamer) or experience in sound processing<br />
<br />
'''Mentor:''' Andreas Cord-Landwehr and/or other people from KDE Edu<br />
<br />
==== Project: Semi-Automatic Generation of Language Lessons for Parley ====<br />
<br />
'''Brief explanation:''' Parley is an advanced vocabulary trainer with features like 8 different learning modes, including flashcards, genders of nouns, conjugation of verbs and several more. A lesson for Parley is encoded in kvtml, KDE Vocabulary Training Markup Language which is an XML format for vocabulary lessons of many different types.<br />
<br />
But it is a relatively demanding task to create good lessons for Parley. You need to manually edit a list of words in several different languages, add images and/or sound clips to them all, word class, pronounciation, etc.<br />
<br />
We would like to create a semi-automatic generator for lessons using the Kexi database in the Calligra suite. The workflow will be something like this.<br />
<br />
# You use an import script to import a selected part of the word list in wiktionary.org, an online wiki dictionary, into Kexi. This will then form the basis for the work on the lessons. <br />
# You define a list of words in the so called primary language, which is the language that the lesson is supposed to teach. This list will be the words only and could be created either using the editor inside Parley or a standard text editor and then import it into Parley.<br />
# You define which secondary languages you want in your lesson. These languages are the ones that the student is already familiar with. The training session will then consist of translations from one of the secondary languages (most often the native language of the student) and the primary language. At this point you also define which other parameters you want to include in the lesson, like image, sound clip, phonetic text, explanation, etc.<br />
# You invoke the automatic lesson generator which will search for the words you have defined in the database, look up suitable translations and add the other fields that you asked for.<br />
# If necessary, patch up the newly generated lesson with missing data that wasn't present in the database or add the information to the database and redo the generation.<br />
<br />
'''Goals:''' The goal is to create software that supports the workflow above. It will at least comprise the following tasks:<br />
# Define an efficient database schema for the words and translations. Wiktionary.org has 3.6 million entries and even a subset of that can take significant amounts of storage.<br />
# Implement a script that reads from wiktionary.org and enters the data into the Kexi database using the calligradb library. There is already a script for downloading and parsing the contents of Wiktionary at [1] but you will have to adapt it to Kexi. <br />
# Implement the code that searches the database and populates the lesson with the data found.<br />
# (If time permits) Implement a more advanced lesson editor than is currently present in Parley or a stand-alone editor.<br />
<br />
'''Knowledge Prerequisite:''' Good knowledge of C++ and Qt, a plus is knowledge of of kvtml and the related C++ classes in the kde edu libraries. Also some knowledge of databases and database searches.<br />
<br />
'''Mentor:''' Jaroslaw Staniek, the maintainer of Calligra Kexi, with help from Inge Wallin<br />
<br />
[1] http://en.wiktionary.org/wiki/Help:FAQ#Downloading_Wiktionary<br />
<br />
==== Project: Kig - Geogebra Support ====<br />
[http://edu.kde.org/applications/mathematics/kig/ Kig] is an application for interactive geometry.<br />
<br />
'''Goals:''' The overall goal is to support Geogebra files in KDE Edu. Because Geogebra is both a plotting tool and a tool for interactive geometry, the stated goal is very broad. For this particular project, we are interested in supporting interactive geometry in Kig. The current progress towards this goal is in the [https://projects.kde.org/projects/kde/kdeedu/kig/repository/show?rev=geogebra geogebra] branch of Kig's repository. Since there is some progress towards that goal, the particular goal of supporting these files in Kig may or may not be smaller than a GSoC project, in which case we can move forward to implement support for these files in the many plotting tools we have in KDE Edu.<br />
<br />
'''Knowledge Prerequisite:''' By the start of GSoC you should<br />
# Be familiar with Kig as a user<br />
# Be familiar with Geogebra as a user<br />
# Be familiar with Git, you will have to work with branches<br />
# Be able to build Kig<br />
# Be familiar with Kig's filter code: Kig is a large code base, so you are not expected to know everything about it, but you should at least be familiar with how filters are created and be able to modify filters since this will be the part of the code that you will be working with.<br />
<br />
'''Mentor:''' David Narvaez (IRC: dMaggot, please [[User:DMaggot/Mentoring|read this]] before applying)<br />
<br />
==== Project: Kig - Analitza Integration (Experimental) ====<br />
[http://edu.kde.org/applications/mathematics/kig/ Kig] is an application for interactive geometry.<br />
<br />
'''Goals:''' Kig's core is full of code to deal with finding solutions to linear or quadratic equations which are the bulk of interactive geometry. While this code works, in many cases it does so by approximations and it is, in general, very convoluted. The goal of this project is to implement all of this code in terms of a [https://en.wikipedia.org/wiki/Computer_algebra_system CAS] to address both of the disadvantages mentioned before. Analitza is an "in-house" library that deals with mathematical expressions, and is thus a good candidate for a CAS provider in Kig. This project is experimental because:<br />
# Implementing everything in terms of a CAS may or may not improve code quality in terms of readability. If it doesn't (and we would only know this at the end of the project), the implementation of this project will not make it to the master branch.<br />
# Analitza may or may not be up for all of the tasks we need to do in Kig, in which case improving Analitza is an option.<br />
<br />
'''Knowledge Prerequisite:''' By the start of GSoC you should<br />
# Be familiar with Kig as a user<br />
# Be familiar with Analitza as a consumer (it is a library, so you would not be a "user")<br />
# Be able to build Kig<br />
# Be able to build Analitza<br />
# Be familiar with Kig<br />
# Be familiar with Kig's object hierarchy and the mathematics behind that<br />
<br />
'''Mentor:''' David Narvaez (IRC: dMaggot, please [[User:DMaggot/Mentoring|read this]] before applying)<br />
<br />
==== Project: Integrate Cantor into LabPlot====<br />
[http://labplot.sourceforge.net/ LabPlot] is a KDE-application for interactive graphing and analysis of scientific data.<br />
<br />
'''Brief explanation:''' The integration is twofold:<br />
<br />
# currently, for the created plots LabPlot uses either the data provided by hand in a spreadseet or by using data imported from external ascii-files. By having Cantor within LabPlot it should be possible to access the data sets created in a computer algebra session (say Maxima) provided by Cantor. Cantor's session have to be integrated into LabPlot's model-view framework and have to be put onto the same foot as all the other objects managable in LabPlot (spreadsheet, worksheets etc.).<br />
# By calling a CAS-specific command for creating a 2D-plot in Cantor, Cantor creates an external process that renders the plot and embeds the result as a pixmap. Instead of such a static pixmap, LabPlot's plots should be embeded. This would provide high degree of control of the plot appearance as provided by LabPlot.<br />
<br />
'''Mentor:''' Alexander Semke<br />
<br />
==== Project: Integrate [http://en.wikipedia.org/wiki/VTK VTK] into LabPlot, investigate [http://en.wikipedia.org/wiki/Tulip_(software) Tulip] ====<br />
[http://labplot.sourceforge.net/ LabPlot] is a KDE-application for interactive graphing and analysis of scientific data.<br />
<br />
'''Brief explanation:'''<br />
# LabPlot lacks 3D-functionality. In the old KDE3-based LabPlot qwt3D was used for this that is not an option anymore. The task consists of the integration of [http://en.wikipedia.org/wiki/VTK VTK] -libs. Also, the relevant widgets for 3D-plot editting should be created in a manner similar for all the other objects available in LabPlot now.<br />
# Investigate whether it's reasonable to use LabPlot as a frontend (or to extend it to be a frontend) to the functionality provided by [http://en.wikipedia.org/wiki/Tulip_(software) Tulip] yes, how?<br />
<br />
'''Mentor:''' Alexander Semke<br />
<br />
===Krita===<br />
We welcome students who want to work on Krita for Google Summer of Code. If you want to work on Krita, keep in mind that we would like you to stay with the project, also outside Summer of Code. Summer of Code isn't just a summer job with some mentoring added -- it's a way of becoming part of the team.<br />
<br />
If you haven't worked on Krita before, we want you to demonstrate your skill beforehand by fixing bugs or implementing some features. It's a good idea to start on that in January. Here is a list of pre-gsoc ideas:<br />
<br />
==== Project: Painting and Separation of 3D Textures====<br />
<br />
As one of it’s use cases, Krita’s vision statement includes painting textures for 3D. 3D textures are typically comprised of a number of separate black and white, RGB or RGBA images. Thus painting for textures typically requires painting on more than one single layer / channel at a time. For example painting a scratch into a metal surface may require painting black onto the bump channel, another colour on the diffuse channel, and another to the specularity channel (as well as possibly some others such as the displacement channel). All of these are affected simultaneously.<br />
<br />
Currently Krita’s painting system is only able to paint onto single layers at a time and brushes have not been designed in such a way as to allow adjusting multiple channels simultaneously as would be needed. This topic would require looking at how Krita’s current painting system could be extended to paint the necessary adjustments to the channels used in 3D rendering, show the textures created in OpenGL and then export those channels for use in 3D applications.<br />
<br />
==== Project: 3D Material Image Maps====<br />
<br />
3D materials are made up of a bunch of images called image maps. If the user could associate layers as image maps in Krita, and paint on all of them at the same time, artists could paint whole 3D materials - something currently only available in high end 3d apps like zBrush (not even Photoshop / Corel Painter). The trick is that the position of what's painted needs to match on every map/layer, but the colours vary. For example, a scratch on a human characters skin would have a red colour map, a white (=raised) bump map, a light grey (=semi-shiny) specularity map etc, all in the exact same location on the each image map. Traditional methods of trying to create each image from scratch or by manipulating the colour map are very, very slow and painful. A simple version of this could be done as follows:<br />
<br />
* Each layer has a toggle in the layers docker called "texture map" or similar. This is turned off by default. When active, the brush paints on *all* layers that currently have "texture map" active.<br />
<br />
* When picking a colour, a dropdown lets the user pick "Default" or any active texture map layer. "Default" is just the current behaviour. If the user selects a layer in the dropdown, then the selected colour will be applied to that layer when painting on *any* layer.<br />
* In the file or layer menu is an option "Export texture maps" which saves each texture map layer as an image. The layer name and extension appended automatically to the file name. For example, on a file called character.kra, the layer titled "colour" would be saved as "character-colour.jpg" (or whatever format was selected).<br />
<br />
For step 3, a simple, one click / shortcut, method is vital, as artists often have to check their material in their 3d app every few minutes, and wading through saving 10 layers individually, each with manual file naming and confirming file format settings each time is unacceptably slow. For any artist who requires this level of control, they can use Layers menu -> "Save Layer as Image" already in krita.<br />
<br />
Allowing artists to paint a single material rather than creating multiple separate image maps by hand, would make Krita formidable for painting 3D textures, and the most advanced open source application for 3D texturing.<br />
<br />
==== Project: Matte painting====<br />
<br />
One of Krita's main use cases is as a professional tool for painting textures and mattes in digital film. Mattes are primarily made of sequences of images generated by a combination of two methods, first by animatable spline based shapes, which currently exists and is being developed in blender, and then after that, by hand painting frames for detailed areas and corrections. The trouble is that no currently maintained FOSS application currently tries to provide the ability to create hand painted mattes. This project is to extend Krita for this purpose. What's needed here is the following:<br />
* The ability for Krita to load manually selected sequences of color managed images as frames to be represented as a single layer in Krita. Optionally would be the ability to display playback at reduced resolutions to increase performance and to offset the time at which sequences were inserted.<br />
* A “Timeline” docker which would display the current frame displayed, and allow clicking and dragging to different points in time, updating the image displayed in the canvas to match. Optional would be the ability to zoom and scroll the timeline, mark modified frames on the timeline, playback the image sequence, forwards and backwards as video (most likely only in the openGL mode of Krita or with an external tool like ffplay) and display times in a range of formate EG SMTP, PAL, NTSC, Secam etc.<br />
* Updating the paint and transparency layer types, so that when Krita is using a frame sequence and one of these layer types is created, they also represent a series of frames rather than just a single image. This could possibly be a toggle switch on layers, much as visibility, alpha lock etc. are now.<br />
* The ability to save layers that are displaying frame sequences out as frame sequences also, giving them user definable names (eg where to insert the frame number, how many digits to pad).<br />
* Keyboard shortcuts to move forwards and backwards 1/10/100 frames, to jump to the start and end of the timeline and forward / backwards play if video playback is supported.<br />
<br />
==== Project: Cartoon Text Balloon System====<br />
<br />
Krita already has two text tools, but neither is suited for creating cartoon balloons. The system should allow the creation of vector-based balloons in different styles. The balloons can contain styled text. The text and balloons should be translatable and a system to select the current language should be created. It should be possible to save the balloon text to a separate file that can be used as input for translations. Finally, care must be taken to support right-left languages.<br />
<br />
==== Project: Substrate simulation ====<br />
<br />
'''Brief explanation''': Substrates for painting and drawing have a direct influence on the result of the art. The goal of this project is bringing this richness of these effects to Krita. There is an existing body of literature and academic projects on this topic, with Bill Baxter and Tom van Laerhoven being among the best known researchers. For the right effect, we need to take care of the 3d structure of the substrate, it’s effect on paint tools -- smoothness, absorbency and other parameters. An interesting option is to make it possible to apply different substrates to existing paintings.<br />
Expected results: an optional substrate simulation that works with all current Krita tools<br />
<br />
==== Project: Real Paint Emulation ====<br />
<br />
We already did some research on the emulation of real-world paint and we do already have some essential pieces of it: Hairy Brush and Bumpmap filter. Now we need to bring this all together and allow a painter to use it easily, so that he could paint images like that: TODO. This project would involve creation of a special type of layer and a new colorspace, so the student should already be familiar with our layer stack and pigment code.<br />
<br />
==== Research Project: layer stack optimizations ====<br />
<br />
Right now when one layer got changed our merger should walk through all the layers of the current group and compose all of them into projection one by one. But this doesn't take into account that COMPOSITE_OVER (which is the most popular composition mode) has an associativity property, which means we can merge all the layers below and all the layers above dirty one into two groups, and calculate a group of any size with only two composition operations, which would give huge speed advantages.<br />
<br />
Unoptimized group:<br />
<br />
* layer 6<br />
* layer 5<br />
* layer 4<br />
* layer 3 <-- active layer (becomes dirty quite often)<br />
* layer 2<br />
* layer 1<br />
<br />
Optimized group:<br />
<br />
* <flattened 4-6><br />
* layer 3 <-- active layer (becomes dirty quite often)<br />
* <flattened 1-2><br />
<br />
After this project is done, we can start implementing layer composition on the GPU using openGL.<br />
<br />
==== Project: Improved Animation Brush System ====<br />
This should result in animation brushes being more readily available and adjustable. The current way of doing this is not as userfriendly as it could be.<br />
<br />
*Dedicated "Animation Brush GROUP"-> everything in group is a frame of the animation. (for use in current file,instead of in another instance of krita)<br />
*Convert group to animation group ->Normal group becomes animation brush reference.<br />
*Save as animation brush PRESET<br />
*options to set animation brush continuity to custom, random, incremental, pressure,angular,loop...<br />
*animation brush presets (in settings) need a timeslider to flip through the available frames<br />
<br />
https://bugs.kde.org/show_bug.cgi?id=322159<br />
<br />
==== Project: seamless textures by using UV layout as self-wrapping paint mask====<br />
This is a tool that should help in creating seamless (or as close as possible) textures for organic models. It will help in painting creases and other details across seams.<br />
http://www.sintel.org/wp-content/uploads/2010/01/face_uv_export.png<br />
<br />
*Convert intersections on uvlayout to seam transfer points.<br />
*use those points to transfer painted strokes to connected points on other side (set by user) <br />
*create userfriendly way to add,manage those seam transfer points. (multiple should be active at once)<br />
<br />
https://bugs.kde.org/show_bug.cgi?id=324072<br />
<br />
ALTERNATIVE<br />
*Similar to previous idea,but with movable curves/grid with adjustable seam transfer points in stead of converting a whole UV layout automaticly<br />
<br />
https://bugs.kde.org/show_bug.cgi?id=321547<br />
<br />
More ideas for projects can be found here:<br />
https://bugs.kde.org/buglist.cgi?cmdtype=runnamed&namedcmd=Wishlist%20count&list_id=884686<br />
<br />
=== Kexi ===<br />
Kexi is a visual database creator. It can be used for designing database applications, inserting and editing data, performing queries, and processing data.<br />
<br />
More info: [[Kexi|Developers' wiki]], [http://www.calligra.org/kexi web site for users], [https://mail.kde.org/mailman/listinfo/calligra-devel mailing list], IRC channel: #kexi and #calligra on Freenode.<br />
<br />
==== Project: Add support for importing tables from LibreOffice Base to Kexi ====<br />
<br />
'''Brief explanation:''' Add support for importing (Kexi calls it data/design migration) tables from LibreOffice (or OpenOffice) Base (ODB format) to Kexi. This task involves research on ODB format (it's relatively openly defined). Qt/C++ shall be used for the task, not any Java engine (HSQL db). This could be introduction to later development of complete database import from ODB to a Kexi database.<br />
<br />
'''Expected results:''' In the GUI the feature shall be put in the same place as the import from MDB: External Data -> Import Tables -> Table Importing Wizard. Then user would see .odb support in the open file dialog, just like it has access to importing CSV or MDB.<br />
<br />
'''Knowledge Prerequisite:''' C++, some Qt, some databases, some XML, software architecture<br />
<br />
'''Mentor:''' [[User:Jstaniek|Jarosław Staniek]] (Kexi maintainer)<br />
<br />
'''First steps''':<br />
:*See [http://wiki.openoffice.org/wiki/FAQ_(Base)] for a start.<br />
:*Sample .odb databases are available for [http://www.floppybunny.org/robin/web/virtualclassroom/chap8/libreoffice_base.html this] tutorial.<br />
:*Studying kexi/migration/importtablewizard.cpp which is a GUI taking an instance of implementation of a migrate driver derived from KexiMigration::KexiMigrate (in your case - the ODB driver). It's the m_migrateDriver attribute.<br />
:*Implementing plugin (needed methods of the driver) in migration/odb/ by looking how it was performed for other cases, e.g. for mysql (see kexi/migration/mysql/ dir) or other cases such as pqxx, txt, xbase, sybase or mdb<br />
:*In the actual C++ implementation, KoOdfReadStore class from calligra libs can be used to read contents of the .odb.<br />
<br />
=== Calligra Plugins ===<br />
<br />
Calligra is an office suite with lots of different applications with an user interface that is easy to use, highly customizable and extensible.<br />
<br />
More info: [http://www.calligra.org web site for users], [https://mail.kde.org/mailman/listinfo/calligra-devel mailing list], IRC channel: #calligra on Freenode.<br />
<br />
==== Project: Variable thickness lines ====<br />
<br />
'''Brief explanation:''' One of the most fundamental basics of drawing is varying the width of your lines to show shape, form and perspective. Almost every line tapers at either end, and often gets thicker and thinner in different places as needed. For purely technical and histrorical reasons though, every vector program (Illustrator, Inkscape, Karbon etc) make curves all one hard width. <br />
This proposal is to create a variable width path shape / tool, much like the path tool, would allow drawing curves, but where each node could have its width set so that the line width changed smoothly from node to node. <br />
As a plugin for the Calligra suite, this would clearly benefit apps as Karbon and also Krita.<br />
<br />
'''Expected results:''' variable width path tool is able to change the width of any path node to an arbitary percentage (say 155%) of the stroke width. See http://bugsfiles.kde.org/attachment.cgi?id=56995 for mockup. The shape needs to be able to save and load in svg/odf.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt, SVG?<br />
<br />
'''Mentor:''' Thorsten Zachmann < zachmann @ kde dot org ><br />
<br />
=== Keyboard Layouts ===<br />
<br />
Keyboard layouts in KDE allow user to use multiple keyboard layouts and switch between them. It consists of keyboard configuration module (in System Settings), keyboard layout widget/applet, and keyboard layout daemon.<br />
<br />
==== Project: Integrating Input Methods with keyboard layout configuration ====<br />
<br />
'''Brief explanation:''' Input method and keyboard layout configuration are serving the same purpose - to allow users to type text in non-default language. Currently KDE has integrated system to configure keyboard layouts but IM need to be configured somewhere else. Also when IM is configured it takes over some functions of keyboard layout configuration. So it would be nice if we could have IM and keyboard layout configuration in one place.<br />
It seems that IBus has already gained community acceptance so this will be the target for integration into KDE keyboard module.<br />
<br />
'''Expected results:''' Keyboard configuration module in System settings will include IM configuration and it will be integrated with existing keyboard layout options.<br />
<br />
'''Knowledge Prerequisite:''' good knowledge of C++, development experience with Qt and KDE, understanding of Input Methods (IBus)<br />
<br />
'''Mentor:''' Andriy Rysin <arysin@gmail.com><br />
<br />
=== KDevelop ===<br />
<br />
==== Project: Clang Integration ====<br />
<br />
'''Brief explanation:''' Finish the kdev-clang plugin to make it a usable replacement for the existing C++ plugin.<br />
<br />
'''Expected results:''' All advanced features of the KDevelop C++ are ported to the kdev-clang plugin. This includes code completion helpers, as well as basic refactoring and assistant integration.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt. Knowledge about Clang is helpful<br />
<br />
'''Mentor:''' Milian Wolff<br />
<br />
==== Project: Checker Framework ====<br />
<br />
'''Brief explanation:''' A generic framework should be created which provides the foundation for other plugins to report errors. <br />
<br />
'''Expected results:''' Right now we have the problems toolview but it is tightly coupled to the DUChain. This should be changed to use a separate item repository which stores the problems for a given path. The data stored would be: Path and range of where the issue is found, a short error message and optionally a long description. Furthermore, plugins might want to store additional info from which the problem could be fixed (compare to the 'add include path' or similar wizards we have already in the language framework).<br />
<br />
This framework should then be used to integrate various tools.<br />
<br />
First of all the existing language plugins should show the problems they find there.<br />
The existing playground plugins for krazy and cppcheck integration should reuse that framework<br />
any other linters could be integrated, such as jslint, pylint etc. pp.<br />
runtime checkers could be integrated, such as valgrind's memcheck, ptrcheck, helgrind, drd, ...<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt. Knowledge of linters such as Valgrind etc. is helpful.<br />
<br />
'''Mentor:''' Milian Wolff<br />
<br />
==== Project: SVN Plugin Rewrite ====<br />
<br />
'''Brief explanation:''' Rewrite the SVN plugin to use the C-API directly.<br />
<br />
'''Expected results:''' The existing SVN plugin uses an outdated kdevsvncpp checkout internally which causes troubles, warnings and licensing issues. Port the plugin to either the C-API of svn or alternatively try to reuse code from current kdevsvn. The result should be a tested, working plugin for SVN integration without licensing issues nor compile time warnings about usage of deprecated API.<br />
<br />
'''Knowledge Prerequisite:''' C, C++, Qt, SVN<br />
<br />
'''Mentor:''' Milian Wolff<br />
<br />
=== KDE PIM ===<br />
<br />
The KDE PIM community work on a set of libraries and applications for Personal Information Management, including email, calendaring, contacts, and feed aggregation.<br />
<br />
==== Project: OpenHolidays ====<br />
<br />
'''Brief explanation:''' The KHolidays library provides KDE applications with information on public holidays around the world, however the file format is very hard to use and maintain and the library features are very limited and restricted to Qt users. The goal of the OpenHolidays project is to develop a new open standard and data repository that can be used by any project that needs the data. See http://community.kde.org/KDE_PIM/KHolidays for more details.<br />
<br />
'''Expected results:''' Define the new JSON file format and port the existing data files to the new format. Develop a shared Qt-only library to parse the holiday files and provide access to them with a iCal style event-based api. Implement an Akonadi resource to access the data. Extended goals: Develop a JavaScript library to use the files. Develop a web site and web service at openholidays.org to provide online access to the data files.<br />
<br />
'''Knowledge Prerequisite:''' C++ and Qt for core goals, JavaScript and web services for extended goals.<br />
<br />
'''Mentor:''' John Layt and other KDE PIM community members.<br />
<br />
==== Project: Enhanced Searching in KMail ====<br />
<br />
'''Brief explanation:''' KMail is the defacto email client in KDE. It currently has a complex search dialog which allows the users to configure many different parts of the search. While it is very powerful, it is not very usable. A better search dialog is required which allows the user to modify the initial search and filter the data appropriately. A good example of this would be the Thunderbird search dialog - https://support.mozillamessaging.com/media/uploads/gallery/images/2011-03-14-10-05-42-56151b.jpg<br />
<br />
'''Expected results:''' Implementing the new search dialog and updating the backend search code to include whatever new features are required. Implementing this search dialog will require messing around with Akonadi, Baloo and KPeople.<br />
<br />
'''Knowledge Prerequisite:''' C++ and Qt. A basic understanding of Information Retrieval would be nice.<br />
<br />
'''Mentor:''' Vishesh Handa and other KDE PIM community members.<br />
<br />
==== Project: Active Mail ====<br />
'''Brief explanation:''' Active Mail is a QtQuick based mail application, a touch input friendly version of KMail so to speak. Currently it still depends on QtWidget based user interfaces for certain tasks which will have to be replaced before Active Mail can live up to its promise. Such missing pieces are the email composer and the email viewer. <br />
<br />
'''Expected results:''' Define and implement a general QtQuick API for composing emails. Rework the Active Mail composer UI/UX with the help of our usability expert and make it shine.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt, QtQuick<br />
<br />
'''Possible Mentors:''' Thomas Pfeiffer, Michael Bohlender, Kevin Krammer<br />
<br />
==== Project: QtQuick ToDo API / Plasmoid====<br />
<br />
'''Brief explanation:''' KDE PIM wants to make it's data accessible for applications which use QML to declare their user interfaces, e.g. applications using QtQuick. For that they need data handling objects that are accessible through QML, e.g. item models that have a mapping of string based role names to enum value based roles in C++, etc.<br />
<br />
'''Expected results:''' Define and implement a general QML API for accessing and creating Akonadis ToDo data. Write / Port a ToDo Plasmoid for Plasma Desktop or Plasma Active to show off the new API. Bonus: Port Kontact Touch Task to the new API instead of, or in addition to the Plasmoid.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt, QtQuick<br />
<br />
'''Possible Mentors:''' Kevin Krammer, Michael Bohlender and other KDE PIM community members<br />
<br />
====Project: KPeople / Kontact Touch People====<br />
<br />
'''Brief explanation:''' KPeople is a KDE framework for aggregating contact information of people from various data sources, e.g. the user's addressbook and instant messaging programs. For the future KDE would like this to be the main source of data for its address book application.<br />
<br />
'''Expected results:''' Define and implement a QML API for accessing kPeoples features. Create a pretty QtQuick example App/Plasmoid to show off and prove the API. Bonus: Bonus: Port Kontact Touch Addressbook to the new API instead of, or in addition to the Example.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt, QtQuick<br />
<br />
'''Possible Mentors:''' Martin Klapetek, Thomas Pfeiffer and other KDE PIM community members<br />
<br />
==== Project: Akonadi Commandline/Shellscripting Interface ====<br />
<br />
'''Brief explanation:''' Akonadi is a system that enables uniform access to various data formats across a wide range of data sources. Its main clients are graphics end user applications such as KMail. However, in some cases it is advantageous if data manipulation can be automated.<br />
Power users or system administrators often employ the multitudes of Unix/Linux commandline tools to achieve such automation tasks. The idea is to provide a tool or set of tools that allow Akonadi operations to be used in such scripts.<br />
<br />
'''Expected results:''' A non-GUI program able to perform useful tasks on Akonadi provided data, like creating folders, adding/deleting/copying/moving data such as contacts or emails, etc.<br />
<br />
'''Knowledge Prerequisite:''' C++, Shell scripting<br />
<br />
'''Mentor:''' Jonathan Marten, Kevin Krammer and other KDE PIM community members<br />
<br />
'''Resources:''' An early prototype can be found here https://projects.kde.org/projects/playground/pim/akonadiclient and there are two, non-Akonadi, clients which are part of KDE PIM: kabbclient (contacts), konsolecalendar (calendar)<br />
Contact the kde-pim mailinglist for discussions: https://mail.kde.org/mailman/listinfo/kde-pim<br />
<br />
<br />
=== Simon ===<br />
Simon is a speech recognition suite.<br />
<br />
[http://simon.kde.org Website] - [https://mail.kde.org/mailman/listinfo/kde-speech Mailing list] - IRC channel: #kde-speech on Freenode.<br />
<br />
==== Project: Streamline handling of various resources ====<br />
<br />
'''Brief explanation:''' Simon uses a multitude of different components: Scenarios, Base models, Shadow vocabulary, Language profiles, etc.<br />
<br />
While many of these components can be downloaded from within Simon, some can't and even for those that are better integrated, end-users still have to read additional documentation to know which components work together and which don't.<br />
<br />
The aim of this project is to bring the handling of these resources under a uniform and user-friendly interface.<br />
Specifically, the interface should resolve conflicts automatically and deduce an optimal default setup by itself (e.g. based on the system language and installed programs).<br />
<br />
'''Expected results:''' Much more user friendly setup.<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt<br />
<br />
'''Mentor:''' Peter Grasch <peter {+at+} grasch.net><br />
<br />
'''Resources:''' Some work (mostly brainstorming and UI design) was already conducted during Season of KDE 2013. Please contact me for details. This does not mean that this project is already assigned!<br />
<br />
=== KDE Telepathy===<br />
<br />
==== Project: Conference Video Call Support ====<br />
<br />
'''Brief explanation:''' Our current IM client can handle a 1-1 video call reasonably well. It currently does not<br />
support conference calls (>2 people). Our backend Telepathy should support this, but we do not make use of it in our client. This project will involve<br />
* some UI design<br />
* some low level GStreamer work<br />
* fixing parts of the Telepathy stack.<br />
<br />
Current code is inside the repository ktp-call-ui.<br />
<br />
'''Expected results:'''<br />
Working multi conference video calls.<br />
<br />
'''Knowledge Prerequisite:'''<br />
* C++, Qt<br />
* Ideally; QML, GStreamer and Telepathy<br />
<br />
'''Mentor:''' David Edmundson and Diane Trout<br />
<br />
==== Project: Telegram Network Support ====<br />
<br />
'''Brief explanation:''' Telegram is an upcoming network that aims to replace WhatsApp. Unlike whatsapp it has an open protocol (https://telegram.org/) and is gaining popularity.<br />
<br />
We want support in our IM client. This should be done by creating a connection manager using TelepathyQt service bindings. <br />
<br />
When this is complete, not only will we get Telegram support, but due to the distributed nature of Telepathy it will also work for Jolla, Ubuntu Phone and Empathy.<br />
<br />
'''Expected results:'''<br />
Working single and group chats using KDE Telepathy over the Telegram network<br />
<br />
'''Knowledge Prerequisite:'''<br />
C++, Qt, Reading Protocol Documentation<br />
<br />
'''Mentor:''' David Edmundson<br />
<br />
=== Solid ===<br />
==== Project: iOS Integration ====<br />
'''Brief explanation:''' Integrate the iOS platform with the Plasma desktop using libraries like libimobiledevice and kdeconnect.<br />
<br />
'''Expected results:''' Have an iOS application that is able to talk to KDE Connect and desktop integration using libimobiledevices.<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt, Objective C<br />
<br />
'''Mentor:''' Àlex Fiestas <afiestas {+at+} kde.org><br />
<br />
'''Resources:''' libimobiledevice, kdeconnect, plasma<br />
<br />
==== Project: Make Libbluedevil Async ====<br />
'''Brief explanation:''' Extend libbluedevil to have an asynchronous api, and port bluedevil to it.<br />
<br />
'''Expected results:''' libbluedevil should have an asynchronous api, and bluedevil should be ported to them.<br />
<br />
'''Knowledge Prerequisite:''' basic Qt and DBus<br />
<br />
'''Mentor:''' Àlex Fiestas <afiestas {+at+} kde.org><br />
<br />
'''Resources:''' libbluedevil, bluedevil, afiestas<br />
<br />
==== Project: Improve sharing experience ====<br />
'''Brief explanation:''' Improve the content sharing experience in Plasma by extending and improving Samba share, implementing other ways of sharing and write new ways of discovering other people's shares.<br />
<br />
'''Expected results:''' It should be possible to discover "shares" using dolphin (possibly via a new kioslave?) and it should be possible to share a folder between two Plasma computers really fast and easy (possibly implementing an http server plus discovery via avahi).<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt, extra points for KIO experience.<br />
<br />
'''Mentor:''' Àlex Fiestas <afiestas {+at+} kde.org><br />
<br />
'''Resources:''' avahi, http, kdenetwork-fileshare<br />
<br />
=== Plasma Media Center ===<br />
KDE's Plasma Media Center (PMC) is aimed towards a unified media experience on PCs, Tablets, Netbooks, TVs and any other device that is capable of running KDE software. PMC can be used to view images, play music or watch videos. Media files can be on the local filesystem or accessed with KDE’s Desktop Search.<br />
<br />
==== Project: Integrate with Simon ====<br />
<br />
'''Brief explanation:''' Simon is an open source speech recognition program that can replace your mouse and keyboard. The system is designed to be as flexible as possible and will work with any language or dialect. This project aims at integrating it with Plasma Media Center to control it.<br />
<br />
'''Expected results:''' Using Simon, the user should at least be able to use voice to -<br />
* Control playback of media (images, music, videos)<br />
* Navigate in the media browser (next page, previous page, "goto the 3rd item")<br />
* Home Screen navigation<br />
* Ability to switch to the player, image viewer, or playlist<br />
* Play a media file in the browser (or the playlist, when its shown) using its name<br />
<br />
'''Knowledge Prerequisite:''' Basic C++, Qt and QML<br />
<br />
'''Mentor:''' Shantanu Tushar <shantanu {+at+} kde.org> and Peter Grasch <peter {+at+} grasch.net><br />
<br />
==== Project: Integrate with Plasma Next ====<br />
<br />
'''Brief explanation:''' Plasma Next is the refreshed Plasma workspace written using the new Qt5 and QtQuick2 frameworks. Plasma Next is able to switch to different modes/formfactors on-the-fly (such as desktop, netbook, tablet). We want to be able to make Plasma Next able to switch into a media center mode.<br />
<br />
'''Expected results:''' After the project is complete, the Plasma Next shell should be able to switch to a Media Center mode and offer every feature that the standalone Plasma Media Center application provides. Examples are ability to browse media, playback, playlists etc.<br />
<br />
'''Knowledge Prerequisite:''' Qt, QML is required. Understanding of Plasma Next is a huge plus<br />
<br />
'''Mentor:''' Shantanu Tushar <shantanu {+at+} kde.org><br />
<br />
'''Resources:''' Some info about Plasma Next<br />
* http://vizzzion.org/blog/2014/01/plasma-new-beginning/<br />
* http://vizzzion.org/blog/2014/02/next-means-focus-on-the-core/<br />
* http://vizzzion.org/blog/2013/11/responsible-evolution/</div>Shantanu Tusharhttps://community.kde.org/index.php?title=GSoC/2014/Ideas&diff=36612GSoC/2014/Ideas2014-02-25T06:46:02Z<p>Shantanu Tushar: Add PMC Plasma Next idea</p>
<hr />
<div>[[Category:Mentoring]]<br />
See also: [[../../|GSoc Instructions]], [[../../2013/Ideas|Last year ideas]]<br />
<br />
== Guidelines ==<br />
<br />
=== Information for Students ===<br />
<br />
These ideas were contributed by our developers and users. They are sometimes vague or incomplete. If you wish to submit a proposal based on these ideas, you may wish to contact the developers and find out more about the particular suggestion you're looking at.<br />
<br />
Being accepted as a Google Summer of Code student is quite competitive. Accepted students typically have thoroughly researched the technologies of their proposed project and have been in frequent contact with potential mentors. Simply copying and pasting an idea here will not work. On the other hand, creating a completely new idea without first consulting potential mentors is unlikely to work out.<br />
<br />
When writing your proposal or asking for help from the general KDE community don't assume people are familiar with the ideas here. KDE is really big!<br />
<br />
If there is no specific contact given you can ask questions on the general KDE development list kde-devel@kde.org. See [http://www.kde.org/mailinglists/ the KDE mailing lists page] for information on available mailing lists and how to subscribe.<br />
<br />
=== Adding a Proposal ===<br />
<br />
{{Note|Follow the template of other proposals!}}<br />
<br />
==== Project: ====<br />
<br />
'''Brief explanation:'''<br />
<br />
'''Expected results:'''<br />
<br />
'''Knowledge Prerequisite:'''<br />
<br />
'''Mentor:'''<br />
<br />
When adding an idea to this section, please try to include the following data:<br />
<br />
:*if the application is not widely known, a description of what it does and where its code lives<br />
:*a brief explanation<br />
:*the expected results<br />
:*pre-requisites for working on your project<br />
:*if applicable, links to more information or discussions<br />
:*mailing list or IRC channel for your application/library/module<br />
:*your name and email address for contact (if you're willing to be a mentor)<br />
<br />
If you are not a developer but have a good idea for a proposal, get in contact with relevant developers first.<br />
<br />
<br />
==Ideas==<br />
<br />
===Your Own Idea ===<br />
<br />
==== Project: Something that you're totally excited about ====<br />
<br />
'''Brief explanation:''' Do you have an awesome idea you want to work on with KDE but that is not among the ideas below? That's cool. We love that! But please do us a favor: Get in touch with a mentor early on and make sure your project is realistic and within the scope of KDE. That will spare you and us a lot of frustration.<br />
<br />
'''Expected results:''' Something you and KDE loves<br />
<br />
'''Knowledge Prerequisite:''' Probably C++ and Qt but depends on your project<br />
<br />
'''Mentor:''' Try to see who in KDE is interested in what you want to work on and approach them. If you are unsure you can always ask in #kde-soc on Freenode IRC.<br />
<br />
=== Amarok ===<br />
<br />
==== Project: Lyric support improvements ====<br />
<br />
'''Brief explanation:''' Amarok's support for fetching and displaying of lyrics is very limited. It just fetches from a single provider and many times no results are fetched, sometimes due to minor errors in track/album/artist name. Add some more providers of online lyrics databases. If no results are found this can be coupled with the better tagguessing feature (and even if the tags are not saved), the the lyrics providers can be searched with these guessed tags.<br />
Then, improve the lyrics display. Currently it just scrolls at a constant rate, generally that's inconsistent with the actual playback of the song. All .lrc files have timestamps, that can be followed: probably by highlighting the line playing.<br />
<br />
'''Expected results:''' Greatly increase the probability of fetching of the lyrics for any song. In the lyrics display, a highlighted line will display the current line being played.<br />
<br />
'''Knowledge Prerequisite:''' Knowledge of the Amarok code base (hence of Qt, C++). Basic knowledge of webservices.<br />
<br />
'''Mentor:''' Mark Kretschmann<br />
<br />
===digiKam===<br />
<br />
digiKam is an advanced digital photo management application for Linux, Windows, and Mac-OSX.<br />
<br />
* [http://www.digikam.org digiKam project web site]<br />
* [https://mail.kde.org/mailman/listinfo/digikam-devel Mailinglist]<br />
* [https://plus.google.com/+digikam Google+ page]<br />
* [http://webchat.freenode.net/?channels=digikam #digikam IRC channel on Freenode]<br />
<br />
==== Project: Integrate KIPI Export Plugins directly in the GUI of KIPI host applications ====<br />
<br />
'''Brief explanation:''' It would be nice to be able to encapsulate the Export/Import KIPI plugins directly in the GUI of the host application without opening a dedicated window. For the Export Plugins the place to load the plugins will be BQM and for the Import Plugins this can be in the digiKam import tool or in the main view. For this one must factorize the export/import kipi plugin interface and to group the common calls into a virtual interface, to implement tree and list view for the plugins.<br />
<br />
'''Dependencies:''' : digiKam KIPI interface, libkipi, KIPI Plugins <br />
<br />
'''Bugzilla entries:''' [https://bugs.kde.org/show_bug.cgi?id=235572 235572], [https://bugs.kde.org/show_bug.cgi?id=221704 221704] ,[https://bugs.kde.org/show_bug.cgi?id=143978 143978]<br />
<br />
'''Knowledge Prerequisite:''' C/C++, Qt/KDE, GUI<br />
<br />
'''Expected results:''' KIPI host apps that are compatible with the project will load KIPI Plugins in the BQM, the others will load the plugins as it's done right now without breaking any compatibility.<br />
<br />
'''Difficulty:''' high<br />
<br />
'''Lead Mentor:''' Gilles Caulier <caulier dot gilles at gmail dot com><br />
<br />
==== Project: Port Greystoration CImg interface to GMic ====<br />
<br />
'''Brief explanation:''' digiKam include [https://projects.kde.org/projects/extragear/graphics/digikam/repository/revisions/master/show/libs/3rdparty/cimg CImg library] to be able to use Greystoration algorithm which give nice fix to image based on Vortex theory, as [http://www.flickr.com/photos/digikam/8535414322/sizes/l/in/photostream/ Restoration tools]. Since CImg > 1.3.0, Greystoration algorithm have been moved in a new library named GMic with a completely different API. The goal of this project is to adapt digiKam Greystoration interface to GMic library.<br />
<br />
'''Dependencies:''' [https://projects.kde.org/projects/extragear/graphics/digikam/repository/revisions/master/show/libs/dimg/filters/greycstoration digiKam core], [https://projects.kde.org/projects/extragear/graphics/digikam/repository/revisions/master/changes/imageplugins/enhance/ Restauration and Inpaint editor tools], and [https://projects.kde.org/projects/extragear/graphics/digikam/repository/revisions/master/show/utilities/queuemanager/basetools/enhance Restauration tool from Batch Queue Manager]<br />
<br />
'''Knowledge Prerequisite:''' C/C++, math, Qt, <br />
<br />
'''Expected results:''' port image restoration algorithm from [http://cimg.sourceforge.net/ CImg] to [http://gmic.sourceforge.net/ GMic] API<br />
<br />
'''Difficulty:''' high<br />
<br />
'''Lead Mentor:''' Gilles Caulier <caulier dot gilles at gmail dot com><br />
<br />
==== Project: Add a quick access to Labels in dedicated tree-view ====<br />
<br />
'''Brief explanation:''' It would be nice to be able show all items from collections in icon-view which has Rating, Pick Labels, and Color Labels attributed, as it's already do with Tags. The goal is to build a tree-view with all Labels available on digiKam and process database query to show items relevant. This view must include No rating, All Rating values, No Pick Label, All Pick Label values, No Color Label, all Color Labels, which must be selected individually or grouped. This Labels tree-view must be available in KIPI album selector widget, as it's done currently for Tags, to be able to export these virtual albums with kipi-plugins. Also, in this project a way to select No Tagged items must be add to current Tags tree-view, to be homogenous with new Labels tree-view feature.<br />
<br />
'''Dependencies:''' : digiKam Database<br />
<br />
'''Bugzilla entries:''' [https://bugs.kde.org/show_bug.cgi?id=160363 160363], <br />
<br />
'''Knowledge Prerequisite:''' C/C++, Qt/KDE, GUI, Database<br />
<br />
'''Expected results:''' To have a quick acess tree-view in all relevant gui where Labels can be selected for photo workflow.<br />
<br />
'''Screenshots:''' [http://blogs.thesitedoctor.co.uk/tim/img/Windows-Photo-Gallery.JPG Microsoft Live Photo Rating tree-view], [http://images.apple.com/euro/aperture/features/images/video-audio-rating-20091020.jpg Apple Aperture Labels tree-view]<br />
<br />
'''Difficulty:''' medium<br />
<br />
'''Lead Mentor:''' Gilles Caulier <caulier dot gilles at gmail dot com><br />
<br />
===Marble===<br />
Marble is a virtual globe and world atlas — your swiss army knife for maps. Find your way and explore the world!<br />
<br />
* [http://marble.kde.org/ Marble project website]<br />
* [https://mail.kde.org/mailman/listinfo/marble-devel Mailinglist]<br />
* [http://gplus.to/Marble Google+ page]<br />
* [http://webchat.freenode.net/?channels=marble #marble IRC channel on Freenode]<br />
<br />
==== Project: Interactive Tours ====<br />
<br />
'''Brief explanation:''' A Tour is a set of related places along with supporting media (text, images, audio, video). Tours can be viewed (playback): The invididual places are visited in a defined timeline. They're useful for a wide range of tasks, like showing an interesting hike along with panorama pictures, highlighting places of interest for sightseeing or showing historic events and political changes happening over decades. The Marble library has been designed to support these use cases, but the user interface does not reveal all the features yet. This project is about changing that.<br />
<br />
'''Expected results:''' <br />
* Extend the existing Tour widget for animated tour playback<br />
* Improve the usability of the Tour widget<br />
* Support interactive elements in tour playback<br />
* Implement time support for tours for different time ranges (from eras to years to days to minutes to milliseconds)<br />
* Add support for recording tours<br />
* Enhance the screencast feature to generate videos from tours.<br />
Optional:<br />
* Extend Marble's owncloud synchronization feature for uploading tours to owncloud<br />
* Add tour viewing support to the Marble owncloud app<br />
* Implement tour viewing in the QML version of Marble<br />
* Provide tours for existing map themes to highlight features of them<br />
<br />
'''Knowledge Prerequisite:''' C++ and Qt. Would-be applicants are expected to work on junior jobs (possibly related to the project). Try to find your way into http://marble.kde.org/dashboard.php#contributors and solve as many tasks and bugfixes as possible.<br />
<br />
'''Mentor:''' Dennis Nienhüser and other Marble developers.<br />
<br />
==== Project: Marble Game ====<br />
<br />
'''Brief explanation:''' The latest introduction of a recent vector map inside Marble ("Natural Earth dataset") allows for interesting features: With recent and detailed political borders it's also possible to create a game based on Marble similar in spirit to KGeography. In terms of user-featureset the goal is to create an entertaining and educational game-application or game-plugin using Marble. Technically the goal is to extend Marble's framework to allow for this (there surely will be roadblocks). <br />
<br />
'''Expected results:''' <br />
* An application that is based on the MarbleWidget which teaches Geography in a style similar to KGeography.<br />
* OR/AND a plugin that extends Marble with a menu entry that invokes a Quiz-style educational game.<br />
* Extend Marble's framework to allow for the features required<br />
* Improve the Marble framework so that it provides a better experience for 3rd-party developers (by providing missing tutorials, documentation or even better APIs)<br />
<br />
'''Knowledge Prerequisite:''' C++ and Qt. Would-be applicants are expected to work on junior jobs (possibly related to the project). Try to find your way into http://marble.kde.org/dashboard.php#contributors and solve as many tasks and bugfixes as possible.<br />
<br />
'''Mentor:''' Torsten Rahn and other Marble developers.<br />
<br />
==== Project: Marble Editing mode: Polygons ====<br />
<br />
'''Brief explanation:''' During last GSoC a mode for editing ground overlays was added to the experimental editing Mode for Marble. During this GSoC the editing mode should be extended with polygon editing. The resulting editor should allow to create polygons and edit nodes of existing files in a way similar to inkscape. If there is enough time then the editing mode for Marble should be polished so that it can be included with the next release.<br />
<br />
'''Expected results:''' <br />
* An editing mode for polygons inside Marble. <br />
* Adding, moving and removing nodes. <br />
* Possibly merging nodes and other features that tools like inkscape provide for node interaction<br />
* Assignment of lables, outline color and fill color.<br />
* Possibly editing of "holes" inside the Polygon.<br />
<br />
'''Knowledge Prerequisite:''' C++ and Qt. Would-be applicants are expected to work on junior jobs (possibly related to the project). Try to find your way into http://marble.kde.org/dashboard.php#contributors and solve as many tasks and bugfixes as possible.<br />
<br />
'''Mentor:''' Torsten Rahn and other Marble developers.<br />
<br />
<br />
=== KDE Edu ===<br />
<br />
==== Project: Sound Visualization and Sound Effects in Artikulate ====<br />
'''Brief explanation:''' Artikulate is a language learning application that focus on improving a learner's pronunciation skills by repeating native speaker recordings, recording that try and comparing boths. By repeating these trials, a learner can continuously improve his/her language skills. There are areas for this project:<br />
# native speaker recordings are recorded (either by GStreamer or QtMultimedia), converted to an OGG file and saved. What is missing is an application of noise cleanup filters, removing of no-sound intervals, and normalization (possibly combined with a very basic sound editor)<br />
# when playing and comparing sounds, there is no visual feedback about how much the soundwaves differ: plotting the soundwaves in a reasonable format <br />
'''Goals:''' The goal is to extend the sound processing in Artikulate to<br />
# Implement simple sound filters for normalization, noise removal, removal of white noise and integrate sound postprocessing into the editor workflow<br />
# Implement plotter for soundwaves and integrate this in the training mode<br />
Yet for both it is important to research which libraries already exist and possibly could be reused. Also, research is needed about which techniques for comparing the soundwaves is appropriate. A proposal should already contain verbose information about these questions.<br />
<br />
'''Knowledge Prerequisite:''' a must is knowledge of C++ and Qt, a plus is knowledge of sound processing libraries (e.g. GStreamer) or experience in sound processing<br />
<br />
'''Mentor:''' Andreas Cord-Landwehr and/or other people from KDE Edu<br />
<br />
==== Project: Semi-Automatic Generation of Language Lessons for Parley ====<br />
<br />
'''Brief explanation:''' Parley is an advanced vocabulary trainer with features like 8 different learning modes, including flashcards, genders of nouns, conjugation of verbs and several more. A lesson for Parley is encoded in kvtml, KDE Vocabulary Training Markup Language which is an XML format for vocabulary lessons of many different types.<br />
<br />
But it is a relatively demanding task to create good lessons for Parley. You need to manually edit a list of words in several different languages, add images and/or sound clips to them all, word class, pronounciation, etc.<br />
<br />
We would like to create a semi-automatic generator for lessons using the Kexi database in the Calligra suite. The workflow will be something like this.<br />
<br />
# You use an import script to import a selected part of the word list in wiktionary.org, an online wiki dictionary, into Kexi. This will then form the basis for the work on the lessons. <br />
# You define a list of words in the so called primary language, which is the language that the lesson is supposed to teach. This list will be the words only and could be created either using the editor inside Parley or a standard text editor and then import it into Parley.<br />
# You define which secondary languages you want in your lesson. These languages are the ones that the student is already familiar with. The training session will then consist of translations from one of the secondary languages (most often the native language of the student) and the primary language. At this point you also define which other parameters you want to include in the lesson, like image, sound clip, phonetic text, explanation, etc.<br />
# You invoke the automatic lesson generator which will search for the words you have defined in the database, look up suitable translations and add the other fields that you asked for.<br />
# If necessary, patch up the newly generated lesson with missing data that wasn't present in the database or add the information to the database and redo the generation.<br />
<br />
'''Goals:''' The goal is to create software that supports the workflow above. It will at least comprise the following tasks:<br />
# Define an efficient database schema for the words and translations. Wiktionary.org has 3.6 million entries and even a subset of that can take significant amounts of storage.<br />
# Implement a script that reads from wiktionary.org and enters the data into the Kexi database using the calligradb library. There is already a script for downloading and parsing the contents of Wiktionary at [1] but you will have to adapt it to Kexi. <br />
# Implement the code that searches the database and populates the lesson with the data found.<br />
# (If time permits) Implement a more advanced lesson editor than is currently present in Parley or a stand-alone editor.<br />
<br />
'''Knowledge Prerequisite:''' Good knowledge of C++ and Qt, a plus is knowledge of of kvtml and the related C++ classes in the kde edu libraries. Also some knowledge of databases and database searches.<br />
<br />
'''Mentor:''' Jaroslaw Staniek, the maintainer of Calligra Kexi, with help from Inge Wallin<br />
<br />
[1] http://en.wiktionary.org/wiki/Help:FAQ#Downloading_Wiktionary<br />
<br />
==== Project: Kig - Geogebra Support ====<br />
[http://edu.kde.org/applications/mathematics/kig/ Kig] is an application for interactive geometry.<br />
<br />
'''Goals:''' The overall goal is to support Geogebra files in KDE Edu. Because Geogebra is both a plotting tool and a tool for interactive geometry, the stated goal is very broad. For this particular project, we are interested in supporting interactive geometry in Kig. The current progress towards this goal is in the [https://projects.kde.org/projects/kde/kdeedu/kig/repository/show?rev=geogebra geogebra] branch of Kig's repository. Since there is some progress towards that goal, the particular goal of supporting these files in Kig may or may not be smaller than a GSoC project, in which case we can move forward to implement support for these files in the many plotting tools we have in KDE Edu.<br />
<br />
'''Knowledge Prerequisite:''' By the start of GSoC you should<br />
# Be familiar with Kig as a user<br />
# Be familiar with Geogebra as a user<br />
# Be familiar with Git, you will have to work with branches<br />
# Be able to build Kig<br />
# Be familiar with Kig's filter code: Kig is a large code base, so you are not expected to know everything about it, but you should at least be familiar with how filters are created and be able to modify filters since this will be the part of the code that you will be working with.<br />
<br />
'''Mentor:''' David Narvaez (IRC: dMaggot, please [[User:DMaggot/Mentoring|read this]] before applying)<br />
<br />
==== Project: Kig - Analitza Integration (Experimental) ====<br />
[http://edu.kde.org/applications/mathematics/kig/ Kig] is an application for interactive geometry.<br />
<br />
'''Goals:''' Kig's core is full of code to deal with finding solutions to linear or quadratic equations which are the bulk of interactive geometry. While this code works, in many cases it does so by approximations and it is, in general, very convoluted. The goal of this project is to implement all of this code in terms of a [https://en.wikipedia.org/wiki/Computer_algebra_system CAS] to address both of the disadvantages mentioned before. Analitza is an "in-house" library that deals with mathematical expressions, and is thus a good candidate for a CAS provider in Kig. This project is experimental because:<br />
# Implementing everything in terms of a CAS may or may not improve code quality in terms of readability. If it doesn't (and we would only know this at the end of the project), the implementation of this project will not make it to the master branch.<br />
# Analitza may or may not be up for all of the tasks we need to do in Kig, in which case improving Analitza is an option.<br />
<br />
'''Knowledge Prerequisite:''' By the start of GSoC you should<br />
# Be familiar with Kig as a user<br />
# Be familiar with Analitza as a consumer (it is a library, so you would not be a "user")<br />
# Be able to build Kig<br />
# Be able to build Analitza<br />
# Be familiar with Kig<br />
# Be familiar with Kig's object hierarchy and the mathematics behind that<br />
<br />
'''Mentor:''' David Narvaez (IRC: dMaggot, please [[User:DMaggot/Mentoring|read this]] before applying)<br />
<br />
==== Project: Integrate Cantor into LabPlot====<br />
[http://labplot.sourceforge.net/ LabPlot] is a KDE-application for interactive graphing and analysis of scientific data.<br />
<br />
'''Brief explanation:''' The integration is twofold:<br />
<br />
# currently, for the created plots LabPlot uses either the data provided by hand in a spreadseet or by using data imported from external ascii-files. By having Cantor within LabPlot it should be possible to access the data sets created in a computer algebra session (say Maxima) provided by Cantor. Cantor's session have to be integrated into LabPlot's model-view framework and have to be put onto the same foot as all the other objects managable in LabPlot (spreadsheet, worksheets etc.).<br />
# By calling a CAS-specific command for creating a 2D-plot in Cantor, Cantor creates an external process that renders the plot and embeds the result as a pixmap. Instead of such a static pixmap, LabPlot's plots should be embeded. This would provide high degree of control of the plot appearance as provided by LabPlot.<br />
<br />
'''Mentor:''' Alexander Semke<br />
<br />
==== Project: Integrate [http://en.wikipedia.org/wiki/VTK VTK] into LabPlot, investigate [http://en.wikipedia.org/wiki/Tulip_(software) Tulip] ====<br />
[http://labplot.sourceforge.net/ LabPlot] is a KDE-application for interactive graphing and analysis of scientific data.<br />
<br />
'''Brief explanation:'''<br />
# LabPlot lacks 3D-functionality. In the old KDE3-based LabPlot qwt3D was used for this that is not an option anymore. The task consists of the integration of [http://en.wikipedia.org/wiki/VTK VTK] -libs. Also, the relevant widgets for 3D-plot editting should be created in a manner similar for all the other objects available in LabPlot now.<br />
# Investigate whether it's reasonable to use LabPlot as a frontend (or to extend it to be a frontend) to the functionality provided by [http://en.wikipedia.org/wiki/Tulip_(software) Tulip] yes, how?<br />
<br />
'''Mentor:''' Alexander Semke<br />
<br />
===Krita===<br />
We welcome students who want to work on Krita for Google Summer of Code. If you want to work on Krita, keep in mind that we would like you to stay with the project, also outside Summer of Code. Summer of Code isn't just a summer job with some mentoring added -- it's a way of becoming part of the team.<br />
<br />
If you haven't worked on Krita before, we want you to demonstrate your skill beforehand by fixing bugs or implementing some features. It's a good idea to start on that in January. Here is a list of pre-gsoc ideas:<br />
<br />
==== Project: Painting and Separation of 3D Textures====<br />
<br />
As one of it’s use cases, Krita’s vision statement includes painting textures for 3D. 3D textures are typically comprised of a number of separate black and white, RGB or RGBA images. Thus painting for textures typically requires painting on more than one single layer / channel at a time. For example painting a scratch into a metal surface may require painting black onto the bump channel, another colour on the diffuse channel, and another to the specularity channel (as well as possibly some others such as the displacement channel). All of these are affected simultaneously.<br />
<br />
Currently Krita’s painting system is only able to paint onto single layers at a time and brushes have not been designed in such a way as to allow adjusting multiple channels simultaneously as would be needed. This topic would require looking at how Krita’s current painting system could be extended to paint the necessary adjustments to the channels used in 3D rendering, show the textures created in OpenGL and then export those channels for use in 3D applications.<br />
<br />
==== Project: 3D Material Image Maps====<br />
<br />
3D materials are made up of a bunch of images called image maps. If the user could associate layers as image maps in Krita, and paint on all of them at the same time, artists could paint whole 3D materials - something currently only available in high end 3d apps like zBrush (not even Photoshop / Corel Painter). The trick is that the position of what's painted needs to match on every map/layer, but the colours vary. For example, a scratch on a human characters skin would have a red colour map, a white (=raised) bump map, a light grey (=semi-shiny) specularity map etc, all in the exact same location on the each image map. Traditional methods of trying to create each image from scratch or by manipulating the colour map are very, very slow and painful. A simple version of this could be done as follows:<br />
<br />
* Each layer has a toggle in the layers docker called "texture map" or similar. This is turned off by default. When active, the brush paints on *all* layers that currently have "texture map" active.<br />
<br />
* When picking a colour, a dropdown lets the user pick "Default" or any active texture map layer. "Default" is just the current behaviour. If the user selects a layer in the dropdown, then the selected colour will be applied to that layer when painting on *any* layer.<br />
* In the file or layer menu is an option "Export texture maps" which saves each texture map layer as an image. The layer name and extension appended automatically to the file name. For example, on a file called character.kra, the layer titled "colour" would be saved as "character-colour.jpg" (or whatever format was selected).<br />
<br />
For step 3, a simple, one click / shortcut, method is vital, as artists often have to check their material in their 3d app every few minutes, and wading through saving 10 layers individually, each with manual file naming and confirming file format settings each time is unacceptably slow. For any artist who requires this level of control, they can use Layers menu -> "Save Layer as Image" already in krita.<br />
<br />
Allowing artists to paint a single material rather than creating multiple separate image maps by hand, would make Krita formidable for painting 3D textures, and the most advanced open source application for 3D texturing.<br />
<br />
==== Project: Matte painting====<br />
<br />
One of Krita's main use cases is as a professional tool for painting textures and mattes in digital film. Mattes are primarily made of sequences of images generated by a combination of two methods, first by animatable spline based shapes, which currently exists and is being developed in blender, and then after that, by hand painting frames for detailed areas and corrections. The trouble is that no currently maintained FOSS application currently tries to provide the ability to create hand painted mattes. This project is to extend Krita for this purpose. What's needed here is the following:<br />
* The ability for Krita to load manually selected sequences of color managed images as frames to be represented as a single layer in Krita. Optionally would be the ability to display playback at reduced resolutions to increase performance and to offset the time at which sequences were inserted.<br />
* A “Timeline” docker which would display the current frame displayed, and allow clicking and dragging to different points in time, updating the image displayed in the canvas to match. Optional would be the ability to zoom and scroll the timeline, mark modified frames on the timeline, playback the image sequence, forwards and backwards as video (most likely only in the openGL mode of Krita or with an external tool like ffplay) and display times in a range of formate EG SMTP, PAL, NTSC, Secam etc.<br />
* Updating the paint and transparency layer types, so that when Krita is using a frame sequence and one of these layer types is created, they also represent a series of frames rather than just a single image. This could possibly be a toggle switch on layers, much as visibility, alpha lock etc. are now.<br />
* The ability to save layers that are displaying frame sequences out as frame sequences also, giving them user definable names (eg where to insert the frame number, how many digits to pad).<br />
* Keyboard shortcuts to move forwards and backwards 1/10/100 frames, to jump to the start and end of the timeline and forward / backwards play if video playback is supported.<br />
<br />
==== Project: Cartoon Text Balloon System====<br />
<br />
Krita already has two text tools, but neither is suited for creating cartoon balloons. The system should allow the creation of vector-based balloons in different styles. The balloons can contain styled text. The text and balloons should be translatable and a system to select the current language should be created. It should be possible to save the balloon text to a separate file that can be used as input for translations. Finally, care must be taken to support right-left languages.<br />
<br />
==== Project: Substrate simulation ====<br />
<br />
'''Brief explanation''': Substrates for painting and drawing have a direct influence on the result of the art. The goal of this project is bringing this richness of these effects to Krita. There is an existing body of literature and academic projects on this topic, with Bill Baxter and Tom van Laerhoven being among the best known researchers. For the right effect, we need to take care of the 3d structure of the substrate, it’s effect on paint tools -- smoothness, absorbency and other parameters. An interesting option is to make it possible to apply different substrates to existing paintings.<br />
Expected results: an optional substrate simulation that works with all current Krita tools<br />
<br />
==== Project: Real Paint Emulation ====<br />
<br />
We already did some research on the emulation of real-world paint and we do already have some essential pieces of it: Hairy Brush and Bumpmap filter. Now we need to bring this all together and allow a painter to use it easily, so that he could paint images like that: TODO. This project would involve creation of a special type of layer and a new colorspace, so the student should already be familiar with our layer stack and pigment code.<br />
<br />
==== Research Project: layer stack optimizations ====<br />
<br />
Right now when one layer got changed our merger should walk through all the layers of the current group and compose all of them into projection one by one. But this doesn't take into account that COMPOSITE_OVER (which is the most popular composition mode) has an associativity property, which means we can merge all the layers below and all the layers above dirty one into two groups, and calculate a group of any size with only two composition operations, which would give huge speed advantages.<br />
<br />
Unoptimized group:<br />
<br />
* layer 6<br />
* layer 5<br />
* layer 4<br />
* layer 3 <-- active layer (becomes dirty quite often)<br />
* layer 2<br />
* layer 1<br />
<br />
Optimized group:<br />
<br />
* <flattened 4-6><br />
* layer 3 <-- active layer (becomes dirty quite often)<br />
* <flattened 1-2><br />
<br />
After this project is done, we can start implementing layer composition on the GPU using openGL.<br />
<br />
==== Project: Improved Animation Brush System ====<br />
This should result in animation brushes being more readily available and adjustable. The current way of doing this is not as userfriendly as it could be.<br />
<br />
*Dedicated "Animation Brush GROUP"-> everything in group is a frame of the animation. (for use in current file,instead of in another instance of krita)<br />
*Convert group to animation group ->Normal group becomes animation brush reference.<br />
*Save as animation brush PRESET<br />
*options to set animation brush continuity to custom, random, incremental, pressure,angular,loop...<br />
*animation brush presets (in settings) need a timeslider to flip through the available frames<br />
<br />
https://bugs.kde.org/show_bug.cgi?id=322159<br />
<br />
==== Project: seamless textures by using UV layout as self-wrapping paint mask====<br />
This is a tool that should help in creating seamless (or as close as possible) textures for organic models. It will help in painting creases and other details across seams.<br />
http://www.sintel.org/wp-content/uploads/2010/01/face_uv_export.png<br />
<br />
*Convert intersections on uvlayout to seam transfer points.<br />
*use those points to transfer painted strokes to connected points on other side (set by user) <br />
*create userfriendly way to add,manage those seam transfer points. (multiple should be active at once)<br />
<br />
https://bugs.kde.org/show_bug.cgi?id=324072<br />
<br />
ALTERNATIVE<br />
*Similar to previous idea,but with movable curves/grid with adjustable seam transfer points in stead of converting a whole UV layout automaticly<br />
<br />
https://bugs.kde.org/show_bug.cgi?id=321547<br />
<br />
More ideas for projects can be found here:<br />
https://bugs.kde.org/buglist.cgi?cmdtype=runnamed&namedcmd=Wishlist%20count&list_id=884686<br />
<br />
=== Kexi ===<br />
Kexi is a visual database creator. It can be used for designing database applications, inserting and editing data, performing queries, and processing data.<br />
<br />
More info: [[Kexi|Developers' wiki]], [http://www.calligra.org/kexi web site for users], [https://mail.kde.org/mailman/listinfo/calligra-devel mailing list], IRC channel: #kexi and #calligra on Freenode.<br />
<br />
==== Project: Add support for importing tables from LibreOffice Base to Kexi ====<br />
<br />
'''Brief explanation:''' Add support for importing (Kexi calls it data/design migration) tables from LibreOffice (or OpenOffice) Base (ODB format) to Kexi. This task involves research on ODB format (it's relatively openly defined). Qt/C++ shall be used for the task, not any Java engine (HSQL db). This could be introduction to later development of complete database import from ODB to a Kexi database.<br />
<br />
'''Expected results:''' In the GUI the feature shall be put in the same place as the import from MDB: External Data -> Import Tables -> Table Importing Wizard. Then user would see .odb support in the open file dialog, just like it has access to importing CSV or MDB.<br />
<br />
'''Knowledge Prerequisite:''' C++, some Qt, some databases, some XML, software architecture<br />
<br />
'''Mentor:''' [[User:Jstaniek|Jarosław Staniek]] (Kexi maintainer)<br />
<br />
'''First steps''':<br />
:*See [http://wiki.openoffice.org/wiki/FAQ_(Base)] for a start.<br />
:*Sample .odb databases are available for [http://www.floppybunny.org/robin/web/virtualclassroom/chap8/libreoffice_base.html this] tutorial.<br />
:*Studying kexi/migration/importtablewizard.cpp which is a GUI taking an instance of implementation of a migrate driver derived from KexiMigration::KexiMigrate (in your case - the ODB driver). It's the m_migrateDriver attribute.<br />
:*Implementing plugin (needed methods of the driver) in migration/odb/ by looking how it was performed for other cases, e.g. for mysql (see kexi/migration/mysql/ dir) or other cases such as pqxx, txt, xbase, sybase or mdb<br />
:*In the actual C++ implementation, KoOdfReadStore class from calligra libs can be used to read contents of the .odb.<br />
<br />
=== Calligra Plugins ===<br />
<br />
Calligra is an office suite with lots of different applications with an user interface that is easy to use, highly customizable and extensible.<br />
<br />
More info: [http://www.calligra.org web site for users], [https://mail.kde.org/mailman/listinfo/calligra-devel mailing list], IRC channel: #calligra on Freenode.<br />
<br />
==== Project: Variable thickness lines ====<br />
<br />
'''Brief explanation:''' One of the most fundamental basics of drawing is varying the width of your lines to show shape, form and perspective. Almost every line tapers at either end, and often gets thicker and thinner in different places as needed. For purely technical and histrorical reasons though, every vector program (Illustrator, Inkscape, Karbon etc) make curves all one hard width. <br />
This proposal is to create a variable width path shape / tool, much like the path tool, would allow drawing curves, but where each node could have its width set so that the line width changed smoothly from node to node. <br />
As a plugin for the Calligra suite, this would clearly benefit apps as Karbon and also Krita.<br />
<br />
'''Expected results:''' variable width path tool is able to change the width of any path node to an arbitary percentage (say 155%) of the stroke width. See http://bugsfiles.kde.org/attachment.cgi?id=56995 for mockup. The shape needs to be able to save and load in svg/odf.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt, SVG?<br />
<br />
'''Mentor:''' Thorsten Zachmann < zachmann @ kde dot org ><br />
<br />
=== Keyboard Layouts ===<br />
<br />
Keyboard layouts in KDE allow user to use multiple keyboard layouts and switch between them. It consists of keyboard configuration module (in System Settings), keyboard layout widget/applet, and keyboard layout daemon.<br />
<br />
==== Project: Integrating Input Methods with keyboard layout configuration ====<br />
<br />
'''Brief explanation:''' Input method and keyboard layout configuration are serving the same purpose - to allow users to type text in non-default language. Currently KDE has integrated system to configure keyboard layouts but IM need to be configured somewhere else. Also when IM is configured it takes over some functions of keyboard layout configuration. So it would be nice if we could have IM and keyboard layout configuration in one place.<br />
It seems that IBus has already gained community acceptance so this will be the target for integration into KDE keyboard module.<br />
<br />
'''Expected results:''' Keyboard configuration module in System settings will include IM configuration and it will be integrated with existing keyboard layout options.<br />
<br />
'''Knowledge Prerequisite:''' good knowledge of C++, development experience with Qt and KDE, understanding of Input Methods (IBus)<br />
<br />
'''Mentor:''' Andriy Rysin <arysin@gmail.com><br />
<br />
=== KDevelop ===<br />
<br />
==== Project: Clang Integration ====<br />
<br />
'''Brief explanation:''' Finish the kdev-clang plugin to make it a usable replacement for the existing C++ plugin.<br />
<br />
'''Expected results:''' All advanced features of the KDevelop C++ are ported to the kdev-clang plugin. This includes code completion helpers, as well as basic refactoring and assistant integration.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt. Knowledge about Clang is helpful<br />
<br />
'''Mentor:''' Milian Wolff<br />
<br />
==== Project: Checker Framework ====<br />
<br />
'''Brief explanation:''' A generic framework should be created which provides the foundation for other plugins to report errors. <br />
<br />
'''Expected results:''' Right now we have the problems toolview but it is tightly coupled to the DUChain. This should be changed to use a separate item repository which stores the problems for a given path. The data stored would be: Path and range of where the issue is found, a short error message and optionally a long description. Furthermore, plugins might want to store additional info from which the problem could be fixed (compare to the 'add include path' or similar wizards we have already in the language framework).<br />
<br />
This framework should then be used to integrate various tools.<br />
<br />
First of all the existing language plugins should show the problems they find there.<br />
The existing playground plugins for krazy and cppcheck integration should reuse that framework<br />
any other linters could be integrated, such as jslint, pylint etc. pp.<br />
runtime checkers could be integrated, such as valgrind's memcheck, ptrcheck, helgrind, drd, ...<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt. Knowledge of linters such as Valgrind etc. is helpful.<br />
<br />
'''Mentor:''' Milian Wolff<br />
<br />
==== Project: SVN Plugin Rewrite ====<br />
<br />
'''Brief explanation:''' Rewrite the SVN plugin to use the C-API directly.<br />
<br />
'''Expected results:''' The existing SVN plugin uses an outdated kdevsvncpp checkout internally which causes troubles, warnings and licensing issues. Port the plugin to either the C-API of svn or alternatively try to reuse code from current kdevsvn. The result should be a tested, working plugin for SVN integration without licensing issues nor compile time warnings about usage of deprecated API.<br />
<br />
'''Knowledge Prerequisite:''' C, C++, Qt, SVN<br />
<br />
'''Mentor:''' Milian Wolff<br />
<br />
=== KDE PIM ===<br />
<br />
The KDE PIM community work on a set of libraries and applications for Personal Information Management, including email, calendaring, contacts, and feed aggregation.<br />
<br />
==== Project: OpenHolidays ====<br />
<br />
'''Brief explanation:''' The KHolidays library provides KDE applications with information on public holidays around the world, however the file format is very hard to use and maintain and the library features are very limited and restricted to Qt users. The goal of the OpenHolidays project is to develop a new open standard and data repository that can be used by any project that needs the data. See http://community.kde.org/KDE_PIM/KHolidays for more details.<br />
<br />
'''Expected results:''' Define the new JSON file format and port the existing data files to the new format. Develop a shared Qt-only library to parse the holiday files and provide access to them with a iCal style event-based api. Implement an Akonadi resource to access the data. Extended goals: Develop a JavaScript library to use the files. Develop a web site and web service at openholidays.org to provide online access to the data files.<br />
<br />
'''Knowledge Prerequisite:''' C++ and Qt for core goals, JavaScript and web services for extended goals.<br />
<br />
'''Mentor:''' John Layt and other KDE PIM community members.<br />
<br />
==== Project: Enhanced Searching in KMail ====<br />
<br />
'''Brief explanation:''' KMail is the defacto email client in KDE. It currently has a complex search dialog which allows the users to configure many different parts of the search. While it is very powerful, it is not very usable. A better search dialog is required which allows the user to modify the initial search and filter the data appropriately. A good example of this would be the Thunderbird search dialog - https://support.mozillamessaging.com/media/uploads/gallery/images/2011-03-14-10-05-42-56151b.jpg<br />
<br />
'''Expected results:''' Implementing the new search dialog and updating the backend search code to include whatever new features are required. Implementing this search dialog will require messing around with Akonadi, Baloo and KPeople.<br />
<br />
'''Knowledge Prerequisite:''' C++ and Qt. A basic understanding of Information Retrieval would be nice.<br />
<br />
'''Mentor:''' Vishesh Handa and other KDE PIM community members.<br />
<br />
==== Project: Active Mail ====<br />
'''Brief explanation:''' Active Mail is a QtQuick based mail application, a touch input friendly version of KMail so to speak. Currently it still depends on QtWidget based user interfaces for certain tasks which will have to be replaced before Active Mail can live up to its promise. Such missing pieces are the email composer and the email viewer. <br />
<br />
'''Expected results:''' Define and implement a general QtQuick API for composing emails. Rework the Active Mail composer UI/UX with the help of our usability expert and make it shine.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt, QtQuick<br />
<br />
'''Possible Mentors:''' Thomas Pfeiffer, Michael Bohlender, Kevin Krammer<br />
<br />
==== Project: QtQuick ToDo API / Plasmoid====<br />
<br />
'''Brief explanation:''' KDE PIM wants to make it's data accessible for applications which use QML to declare their user interfaces, e.g. applications using QtQuick. For that they need data handling objects that are accessible through QML, e.g. item models that have a mapping of string based role names to enum value based roles in C++, etc.<br />
<br />
'''Expected results:''' Define and implement a general QML API for accessing and creating Akonadis ToDo data. Write / Port a ToDo Plasmoid for Plasma Desktop or Plasma Active to show off the new API. Bonus: Port Kontact Touch Task to the new API instead of, or in addition to the Plasmoid.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt, QtQuick<br />
<br />
'''Possible Mentors:''' Kevin Krammer, Michael Bohlender and other KDE PIM community members<br />
<br />
====Project: KPeople / Kontact Touch People====<br />
<br />
'''Brief explanation:''' KPeople is a KDE framework for aggregating contact information of people from various data sources, e.g. the user's addressbook and instant messaging programs. For the future KDE would like this to be the main source of data for its address book application.<br />
<br />
'''Expected results:''' Define and implement a QML API for accessing kPeoples features. Create a pretty QtQuick example App/Plasmoid to show off and prove the API. Bonus: Bonus: Port Kontact Touch Addressbook to the new API instead of, or in addition to the Example.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt, QtQuick<br />
<br />
'''Possible Mentors:''' Martin Klapetek, Thomas Pfeiffer and other KDE PIM community members<br />
<br />
==== Project: Akonadi Commandline/Shellscripting Interface ====<br />
<br />
'''Brief explanation:''' Akonadi is a system that enables uniform access to various data formats across a wide range of data sources. Its main clients are graphics end user applications such as KMail. However, in some cases it is advantageous if data manipulation can be automated.<br />
Power users or system administrators often employ the multitudes of Unix/Linux commandline tools to achieve such automation tasks. The idea is to provide a tool or set of tools that allow Akonadi operations to be used in such scripts.<br />
<br />
'''Expected results:''' A non-GUI program able to perform useful tasks on Akonadi provided data, like creating folders, adding/deleting/copying/moving data such as contacts or emails, etc.<br />
<br />
'''Knowledge Prerequisite:''' C++, Shell scripting<br />
<br />
'''Mentor:''' Jonathan Marten, Kevin Krammer and other KDE PIM community members<br />
<br />
'''Resources:''' An early prototype can be found here https://projects.kde.org/projects/playground/pim/akonadiclient and there are two, non-Akonadi, clients which are part of KDE PIM: kabbclient (contacts), konsolecalendar (calendar)<br />
Contact the kde-pim mailinglist for discussions: https://mail.kde.org/mailman/listinfo/kde-pim<br />
<br />
<br />
=== Simon ===<br />
Simon is a speech recognition suite.<br />
<br />
[http://simon.kde.org Website] - [https://mail.kde.org/mailman/listinfo/kde-speech Mailing list] - IRC channel: #kde-speech on Freenode.<br />
<br />
==== Project: Streamline handling of various resources ====<br />
<br />
'''Brief explanation:''' Simon uses a multitude of different components: Scenarios, Base models, Shadow vocabulary, Language profiles, etc.<br />
<br />
While many of these components can be downloaded from within Simon, some can't and even for those that are better integrated, end-users still have to read additional documentation to know which components work together and which don't.<br />
<br />
The aim of this project is to bring the handling of these resources under a uniform and user-friendly interface.<br />
Specifically, the interface should resolve conflicts automatically and deduce an optimal default setup by itself (e.g. based on the system language and installed programs).<br />
<br />
'''Expected results:''' Much more user friendly setup.<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt<br />
<br />
'''Mentor:''' Peter Grasch <peter {+at+} grasch.net><br />
<br />
'''Resources:''' Some work (mostly brainstorming and UI design) was already conducted during Season of KDE 2013. Please contact me for details. This does not mean that this project is already assigned!<br />
<br />
=== KDE Telepathy===<br />
<br />
==== Project: Conference Video Call Support ====<br />
<br />
'''Brief explanation:''' Our current IM client can handle a 1-1 video call reasonably well. It currently does not<br />
support conference calls (>2 people). Our backend Telepathy should support this, but we do not make use of it in our client. This project will involve<br />
* some UI design<br />
* some low level GStreamer work<br />
* fixing parts of the Telepathy stack.<br />
<br />
Current code is inside the repository ktp-call-ui.<br />
<br />
'''Expected results:'''<br />
Working multi conference video calls.<br />
<br />
'''Knowledge Prerequisite:'''<br />
* C++, Qt<br />
* Ideally; QML, GStreamer and Telepathy<br />
<br />
'''Mentor:''' David Edmundson and Diane Trout<br />
<br />
==== Project: Telegram Network Support ====<br />
<br />
'''Brief explanation:''' Telegram is an upcoming network that aims to replace WhatsApp. Unlike whatsapp it has an open protocol (https://telegram.org/) and is gaining popularity.<br />
<br />
We want support in our IM client. This should be done by creating a connection manager using TelepathyQt service bindings. <br />
<br />
When this is complete, not only will we get Telegram support, but due to the distributed nature of Telepathy it will also work for Jolla, Ubuntu Phone and Empathy.<br />
<br />
'''Expected results:'''<br />
Working single and group chats using KDE Telepathy over the Telegram network<br />
<br />
'''Knowledge Prerequisite:'''<br />
C++, Qt, Reading Protocol Documentation<br />
<br />
'''Mentor:''' David Edmundson<br />
<br />
=== Solid ===<br />
==== Project: iOS Integration ====<br />
'''Brief explanation:''' Integrate the iOS platform with the Plasma desktop using libraries like libimobiledevice and kdeconnect.<br />
<br />
'''Expected results:''' Have an iOS application that is able to talk to KDE Connect and desktop integration using libimobiledevices.<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt, Objective C<br />
<br />
'''Mentor:''' Àlex Fiestas <afiestas {+at+} kde.org><br />
<br />
'''Resources:''' libimobiledevice, kdeconnect, plasma<br />
<br />
==== Project: Make Libbluedevil Async ====<br />
'''Brief explanation:''' Extend libbluedevil to have an asynchronous api, and port bluedevil to it.<br />
<br />
'''Expected results:''' libbluedevil should have an asynchronous api, and bluedevil should be ported to them.<br />
<br />
'''Knowledge Prerequisite:''' basic Qt and DBus<br />
<br />
'''Mentor:''' Àlex Fiestas <afiestas {+at+} kde.org><br />
<br />
'''Resources:''' libbluedevil, bluedevil, afiestas<br />
<br />
==== Project: Improve sharing experience ====<br />
'''Brief explanation:''' Improve the content sharing experience in Plasma by extending and improving Samba share, implementing other ways of sharing and write new ways of discovering other people's shares.<br />
<br />
'''Expected results:''' It should be possible to discover "shares" using dolphin (possibly via a new kioslave?) and it should be possible to share a folder between two Plasma computers really fast and easy (possibly implementing an http server plus discovery via avahi).<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt, extra points for KIO experience.<br />
<br />
'''Mentor:''' Àlex Fiestas <afiestas {+at+} kde.org><br />
<br />
'''Resources:''' avahi, http, kdenetwork-fileshare<br />
<br />
=== Plasma Media Center ===<br />
KDE's Plasma Media Center (PMC) is aimed towards a unified media experience on PCs, Tablets, Netbooks, TVs and any other device that is capable of running KDE software. PMC can be used to view images, play music or watch videos. Media files can be on the local filesystem or accessed with KDE’s Desktop Search.<br />
<br />
==== Project: Integrate with Simon ====<br />
<br />
'''Brief explanation:''' Simon is an open source speech recognition program that can replace your mouse and keyboard. The system is designed to be as flexible as possible and will work with any language or dialect. This project aims at integrating it with Plasma Media Center to control it.<br />
<br />
'''Expected results:''' Using Simon, the user should at least be able to use voice to -<br />
* Control playback of media (images, music, videos)<br />
* Navigate in the media browser (next page, previous page, "goto the 3rd item")<br />
* Home Screen navigation<br />
* Ability to switch to the player, image viewer, or playlist<br />
* Play a media file in the browser (or the playlist, when its shown) using its name<br />
<br />
'''Knowledge Prerequisite:''' Basic C++, Qt and QML<br />
<br />
'''Mentor:''' Shantanu Tushar <shantanu {+at+} kde.org> and Peter Grasch <peter {+at+} grasch.net><br />
<br />
==== Project: Integrate with Plasma Next ====<br />
<br />
'''Brief explanation:''' Plasma Next is the refreshed Plasma workspace written using the new Qt5 and QtQuick2 frameworks. Plasma Next is able to switch to different modes/formfactors on-the-fly (such as desktop, netbook, tablet). We want to be able to make Plasma Next able to switch into a media center mode.<br />
<br />
'''Expected results:''' After the project is complete, the Plasma Next shell should be able to switch to a Media Center mode and offer every feature that the standalone Plasma Media Center application provides. Examples are ability to browse media, playback, playlists etc.<br />
<br />
'''Knowledge Prerequisite:''' Qt, QML is required. Understanding of Plasma Next is a huge plus<br />
<br />
'''Mentor:''' Shantanu Tushar <shantanu {+at+} kde.org></div>Shantanu Tusharhttps://community.kde.org/index.php?title=GSoC/2014/Ideas&diff=36611GSoC/2014/Ideas2014-02-25T06:41:01Z<p>Shantanu Tushar: Add Plasma Media Center idea</p>
<hr />
<div>[[Category:Mentoring]]<br />
See also: [[../../|GSoc Instructions]], [[../../2013/Ideas|Last year ideas]]<br />
<br />
== Guidelines ==<br />
<br />
=== Information for Students ===<br />
<br />
These ideas were contributed by our developers and users. They are sometimes vague or incomplete. If you wish to submit a proposal based on these ideas, you may wish to contact the developers and find out more about the particular suggestion you're looking at.<br />
<br />
Being accepted as a Google Summer of Code student is quite competitive. Accepted students typically have thoroughly researched the technologies of their proposed project and have been in frequent contact with potential mentors. Simply copying and pasting an idea here will not work. On the other hand, creating a completely new idea without first consulting potential mentors is unlikely to work out.<br />
<br />
When writing your proposal or asking for help from the general KDE community don't assume people are familiar with the ideas here. KDE is really big!<br />
<br />
If there is no specific contact given you can ask questions on the general KDE development list kde-devel@kde.org. See [http://www.kde.org/mailinglists/ the KDE mailing lists page] for information on available mailing lists and how to subscribe.<br />
<br />
=== Adding a Proposal ===<br />
<br />
{{Note|Follow the template of other proposals!}}<br />
<br />
==== Project: ====<br />
<br />
'''Brief explanation:'''<br />
<br />
'''Expected results:'''<br />
<br />
'''Knowledge Prerequisite:'''<br />
<br />
'''Mentor:'''<br />
<br />
When adding an idea to this section, please try to include the following data:<br />
<br />
:*if the application is not widely known, a description of what it does and where its code lives<br />
:*a brief explanation<br />
:*the expected results<br />
:*pre-requisites for working on your project<br />
:*if applicable, links to more information or discussions<br />
:*mailing list or IRC channel for your application/library/module<br />
:*your name and email address for contact (if you're willing to be a mentor)<br />
<br />
If you are not a developer but have a good idea for a proposal, get in contact with relevant developers first.<br />
<br />
<br />
==Ideas==<br />
<br />
===Your Own Idea ===<br />
<br />
==== Project: Something that you're totally excited about ====<br />
<br />
'''Brief explanation:''' Do you have an awesome idea you want to work on with KDE but that is not among the ideas below? That's cool. We love that! But please do us a favor: Get in touch with a mentor early on and make sure your project is realistic and within the scope of KDE. That will spare you and us a lot of frustration.<br />
<br />
'''Expected results:''' Something you and KDE loves<br />
<br />
'''Knowledge Prerequisite:''' Probably C++ and Qt but depends on your project<br />
<br />
'''Mentor:''' Try to see who in KDE is interested in what you want to work on and approach them. If you are unsure you can always ask in #kde-soc on Freenode IRC.<br />
<br />
=== Amarok ===<br />
<br />
==== Project: Lyric support improvements ====<br />
<br />
'''Brief explanation:''' Amarok's support for fetching and displaying of lyrics is very limited. It just fetches from a single provider and many times no results are fetched, sometimes due to minor errors in track/album/artist name. Add some more providers of online lyrics databases. If no results are found this can be coupled with the better tagguessing feature (and even if the tags are not saved), the the lyrics providers can be searched with these guessed tags.<br />
Then, improve the lyrics display. Currently it just scrolls at a constant rate, generally that's inconsistent with the actual playback of the song. All .lrc files have timestamps, that can be followed: probably by highlighting the line playing.<br />
<br />
'''Expected results:''' Greatly increase the probability of fetching of the lyrics for any song. In the lyrics display, a highlighted line will display the current line being played.<br />
<br />
'''Knowledge Prerequisite:''' Knowledge of the Amarok code base (hence of Qt, C++). Basic knowledge of webservices.<br />
<br />
'''Mentor:''' Mark Kretschmann<br />
<br />
===digiKam===<br />
<br />
digiKam is an advanced digital photo management application for Linux, Windows, and Mac-OSX.<br />
<br />
* [http://www.digikam.org digiKam project web site]<br />
* [https://mail.kde.org/mailman/listinfo/digikam-devel Mailinglist]<br />
* [https://plus.google.com/+digikam Google+ page]<br />
* [http://webchat.freenode.net/?channels=digikam #digikam IRC channel on Freenode]<br />
<br />
==== Project: Integrate KIPI Export Plugins directly in the GUI of KIPI host applications ====<br />
<br />
'''Brief explanation:''' It would be nice to be able to encapsulate the Export/Import KIPI plugins directly in the GUI of the host application without opening a dedicated window. For the Export Plugins the place to load the plugins will be BQM and for the Import Plugins this can be in the digiKam import tool or in the main view. For this one must factorize the export/import kipi plugin interface and to group the common calls into a virtual interface, to implement tree and list view for the plugins.<br />
<br />
'''Dependencies:''' : digiKam KIPI interface, libkipi, KIPI Plugins <br />
<br />
'''Bugzilla entries:''' [https://bugs.kde.org/show_bug.cgi?id=235572 235572], [https://bugs.kde.org/show_bug.cgi?id=221704 221704] ,[https://bugs.kde.org/show_bug.cgi?id=143978 143978]<br />
<br />
'''Knowledge Prerequisite:''' C/C++, Qt/KDE, GUI<br />
<br />
'''Expected results:''' KIPI host apps that are compatible with the project will load KIPI Plugins in the BQM, the others will load the plugins as it's done right now without breaking any compatibility.<br />
<br />
'''Difficulty:''' high<br />
<br />
'''Lead Mentor:''' Gilles Caulier <caulier dot gilles at gmail dot com><br />
<br />
==== Project: Port Greystoration CImg interface to GMic ====<br />
<br />
'''Brief explanation:''' digiKam include [https://projects.kde.org/projects/extragear/graphics/digikam/repository/revisions/master/show/libs/3rdparty/cimg CImg library] to be able to use Greystoration algorithm which give nice fix to image based on Vortex theory, as [http://www.flickr.com/photos/digikam/8535414322/sizes/l/in/photostream/ Restoration tools]. Since CImg > 1.3.0, Greystoration algorithm have been moved in a new library named GMic with a completely different API. The goal of this project is to adapt digiKam Greystoration interface to GMic library.<br />
<br />
'''Dependencies:''' [https://projects.kde.org/projects/extragear/graphics/digikam/repository/revisions/master/show/libs/dimg/filters/greycstoration digiKam core], [https://projects.kde.org/projects/extragear/graphics/digikam/repository/revisions/master/changes/imageplugins/enhance/ Restauration and Inpaint editor tools], and [https://projects.kde.org/projects/extragear/graphics/digikam/repository/revisions/master/show/utilities/queuemanager/basetools/enhance Restauration tool from Batch Queue Manager]<br />
<br />
'''Knowledge Prerequisite:''' C/C++, math, Qt, <br />
<br />
'''Expected results:''' port image restoration algorithm from [http://cimg.sourceforge.net/ CImg] to [http://gmic.sourceforge.net/ GMic] API<br />
<br />
'''Difficulty:''' high<br />
<br />
'''Lead Mentor:''' Gilles Caulier <caulier dot gilles at gmail dot com><br />
<br />
==== Project: Add a quick access to Labels in dedicated tree-view ====<br />
<br />
'''Brief explanation:''' It would be nice to be able show all items from collections in icon-view which has Rating, Pick Labels, and Color Labels attributed, as it's already do with Tags. The goal is to build a tree-view with all Labels available on digiKam and process database query to show items relevant. This view must include No rating, All Rating values, No Pick Label, All Pick Label values, No Color Label, all Color Labels, which must be selected individually or grouped. This Labels tree-view must be available in KIPI album selector widget, as it's done currently for Tags, to be able to export these virtual albums with kipi-plugins. Also, in this project a way to select No Tagged items must be add to current Tags tree-view, to be homogenous with new Labels tree-view feature.<br />
<br />
'''Dependencies:''' : digiKam Database<br />
<br />
'''Bugzilla entries:''' [https://bugs.kde.org/show_bug.cgi?id=160363 160363], <br />
<br />
'''Knowledge Prerequisite:''' C/C++, Qt/KDE, GUI, Database<br />
<br />
'''Expected results:''' To have a quick acess tree-view in all relevant gui where Labels can be selected for photo workflow.<br />
<br />
'''Screenshots:''' [http://blogs.thesitedoctor.co.uk/tim/img/Windows-Photo-Gallery.JPG Microsoft Live Photo Rating tree-view], [http://images.apple.com/euro/aperture/features/images/video-audio-rating-20091020.jpg Apple Aperture Labels tree-view]<br />
<br />
'''Difficulty:''' medium<br />
<br />
'''Lead Mentor:''' Gilles Caulier <caulier dot gilles at gmail dot com><br />
<br />
===Marble===<br />
Marble is a virtual globe and world atlas — your swiss army knife for maps. Find your way and explore the world!<br />
<br />
* [http://marble.kde.org/ Marble project website]<br />
* [https://mail.kde.org/mailman/listinfo/marble-devel Mailinglist]<br />
* [http://gplus.to/Marble Google+ page]<br />
* [http://webchat.freenode.net/?channels=marble #marble IRC channel on Freenode]<br />
<br />
==== Project: Interactive Tours ====<br />
<br />
'''Brief explanation:''' A Tour is a set of related places along with supporting media (text, images, audio, video). Tours can be viewed (playback): The invididual places are visited in a defined timeline. They're useful for a wide range of tasks, like showing an interesting hike along with panorama pictures, highlighting places of interest for sightseeing or showing historic events and political changes happening over decades. The Marble library has been designed to support these use cases, but the user interface does not reveal all the features yet. This project is about changing that.<br />
<br />
'''Expected results:''' <br />
* Extend the existing Tour widget for animated tour playback<br />
* Improve the usability of the Tour widget<br />
* Support interactive elements in tour playback<br />
* Implement time support for tours for different time ranges (from eras to years to days to minutes to milliseconds)<br />
* Add support for recording tours<br />
* Enhance the screencast feature to generate videos from tours.<br />
Optional:<br />
* Extend Marble's owncloud synchronization feature for uploading tours to owncloud<br />
* Add tour viewing support to the Marble owncloud app<br />
* Implement tour viewing in the QML version of Marble<br />
* Provide tours for existing map themes to highlight features of them<br />
<br />
'''Knowledge Prerequisite:''' C++ and Qt. Would-be applicants are expected to work on junior jobs (possibly related to the project). Try to find your way into http://marble.kde.org/dashboard.php#contributors and solve as many tasks and bugfixes as possible.<br />
<br />
'''Mentor:''' Dennis Nienhüser and other Marble developers.<br />
<br />
==== Project: Marble Game ====<br />
<br />
'''Brief explanation:''' The latest introduction of a recent vector map inside Marble ("Natural Earth dataset") allows for interesting features: With recent and detailed political borders it's also possible to create a game based on Marble similar in spirit to KGeography. In terms of user-featureset the goal is to create an entertaining and educational game-application or game-plugin using Marble. Technically the goal is to extend Marble's framework to allow for this (there surely will be roadblocks). <br />
<br />
'''Expected results:''' <br />
* An application that is based on the MarbleWidget which teaches Geography in a style similar to KGeography.<br />
* OR/AND a plugin that extends Marble with a menu entry that invokes a Quiz-style educational game.<br />
* Extend Marble's framework to allow for the features required<br />
* Improve the Marble framework so that it provides a better experience for 3rd-party developers (by providing missing tutorials, documentation or even better APIs)<br />
<br />
'''Knowledge Prerequisite:''' C++ and Qt. Would-be applicants are expected to work on junior jobs (possibly related to the project). Try to find your way into http://marble.kde.org/dashboard.php#contributors and solve as many tasks and bugfixes as possible.<br />
<br />
'''Mentor:''' Torsten Rahn and other Marble developers.<br />
<br />
==== Project: Marble Editing mode: Polygons ====<br />
<br />
'''Brief explanation:''' During last GSoC a mode for editing ground overlays was added to the experimental editing Mode for Marble. During this GSoC the editing mode should be extended with polygon editing. The resulting editor should allow to create polygons and edit nodes of existing files in a way similar to inkscape. If there is enough time then the editing mode for Marble should be polished so that it can be included with the next release.<br />
<br />
'''Expected results:''' <br />
* An editing mode for polygons inside Marble. <br />
* Adding, moving and removing nodes. <br />
* Possibly merging nodes and other features that tools like inkscape provide for node interaction<br />
* Assignment of lables, outline color and fill color.<br />
* Possibly editing of "holes" inside the Polygon.<br />
<br />
'''Knowledge Prerequisite:''' C++ and Qt. Would-be applicants are expected to work on junior jobs (possibly related to the project). Try to find your way into http://marble.kde.org/dashboard.php#contributors and solve as many tasks and bugfixes as possible.<br />
<br />
'''Mentor:''' Torsten Rahn and other Marble developers.<br />
<br />
<br />
=== KDE Edu ===<br />
<br />
==== Project: Sound Visualization and Sound Effects in Artikulate ====<br />
'''Brief explanation:''' Artikulate is a language learning application that focus on improving a learner's pronunciation skills by repeating native speaker recordings, recording that try and comparing boths. By repeating these trials, a learner can continuously improve his/her language skills. There are areas for this project:<br />
# native speaker recordings are recorded (either by GStreamer or QtMultimedia), converted to an OGG file and saved. What is missing is an application of noise cleanup filters, removing of no-sound intervals, and normalization (possibly combined with a very basic sound editor)<br />
# when playing and comparing sounds, there is no visual feedback about how much the soundwaves differ: plotting the soundwaves in a reasonable format <br />
'''Goals:''' The goal is to extend the sound processing in Artikulate to<br />
# Implement simple sound filters for normalization, noise removal, removal of white noise and integrate sound postprocessing into the editor workflow<br />
# Implement plotter for soundwaves and integrate this in the training mode<br />
Yet for both it is important to research which libraries already exist and possibly could be reused. Also, research is needed about which techniques for comparing the soundwaves is appropriate. A proposal should already contain verbose information about these questions.<br />
<br />
'''Knowledge Prerequisite:''' a must is knowledge of C++ and Qt, a plus is knowledge of sound processing libraries (e.g. GStreamer) or experience in sound processing<br />
<br />
'''Mentor:''' Andreas Cord-Landwehr and/or other people from KDE Edu<br />
<br />
==== Project: Semi-Automatic Generation of Language Lessons for Parley ====<br />
<br />
'''Brief explanation:''' Parley is an advanced vocabulary trainer with features like 8 different learning modes, including flashcards, genders of nouns, conjugation of verbs and several more. A lesson for Parley is encoded in kvtml, KDE Vocabulary Training Markup Language which is an XML format for vocabulary lessons of many different types.<br />
<br />
But it is a relatively demanding task to create good lessons for Parley. You need to manually edit a list of words in several different languages, add images and/or sound clips to them all, word class, pronounciation, etc.<br />
<br />
We would like to create a semi-automatic generator for lessons using the Kexi database in the Calligra suite. The workflow will be something like this.<br />
<br />
# You use an import script to import a selected part of the word list in wiktionary.org, an online wiki dictionary, into Kexi. This will then form the basis for the work on the lessons. <br />
# You define a list of words in the so called primary language, which is the language that the lesson is supposed to teach. This list will be the words only and could be created either using the editor inside Parley or a standard text editor and then import it into Parley.<br />
# You define which secondary languages you want in your lesson. These languages are the ones that the student is already familiar with. The training session will then consist of translations from one of the secondary languages (most often the native language of the student) and the primary language. At this point you also define which other parameters you want to include in the lesson, like image, sound clip, phonetic text, explanation, etc.<br />
# You invoke the automatic lesson generator which will search for the words you have defined in the database, look up suitable translations and add the other fields that you asked for.<br />
# If necessary, patch up the newly generated lesson with missing data that wasn't present in the database or add the information to the database and redo the generation.<br />
<br />
'''Goals:''' The goal is to create software that supports the workflow above. It will at least comprise the following tasks:<br />
# Define an efficient database schema for the words and translations. Wiktionary.org has 3.6 million entries and even a subset of that can take significant amounts of storage.<br />
# Implement a script that reads from wiktionary.org and enters the data into the Kexi database using the calligradb library. There is already a script for downloading and parsing the contents of Wiktionary at [1] but you will have to adapt it to Kexi. <br />
# Implement the code that searches the database and populates the lesson with the data found.<br />
# (If time permits) Implement a more advanced lesson editor than is currently present in Parley or a stand-alone editor.<br />
<br />
'''Knowledge Prerequisite:''' Good knowledge of C++ and Qt, a plus is knowledge of of kvtml and the related C++ classes in the kde edu libraries. Also some knowledge of databases and database searches.<br />
<br />
'''Mentor:''' Jaroslaw Staniek, the maintainer of Calligra Kexi, with help from Inge Wallin<br />
<br />
[1] http://en.wiktionary.org/wiki/Help:FAQ#Downloading_Wiktionary<br />
<br />
==== Project: Kig - Geogebra Support ====<br />
[http://edu.kde.org/applications/mathematics/kig/ Kig] is an application for interactive geometry.<br />
<br />
'''Goals:''' The overall goal is to support Geogebra files in KDE Edu. Because Geogebra is both a plotting tool and a tool for interactive geometry, the stated goal is very broad. For this particular project, we are interested in supporting interactive geometry in Kig. The current progress towards this goal is in the [https://projects.kde.org/projects/kde/kdeedu/kig/repository/show?rev=geogebra geogebra] branch of Kig's repository. Since there is some progress towards that goal, the particular goal of supporting these files in Kig may or may not be smaller than a GSoC project, in which case we can move forward to implement support for these files in the many plotting tools we have in KDE Edu.<br />
<br />
'''Knowledge Prerequisite:''' By the start of GSoC you should<br />
# Be familiar with Kig as a user<br />
# Be familiar with Geogebra as a user<br />
# Be familiar with Git, you will have to work with branches<br />
# Be able to build Kig<br />
# Be familiar with Kig's filter code: Kig is a large code base, so you are not expected to know everything about it, but you should at least be familiar with how filters are created and be able to modify filters since this will be the part of the code that you will be working with.<br />
<br />
'''Mentor:''' David Narvaez (IRC: dMaggot, please [[User:DMaggot/Mentoring|read this]] before applying)<br />
<br />
==== Project: Kig - Analitza Integration (Experimental) ====<br />
[http://edu.kde.org/applications/mathematics/kig/ Kig] is an application for interactive geometry.<br />
<br />
'''Goals:''' Kig's core is full of code to deal with finding solutions to linear or quadratic equations which are the bulk of interactive geometry. While this code works, in many cases it does so by approximations and it is, in general, very convoluted. The goal of this project is to implement all of this code in terms of a [https://en.wikipedia.org/wiki/Computer_algebra_system CAS] to address both of the disadvantages mentioned before. Analitza is an "in-house" library that deals with mathematical expressions, and is thus a good candidate for a CAS provider in Kig. This project is experimental because:<br />
# Implementing everything in terms of a CAS may or may not improve code quality in terms of readability. If it doesn't (and we would only know this at the end of the project), the implementation of this project will not make it to the master branch.<br />
# Analitza may or may not be up for all of the tasks we need to do in Kig, in which case improving Analitza is an option.<br />
<br />
'''Knowledge Prerequisite:''' By the start of GSoC you should<br />
# Be familiar with Kig as a user<br />
# Be familiar with Analitza as a consumer (it is a library, so you would not be a "user")<br />
# Be able to build Kig<br />
# Be able to build Analitza<br />
# Be familiar with Kig<br />
# Be familiar with Kig's object hierarchy and the mathematics behind that<br />
<br />
'''Mentor:''' David Narvaez (IRC: dMaggot, please [[User:DMaggot/Mentoring|read this]] before applying)<br />
<br />
==== Project: Integrate Cantor into LabPlot====<br />
[http://labplot.sourceforge.net/ LabPlot] is a KDE-application for interactive graphing and analysis of scientific data.<br />
<br />
'''Brief explanation:''' The integration is twofold:<br />
<br />
# currently, for the created plots LabPlot uses either the data provided by hand in a spreadseet or by using data imported from external ascii-files. By having Cantor within LabPlot it should be possible to access the data sets created in a computer algebra session (say Maxima) provided by Cantor. Cantor's session have to be integrated into LabPlot's model-view framework and have to be put onto the same foot as all the other objects managable in LabPlot (spreadsheet, worksheets etc.).<br />
# By calling a CAS-specific command for creating a 2D-plot in Cantor, Cantor creates an external process that renders the plot and embeds the result as a pixmap. Instead of such a static pixmap, LabPlot's plots should be embeded. This would provide high degree of control of the plot appearance as provided by LabPlot.<br />
<br />
'''Mentor:''' Alexander Semke<br />
<br />
==== Project: Integrate [http://en.wikipedia.org/wiki/VTK VTK] into LabPlot, investigate [http://en.wikipedia.org/wiki/Tulip_(software) Tulip] ====<br />
[http://labplot.sourceforge.net/ LabPlot] is a KDE-application for interactive graphing and analysis of scientific data.<br />
<br />
'''Brief explanation:'''<br />
# LabPlot lacks 3D-functionality. In the old KDE3-based LabPlot qwt3D was used for this that is not an option anymore. The task consists of the integration of [http://en.wikipedia.org/wiki/VTK VTK] -libs. Also, the relevant widgets for 3D-plot editting should be created in a manner similar for all the other objects available in LabPlot now.<br />
# Investigate whether it's reasonable to use LabPlot as a frontend (or to extend it to be a frontend) to the functionality provided by [http://en.wikipedia.org/wiki/Tulip_(software) Tulip] yes, how?<br />
<br />
'''Mentor:''' Alexander Semke<br />
<br />
===Krita===<br />
We welcome students who want to work on Krita for Google Summer of Code. If you want to work on Krita, keep in mind that we would like you to stay with the project, also outside Summer of Code. Summer of Code isn't just a summer job with some mentoring added -- it's a way of becoming part of the team.<br />
<br />
If you haven't worked on Krita before, we want you to demonstrate your skill beforehand by fixing bugs or implementing some features. It's a good idea to start on that in January. Here is a list of pre-gsoc ideas:<br />
<br />
==== Project: Painting and Separation of 3D Textures====<br />
<br />
As one of it’s use cases, Krita’s vision statement includes painting textures for 3D. 3D textures are typically comprised of a number of separate black and white, RGB or RGBA images. Thus painting for textures typically requires painting on more than one single layer / channel at a time. For example painting a scratch into a metal surface may require painting black onto the bump channel, another colour on the diffuse channel, and another to the specularity channel (as well as possibly some others such as the displacement channel). All of these are affected simultaneously.<br />
<br />
Currently Krita’s painting system is only able to paint onto single layers at a time and brushes have not been designed in such a way as to allow adjusting multiple channels simultaneously as would be needed. This topic would require looking at how Krita’s current painting system could be extended to paint the necessary adjustments to the channels used in 3D rendering, show the textures created in OpenGL and then export those channels for use in 3D applications.<br />
<br />
==== Project: 3D Material Image Maps====<br />
<br />
3D materials are made up of a bunch of images called image maps. If the user could associate layers as image maps in Krita, and paint on all of them at the same time, artists could paint whole 3D materials - something currently only available in high end 3d apps like zBrush (not even Photoshop / Corel Painter). The trick is that the position of what's painted needs to match on every map/layer, but the colours vary. For example, a scratch on a human characters skin would have a red colour map, a white (=raised) bump map, a light grey (=semi-shiny) specularity map etc, all in the exact same location on the each image map. Traditional methods of trying to create each image from scratch or by manipulating the colour map are very, very slow and painful. A simple version of this could be done as follows:<br />
<br />
* Each layer has a toggle in the layers docker called "texture map" or similar. This is turned off by default. When active, the brush paints on *all* layers that currently have "texture map" active.<br />
<br />
* When picking a colour, a dropdown lets the user pick "Default" or any active texture map layer. "Default" is just the current behaviour. If the user selects a layer in the dropdown, then the selected colour will be applied to that layer when painting on *any* layer.<br />
* In the file or layer menu is an option "Export texture maps" which saves each texture map layer as an image. The layer name and extension appended automatically to the file name. For example, on a file called character.kra, the layer titled "colour" would be saved as "character-colour.jpg" (or whatever format was selected).<br />
<br />
For step 3, a simple, one click / shortcut, method is vital, as artists often have to check their material in their 3d app every few minutes, and wading through saving 10 layers individually, each with manual file naming and confirming file format settings each time is unacceptably slow. For any artist who requires this level of control, they can use Layers menu -> "Save Layer as Image" already in krita.<br />
<br />
Allowing artists to paint a single material rather than creating multiple separate image maps by hand, would make Krita formidable for painting 3D textures, and the most advanced open source application for 3D texturing.<br />
<br />
==== Project: Matte painting====<br />
<br />
One of Krita's main use cases is as a professional tool for painting textures and mattes in digital film. Mattes are primarily made of sequences of images generated by a combination of two methods, first by animatable spline based shapes, which currently exists and is being developed in blender, and then after that, by hand painting frames for detailed areas and corrections. The trouble is that no currently maintained FOSS application currently tries to provide the ability to create hand painted mattes. This project is to extend Krita for this purpose. What's needed here is the following:<br />
* The ability for Krita to load manually selected sequences of color managed images as frames to be represented as a single layer in Krita. Optionally would be the ability to display playback at reduced resolutions to increase performance and to offset the time at which sequences were inserted.<br />
* A “Timeline” docker which would display the current frame displayed, and allow clicking and dragging to different points in time, updating the image displayed in the canvas to match. Optional would be the ability to zoom and scroll the timeline, mark modified frames on the timeline, playback the image sequence, forwards and backwards as video (most likely only in the openGL mode of Krita or with an external tool like ffplay) and display times in a range of formate EG SMTP, PAL, NTSC, Secam etc.<br />
* Updating the paint and transparency layer types, so that when Krita is using a frame sequence and one of these layer types is created, they also represent a series of frames rather than just a single image. This could possibly be a toggle switch on layers, much as visibility, alpha lock etc. are now.<br />
* The ability to save layers that are displaying frame sequences out as frame sequences also, giving them user definable names (eg where to insert the frame number, how many digits to pad).<br />
* Keyboard shortcuts to move forwards and backwards 1/10/100 frames, to jump to the start and end of the timeline and forward / backwards play if video playback is supported.<br />
<br />
==== Project: Cartoon Text Balloon System====<br />
<br />
Krita already has two text tools, but neither is suited for creating cartoon balloons. The system should allow the creation of vector-based balloons in different styles. The balloons can contain styled text. The text and balloons should be translatable and a system to select the current language should be created. It should be possible to save the balloon text to a separate file that can be used as input for translations. Finally, care must be taken to support right-left languages.<br />
<br />
==== Project: Substrate simulation ====<br />
<br />
'''Brief explanation''': Substrates for painting and drawing have a direct influence on the result of the art. The goal of this project is bringing this richness of these effects to Krita. There is an existing body of literature and academic projects on this topic, with Bill Baxter and Tom van Laerhoven being among the best known researchers. For the right effect, we need to take care of the 3d structure of the substrate, it’s effect on paint tools -- smoothness, absorbency and other parameters. An interesting option is to make it possible to apply different substrates to existing paintings.<br />
Expected results: an optional substrate simulation that works with all current Krita tools<br />
<br />
==== Project: Real Paint Emulation ====<br />
<br />
We already did some research on the emulation of real-world paint and we do already have some essential pieces of it: Hairy Brush and Bumpmap filter. Now we need to bring this all together and allow a painter to use it easily, so that he could paint images like that: TODO. This project would involve creation of a special type of layer and a new colorspace, so the student should already be familiar with our layer stack and pigment code.<br />
<br />
==== Research Project: layer stack optimizations ====<br />
<br />
Right now when one layer got changed our merger should walk through all the layers of the current group and compose all of them into projection one by one. But this doesn't take into account that COMPOSITE_OVER (which is the most popular composition mode) has an associativity property, which means we can merge all the layers below and all the layers above dirty one into two groups, and calculate a group of any size with only two composition operations, which would give huge speed advantages.<br />
<br />
Unoptimized group:<br />
<br />
* layer 6<br />
* layer 5<br />
* layer 4<br />
* layer 3 <-- active layer (becomes dirty quite often)<br />
* layer 2<br />
* layer 1<br />
<br />
Optimized group:<br />
<br />
* <flattened 4-6><br />
* layer 3 <-- active layer (becomes dirty quite often)<br />
* <flattened 1-2><br />
<br />
After this project is done, we can start implementing layer composition on the GPU using openGL.<br />
<br />
==== Project: Improved Animation Brush System ====<br />
This should result in animation brushes being more readily available and adjustable. The current way of doing this is not as userfriendly as it could be.<br />
<br />
*Dedicated "Animation Brush GROUP"-> everything in group is a frame of the animation. (for use in current file,instead of in another instance of krita)<br />
*Convert group to animation group ->Normal group becomes animation brush reference.<br />
*Save as animation brush PRESET<br />
*options to set animation brush continuity to custom, random, incremental, pressure,angular,loop...<br />
*animation brush presets (in settings) need a timeslider to flip through the available frames<br />
<br />
https://bugs.kde.org/show_bug.cgi?id=322159<br />
<br />
==== Project: seamless textures by using UV layout as self-wrapping paint mask====<br />
This is a tool that should help in creating seamless (or as close as possible) textures for organic models. It will help in painting creases and other details across seams.<br />
http://www.sintel.org/wp-content/uploads/2010/01/face_uv_export.png<br />
<br />
*Convert intersections on uvlayout to seam transfer points.<br />
*use those points to transfer painted strokes to connected points on other side (set by user) <br />
*create userfriendly way to add,manage those seam transfer points. (multiple should be active at once)<br />
<br />
https://bugs.kde.org/show_bug.cgi?id=324072<br />
<br />
ALTERNATIVE<br />
*Similar to previous idea,but with movable curves/grid with adjustable seam transfer points in stead of converting a whole UV layout automaticly<br />
<br />
https://bugs.kde.org/show_bug.cgi?id=321547<br />
<br />
More ideas for projects can be found here:<br />
https://bugs.kde.org/buglist.cgi?cmdtype=runnamed&namedcmd=Wishlist%20count&list_id=884686<br />
<br />
=== Kexi ===<br />
Kexi is a visual database creator. It can be used for designing database applications, inserting and editing data, performing queries, and processing data.<br />
<br />
More info: [[Kexi|Developers' wiki]], [http://www.calligra.org/kexi web site for users], [https://mail.kde.org/mailman/listinfo/calligra-devel mailing list], IRC channel: #kexi and #calligra on Freenode.<br />
<br />
==== Project: Add support for importing tables from LibreOffice Base to Kexi ====<br />
<br />
'''Brief explanation:''' Add support for importing (Kexi calls it data/design migration) tables from LibreOffice (or OpenOffice) Base (ODB format) to Kexi. This task involves research on ODB format (it's relatively openly defined). Qt/C++ shall be used for the task, not any Java engine (HSQL db). This could be introduction to later development of complete database import from ODB to a Kexi database.<br />
<br />
'''Expected results:''' In the GUI the feature shall be put in the same place as the import from MDB: External Data -> Import Tables -> Table Importing Wizard. Then user would see .odb support in the open file dialog, just like it has access to importing CSV or MDB.<br />
<br />
'''Knowledge Prerequisite:''' C++, some Qt, some databases, some XML, software architecture<br />
<br />
'''Mentor:''' [[User:Jstaniek|Jarosław Staniek]] (Kexi maintainer)<br />
<br />
'''First steps''':<br />
:*See [http://wiki.openoffice.org/wiki/FAQ_(Base)] for a start.<br />
:*Sample .odb databases are available for [http://www.floppybunny.org/robin/web/virtualclassroom/chap8/libreoffice_base.html this] tutorial.<br />
:*Studying kexi/migration/importtablewizard.cpp which is a GUI taking an instance of implementation of a migrate driver derived from KexiMigration::KexiMigrate (in your case - the ODB driver). It's the m_migrateDriver attribute.<br />
:*Implementing plugin (needed methods of the driver) in migration/odb/ by looking how it was performed for other cases, e.g. for mysql (see kexi/migration/mysql/ dir) or other cases such as pqxx, txt, xbase, sybase or mdb<br />
:*In the actual C++ implementation, KoOdfReadStore class from calligra libs can be used to read contents of the .odb.<br />
<br />
=== Calligra Plugins ===<br />
<br />
Calligra is an office suite with lots of different applications with an user interface that is easy to use, highly customizable and extensible.<br />
<br />
More info: [http://www.calligra.org web site for users], [https://mail.kde.org/mailman/listinfo/calligra-devel mailing list], IRC channel: #calligra on Freenode.<br />
<br />
==== Project: Variable thickness lines ====<br />
<br />
'''Brief explanation:''' One of the most fundamental basics of drawing is varying the width of your lines to show shape, form and perspective. Almost every line tapers at either end, and often gets thicker and thinner in different places as needed. For purely technical and histrorical reasons though, every vector program (Illustrator, Inkscape, Karbon etc) make curves all one hard width. <br />
This proposal is to create a variable width path shape / tool, much like the path tool, would allow drawing curves, but where each node could have its width set so that the line width changed smoothly from node to node. <br />
As a plugin for the Calligra suite, this would clearly benefit apps as Karbon and also Krita.<br />
<br />
'''Expected results:''' variable width path tool is able to change the width of any path node to an arbitary percentage (say 155%) of the stroke width. See http://bugsfiles.kde.org/attachment.cgi?id=56995 for mockup. The shape needs to be able to save and load in svg/odf.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt, SVG?<br />
<br />
'''Mentor:''' Thorsten Zachmann < zachmann @ kde dot org ><br />
<br />
=== Keyboard Layouts ===<br />
<br />
Keyboard layouts in KDE allow user to use multiple keyboard layouts and switch between them. It consists of keyboard configuration module (in System Settings), keyboard layout widget/applet, and keyboard layout daemon.<br />
<br />
==== Project: Integrating Input Methods with keyboard layout configuration ====<br />
<br />
'''Brief explanation:''' Input method and keyboard layout configuration are serving the same purpose - to allow users to type text in non-default language. Currently KDE has integrated system to configure keyboard layouts but IM need to be configured somewhere else. Also when IM is configured it takes over some functions of keyboard layout configuration. So it would be nice if we could have IM and keyboard layout configuration in one place.<br />
It seems that IBus has already gained community acceptance so this will be the target for integration into KDE keyboard module.<br />
<br />
'''Expected results:''' Keyboard configuration module in System settings will include IM configuration and it will be integrated with existing keyboard layout options.<br />
<br />
'''Knowledge Prerequisite:''' good knowledge of C++, development experience with Qt and KDE, understanding of Input Methods (IBus)<br />
<br />
'''Mentor:''' Andriy Rysin <arysin@gmail.com><br />
<br />
=== KDevelop ===<br />
<br />
==== Project: Clang Integration ====<br />
<br />
'''Brief explanation:''' Finish the kdev-clang plugin to make it a usable replacement for the existing C++ plugin.<br />
<br />
'''Expected results:''' All advanced features of the KDevelop C++ are ported to the kdev-clang plugin. This includes code completion helpers, as well as basic refactoring and assistant integration.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt. Knowledge about Clang is helpful<br />
<br />
'''Mentor:''' Milian Wolff<br />
<br />
==== Project: Checker Framework ====<br />
<br />
'''Brief explanation:''' A generic framework should be created which provides the foundation for other plugins to report errors. <br />
<br />
'''Expected results:''' Right now we have the problems toolview but it is tightly coupled to the DUChain. This should be changed to use a separate item repository which stores the problems for a given path. The data stored would be: Path and range of where the issue is found, a short error message and optionally a long description. Furthermore, plugins might want to store additional info from which the problem could be fixed (compare to the 'add include path' or similar wizards we have already in the language framework).<br />
<br />
This framework should then be used to integrate various tools.<br />
<br />
First of all the existing language plugins should show the problems they find there.<br />
The existing playground plugins for krazy and cppcheck integration should reuse that framework<br />
any other linters could be integrated, such as jslint, pylint etc. pp.<br />
runtime checkers could be integrated, such as valgrind's memcheck, ptrcheck, helgrind, drd, ...<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt. Knowledge of linters such as Valgrind etc. is helpful.<br />
<br />
'''Mentor:''' Milian Wolff<br />
<br />
==== Project: SVN Plugin Rewrite ====<br />
<br />
'''Brief explanation:''' Rewrite the SVN plugin to use the C-API directly.<br />
<br />
'''Expected results:''' The existing SVN plugin uses an outdated kdevsvncpp checkout internally which causes troubles, warnings and licensing issues. Port the plugin to either the C-API of svn or alternatively try to reuse code from current kdevsvn. The result should be a tested, working plugin for SVN integration without licensing issues nor compile time warnings about usage of deprecated API.<br />
<br />
'''Knowledge Prerequisite:''' C, C++, Qt, SVN<br />
<br />
'''Mentor:''' Milian Wolff<br />
<br />
=== KDE PIM ===<br />
<br />
The KDE PIM community work on a set of libraries and applications for Personal Information Management, including email, calendaring, contacts, and feed aggregation.<br />
<br />
==== Project: OpenHolidays ====<br />
<br />
'''Brief explanation:''' The KHolidays library provides KDE applications with information on public holidays around the world, however the file format is very hard to use and maintain and the library features are very limited and restricted to Qt users. The goal of the OpenHolidays project is to develop a new open standard and data repository that can be used by any project that needs the data. See http://community.kde.org/KDE_PIM/KHolidays for more details.<br />
<br />
'''Expected results:''' Define the new JSON file format and port the existing data files to the new format. Develop a shared Qt-only library to parse the holiday files and provide access to them with a iCal style event-based api. Implement an Akonadi resource to access the data. Extended goals: Develop a JavaScript library to use the files. Develop a web site and web service at openholidays.org to provide online access to the data files.<br />
<br />
'''Knowledge Prerequisite:''' C++ and Qt for core goals, JavaScript and web services for extended goals.<br />
<br />
'''Mentor:''' John Layt and other KDE PIM community members.<br />
<br />
==== Project: Enhanced Searching in KMail ====<br />
<br />
'''Brief explanation:''' KMail is the defacto email client in KDE. It currently has a complex search dialog which allows the users to configure many different parts of the search. While it is very powerful, it is not very usable. A better search dialog is required which allows the user to modify the initial search and filter the data appropriately. A good example of this would be the Thunderbird search dialog - https://support.mozillamessaging.com/media/uploads/gallery/images/2011-03-14-10-05-42-56151b.jpg<br />
<br />
'''Expected results:''' Implementing the new search dialog and updating the backend search code to include whatever new features are required. Implementing this search dialog will require messing around with Akonadi, Baloo and KPeople.<br />
<br />
'''Knowledge Prerequisite:''' C++ and Qt. A basic understanding of Information Retrieval would be nice.<br />
<br />
'''Mentor:''' Vishesh Handa and other KDE PIM community members.<br />
<br />
==== Project: Active Mail ====<br />
'''Brief explanation:''' Active Mail is a QtQuick based mail application, a touch input friendly version of KMail so to speak. Currently it still depends on QtWidget based user interfaces for certain tasks which will have to be replaced before Active Mail can live up to its promise. Such missing pieces are the email composer and the email viewer. <br />
<br />
'''Expected results:''' Define and implement a general QtQuick API for composing emails. Rework the Active Mail composer UI/UX with the help of our usability expert and make it shine.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt, QtQuick<br />
<br />
'''Possible Mentors:''' Thomas Pfeiffer, Michael Bohlender, Kevin Krammer<br />
<br />
==== Project: QtQuick ToDo API / Plasmoid====<br />
<br />
'''Brief explanation:''' KDE PIM wants to make it's data accessible for applications which use QML to declare their user interfaces, e.g. applications using QtQuick. For that they need data handling objects that are accessible through QML, e.g. item models that have a mapping of string based role names to enum value based roles in C++, etc.<br />
<br />
'''Expected results:''' Define and implement a general QML API for accessing and creating Akonadis ToDo data. Write / Port a ToDo Plasmoid for Plasma Desktop or Plasma Active to show off the new API. Bonus: Port Kontact Touch Task to the new API instead of, or in addition to the Plasmoid.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt, QtQuick<br />
<br />
'''Possible Mentors:''' Kevin Krammer, Michael Bohlender and other KDE PIM community members<br />
<br />
====Project: KPeople / Kontact Touch People====<br />
<br />
'''Brief explanation:''' KPeople is a KDE framework for aggregating contact information of people from various data sources, e.g. the user's addressbook and instant messaging programs. For the future KDE would like this to be the main source of data for its address book application.<br />
<br />
'''Expected results:''' Define and implement a QML API for accessing kPeoples features. Create a pretty QtQuick example App/Plasmoid to show off and prove the API. Bonus: Bonus: Port Kontact Touch Addressbook to the new API instead of, or in addition to the Example.<br />
<br />
'''Knowledge Prerequisite:''' C++, Qt, QtQuick<br />
<br />
'''Possible Mentors:''' Martin Klapetek, Thomas Pfeiffer and other KDE PIM community members<br />
<br />
==== Project: Akonadi Commandline/Shellscripting Interface ====<br />
<br />
'''Brief explanation:''' Akonadi is a system that enables uniform access to various data formats across a wide range of data sources. Its main clients are graphics end user applications such as KMail. However, in some cases it is advantageous if data manipulation can be automated.<br />
Power users or system administrators often employ the multitudes of Unix/Linux commandline tools to achieve such automation tasks. The idea is to provide a tool or set of tools that allow Akonadi operations to be used in such scripts.<br />
<br />
'''Expected results:''' A non-GUI program able to perform useful tasks on Akonadi provided data, like creating folders, adding/deleting/copying/moving data such as contacts or emails, etc.<br />
<br />
'''Knowledge Prerequisite:''' C++, Shell scripting<br />
<br />
'''Mentor:''' Jonathan Marten, Kevin Krammer and other KDE PIM community members<br />
<br />
'''Resources:''' An early prototype can be found here https://projects.kde.org/projects/playground/pim/akonadiclient and there are two, non-Akonadi, clients which are part of KDE PIM: kabbclient (contacts), konsolecalendar (calendar)<br />
Contact the kde-pim mailinglist for discussions: https://mail.kde.org/mailman/listinfo/kde-pim<br />
<br />
<br />
=== Simon ===<br />
Simon is a speech recognition suite.<br />
<br />
[http://simon.kde.org Website] - [https://mail.kde.org/mailman/listinfo/kde-speech Mailing list] - IRC channel: #kde-speech on Freenode.<br />
<br />
==== Project: Streamline handling of various resources ====<br />
<br />
'''Brief explanation:''' Simon uses a multitude of different components: Scenarios, Base models, Shadow vocabulary, Language profiles, etc.<br />
<br />
While many of these components can be downloaded from within Simon, some can't and even for those that are better integrated, end-users still have to read additional documentation to know which components work together and which don't.<br />
<br />
The aim of this project is to bring the handling of these resources under a uniform and user-friendly interface.<br />
Specifically, the interface should resolve conflicts automatically and deduce an optimal default setup by itself (e.g. based on the system language and installed programs).<br />
<br />
'''Expected results:''' Much more user friendly setup.<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt<br />
<br />
'''Mentor:''' Peter Grasch <peter {+at+} grasch.net><br />
<br />
'''Resources:''' Some work (mostly brainstorming and UI design) was already conducted during Season of KDE 2013. Please contact me for details. This does not mean that this project is already assigned!<br />
<br />
=== KDE Telepathy===<br />
<br />
==== Project: Conference Video Call Support ====<br />
<br />
'''Brief explanation:''' Our current IM client can handle a 1-1 video call reasonably well. It currently does not<br />
support conference calls (>2 people). Our backend Telepathy should support this, but we do not make use of it in our client. This project will involve<br />
* some UI design<br />
* some low level GStreamer work<br />
* fixing parts of the Telepathy stack.<br />
<br />
Current code is inside the repository ktp-call-ui.<br />
<br />
'''Expected results:'''<br />
Working multi conference video calls.<br />
<br />
'''Knowledge Prerequisite:'''<br />
* C++, Qt<br />
* Ideally; QML, GStreamer and Telepathy<br />
<br />
'''Mentor:''' David Edmundson and Diane Trout<br />
<br />
==== Project: Telegram Network Support ====<br />
<br />
'''Brief explanation:''' Telegram is an upcoming network that aims to replace WhatsApp. Unlike whatsapp it has an open protocol (https://telegram.org/) and is gaining popularity.<br />
<br />
We want support in our IM client. This should be done by creating a connection manager using TelepathyQt service bindings. <br />
<br />
When this is complete, not only will we get Telegram support, but due to the distributed nature of Telepathy it will also work for Jolla, Ubuntu Phone and Empathy.<br />
<br />
'''Expected results:'''<br />
Working single and group chats using KDE Telepathy over the Telegram network<br />
<br />
'''Knowledge Prerequisite:'''<br />
C++, Qt, Reading Protocol Documentation<br />
<br />
'''Mentor:''' David Edmundson<br />
<br />
=== Solid ===<br />
==== Project: iOS Integration ====<br />
'''Brief explanation:''' Integrate the iOS platform with the Plasma desktop using libraries like libimobiledevice and kdeconnect.<br />
<br />
'''Expected results:''' Have an iOS application that is able to talk to KDE Connect and desktop integration using libimobiledevices.<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt, Objective C<br />
<br />
'''Mentor:''' Àlex Fiestas <afiestas {+at+} kde.org><br />
<br />
'''Resources:''' libimobiledevice, kdeconnect, plasma<br />
<br />
==== Project: Make Libbluedevil Async ====<br />
'''Brief explanation:''' Extend libbluedevil to have an asynchronous api, and port bluedevil to it.<br />
<br />
'''Expected results:''' libbluedevil should have an asynchronous api, and bluedevil should be ported to them.<br />
<br />
'''Knowledge Prerequisite:''' basic Qt and DBus<br />
<br />
'''Mentor:''' Àlex Fiestas <afiestas {+at+} kde.org><br />
<br />
'''Resources:''' libbluedevil, bluedevil, afiestas<br />
<br />
==== Project: Improve sharing experience ====<br />
'''Brief explanation:''' Improve the content sharing experience in Plasma by extending and improving Samba share, implementing other ways of sharing and write new ways of discovering other people's shares.<br />
<br />
'''Expected results:''' It should be possible to discover "shares" using dolphin (possibly via a new kioslave?) and it should be possible to share a folder between two Plasma computers really fast and easy (possibly implementing an http server plus discovery via avahi).<br />
<br />
'''Knowledge Prerequisite:''' C++/Qt, extra points for KIO experience.<br />
<br />
'''Mentor:''' Àlex Fiestas <afiestas {+at+} kde.org><br />
<br />
'''Resources:''' avahi, http, kdenetwork-fileshare<br />
<br />
=== Plasma Media Center ===<br />
KDE's Plasma Media Center (PMC) is aimed towards a unified media experience on PCs, Tablets, Netbooks, TVs and any other device that is capable of running KDE software. PMC can be used to view images, play music or watch videos. Media files can be on the local filesystem or accessed with KDE’s Desktop Search.<br />
<br />
==== Project: Integrate with Simon ====<br />
<br />
'''Brief explanation:''' Simon is an open source speech recognition program that can replace your mouse and keyboard. The system is designed to be as flexible as possible and will work with any language or dialect. This project aims at integrating it with Plasma Media Center to control it.<br />
<br />
'''Expected results:''' Using Simon, the user should at least be able to use voice to -<br />
* Control playback of media (images, music, videos)<br />
* Navigate in the media browser (next page, previous page, "goto the 3rd item")<br />
* Home Screen navigation<br />
* Ability to switch to the player, image viewer, or playlist<br />
* Play a media file in the browser (or the playlist, when its shown) using its name<br />
<br />
'''Knowledge Prerequisite:''' Basic C++, Qt and QML<br />
<br />
'''Mentor:''' Shantanu Tushar <shantanu {+at+} kde.org> and Peter Grasch <peter {+at+} grasch.net></div>Shantanu Tusharhttps://community.kde.org/index.php?title=Plasma/Plasma_Media_Center&diff=36610Plasma/Plasma Media Center2014-02-25T06:37:52Z<p>Shantanu Tushar: /* Design Decisions */</p>
<hr />
<div>This page describes the goals for Plasma Media Center (PMC), explains the design choices being made and details the outstanding tasks remaining. <br />
<br />
== Release Info ==<br />
<br />
=== Plasma Media Center 1.0.0 release ===<br />
Plasma Media Center first stable release has been made recently on 20th March 2013.<br />
* KDE Dot article link : http://dot.kde.org/2013/03/20/plasma-media-center-release-one<br />
<br />
===Release and Feature Plan===<br />
=====Plasma Media Center 1.1=====<br />
http://community.kde.org/Plasma/Plasma_Media_Center/Release_1.1<br />
=====Plasma Media Center 1.2=====<br />
http://community.kde.org/Plasma/Plasma_Media_Center/Release_1.2<br />
=====Plasma Media Center 1.3=====<br />
http://community.kde.org/Plasma/Plasma_Media_Center/Release_1.3<br />
<br />
== Use Cases ==<br />
<br />
=== Viewing Media On The Go With a Laptop ===<br />
<br />
Joe is on a train / airplane travelling between two cities. The trip is long enough to watch the latest episode of his favourite T.V. show which he downloaded the night before from his PVR at home. Joe pops open his laptop, clicks on the Desktop Toolbox and selects "Media Center". PMC loads and he selects "Video", which presents a list of videos on his internal hard drive. <br />
<br />
=== Viewing Media At Home, Laptop -&gt; T.V. ===<br />
<br />
Jane is at home and wants to show her dinner guests pictures from the recent weekend trip she went on. Jane plugs her laptop into the living room television, opens the application launcher (Kickoff, Lancelot) and selects "Media Center". PMC starts up and she selects "Photos" which shows various sets of photo albums. After going through the "Weekend Ski Trip" photos, she goes back and selects Videos -&gt; Youtube and loads a Youtube playlist of top 40 music videos to play in the background while they visit. <br />
<br />
=== A PVR Style Experience ===<br />
<br />
Jaqueline sits down on the couch with her husband Jack and they turn on the television and their Plasma Media Center set top box. They grab the remote control and check the videos that they had recorded / downloaded but haven't watched yet. They select an episode of House and another of Fawlty Towers and press "Play".<br />
<br />
=== Media Center for Plasma Active ===<br />
<br />
PMC now works well with Plama Active. Small video showing PMC running on ExoPC at http://www.youtube.com/watch?v=B8yV2NKiADM .<br />
<br />
== Design ==<br />
<br />
=== Architecture ===<br />
<br />
On a very high level, PMC is composed of QML components for different parts of the MediaCenter.<br />
<br />
==== Media Elements ====<br />
<br />
* Media Welcome<br />
It is a QML componnet which hosts the welcome screen which is presented to the user when PMC starts up.<br />
<br />
* Media Browser<br />
It is a QML component which allows user to browse through the media from a backend and to select the desired media to play or view.<br />
<br />
* Media Player<br />
It is a QML component that uses Phonon QML to play Audio/Video and show Images.<br />
<br />
* Media Controller<br />
It is QML component that allows user to control currently playing media status like play/pause, seek, volume.<br />
<br />
*RuntimeData<br />
It is a QML component which handles various media information that is needed when PMC is running.<br />
<br />
*Playlist<br />
It is a QML component which contains list of media (Music and Videos) files added by user. User can add or remove media anytime from it.<br />
<br />
*ImageViewer<br />
It is a QML component which is responsible to display picture in PMC. It contains pictureStrip component too, which display all available pictures of a directory in the form of strip and provides flexibility to view next, previous and any random selected picture from strip.<br />
<br />
==== Browsing Backends ====<br />
<br />
Another very important component of PMC, browsing backends support PMC to have different sources for media to be used. Backends are plguins so one can, for example, write a plugin to show all images from a image sharing website<br />
<br />
* Local files<br />
<br />
This backend collection allows the user to browse her local filesystem for media. It exposes three backends-<br />
<br />
** Local pictures<br />
** Local music<br />
** Local videos<br />
<br />
* Metadata<br />
<br />
This backend collection uses Plasma Active's metadata model to fetch media from Nepomuk. This should allow us to create groupings based on media tags (such as artist, album etc). Similar to local, this contains three backends-<br />
<br />
** Metadata pictures<br />
** Metadata music<br />
** Metadata videos<br />
<br />
* Online Services<br />
This backend collection fetches media from Internet. Currently available backends are-<br />
** Flickr : This backend fetches images related to the given search string from flickr.<br />
** Picasa : This backend needs user to enter his/her Google login credential to browse through Albums and Pictures<br />
** Youtube : This backend allows user to view videos from youtube. User can search using searcbox and can play video of his own choice in PMC<br />
<br />
==== Libs ====<br />
It contains core MediaCenter classes to help in functionality.<br />
<br />
==== Shells ====<br />
<br />
This has the actual PMC shell which loads all the components and specifies the positioning of different components within shell. It also provides interconnection between various components.<br />
<br />
=== Mockups ===<br />
<br />
Here are three early Mockups by [http://pinheiro-kde.blogspot.com/ Nuno Pinheiro] (with permission). The top/bottom panel idea has been taken from here (higher resolutions of these on svn)<br> <br />
<br />
[[Image:Nuno albums.JPG|301x189px|Albums]] <br />
<br />
[[Image:Nuno pics.JPG|301x188px]] <br />
<br />
[[Image:Nuno playlist.JPG|303x189px]]<br />
<br />
'''These are from the very early ideas, for current screenshots, see the Status Reports section at the bottom of this page'''<br />
<br />
=== Navigation within PMC ===<br />
<br />
*Keyboard<br />
*Mouse<br />
*Touch<br />
*Remote control<br />
<br />
== TODO ==<br />
<br />
=== Accessibility ===<br />
Make sure that the following input methods work-<br />
*Keyboard ( works almost fine now)<br />
*Touch Gestures (pinch, swipe etc)<br />
*TV Remote (wiimote etc)<br />
<br />
=== Visualizations for music ===<br />
<br />
=== [[Plasma/Plasma Media Center/Podcast | Rss Podcast Integration]] ===<br />
<br />
== Getting started ==<br />
If you are new to Plasma Media Center and want to start doing development in it, then take a look at http://community.kde.org/Plasma/Plasma_Media_Center/getting_started_with_PMC<br />
<br />
== Current contributors ==<br />
<br />
'''Akshay Ratan''' - akshay_r on freenode<br />
<br />
'''Marco Martin''' - notmart on freenode<br />
<br />
'''Shantanu Tushar''' - Shaan7 on freenode<br />
<br />
'''Sinny Kumari''' - ksinny on freenode<br />
<br />
'''Sujith H''' - sujith_h on freenode<br />
<br />
== Past contributors ==<br />
<br />
'''Christophe Olinger''' - binarylooks on freenode, olingerc on gitorious.org<br> <br />
<br />
'''Sebastian''' - sebas on freenode <br />
<br />
'''Alessandro''' - alediaferia on freenode<br />
<br />
'''Christopher Blauvelt''' - cblauvelt on freenode <br />
<br />
'''Lukas Appelhans''' - boom1992 on freenode<br />
<br />
'''Onur-Hayri Bakici'''<br />
<br />
'''Fabian Riethmayer''' - fabian on freenode<br />
<br />
... add your name if you have contributed and its missing<br />
<br />
== Plasma Media Center IRC&nbsp;Channel on Freenode ==<br />
<br />
* #plasma on irc.freenode.net<br><br />
<br />
== Repository ==<br />
<br />
Code is browsable at [https://projects.kde.org/projects/extragear/multimedia/plasma-mediacenter/repository PMC @ kde git]<br />
<br />
==Meetings / BoFs==<br />
<br />
* '''2013''' Akademy 2013 [[/Akademy2013/]]<br />
* '''2012''' BoF at Akademy 2012 [[/Akademy2012/]]<br />
* '''2012''' December IRC meeting [[/DecemberMeeting/]]<br />
<br />
== Status Reports ==<br />
<br />
'''2012''' [http://sinny.in/node/17] [http://sinny.in/node/18] [http://sinny.in/node/19] [http://www.sinny.in/node/23] [http://sinny.in/node/25] [http://sinny.in/node/27]<br />
<br />
'''2011''' [http://sinny.in/node/12] [http://sinny.in/node/13] [http://sinny.in/node/14] [http://sinny.in/node/15]<br />
<br />
'''2010''' [http://alediaferia.blogspot.com/2010/03/call-for-devs-part-i.html] [http://alediaferia.blogspot.com/2010/04/welcome-to-my-gsoc-student-personal.html] [http://blog.binarylooks.com/2010/05/plasma-media-center-status-report-and-introduction/] <br />
<br />
'''2009''' [http://alediaferia.wordpress.com/2009/04/22/smells-like-summer-of-code/] [http://alediaferia.wordpress.com/2009/04/28/adventures-in-mediacenter-land/] [http://alediaferia.wordpress.com/2009/04/28/get-your-cover/] [http://alediaferia.wordpress.com/2009/05/27/plasmatube/] [http://alediaferia.wordpress.com/2009/06/11/browsing-your-medias/] [http://alediaferia.wordpress.com/2009/06/17/rating-your-medias/] [http://alediaferia.wordpress.com/2009/06/24/media-center-quick-update/] [http://alediaferia.wordpress.com/2009/07/11/still-alive/] [http://alediaferia.wordpress.com/2009/08/08/mediacenter-again/] [http://alediaferia.blogspot.com/2009/08/gsoc-ends-mediacenter-continues.html] [http://alediaferia.blogspot.com/2009/09/plug-your-model-in-mediacenter.html]<br />
<br />
----<br />
<br />
Find the older design and discussions here [[/History/]]</div>Shantanu Tusharhttps://community.kde.org/index.php?title=Plasma/Plasma_Media_Center&diff=36609Plasma/Plasma Media Center2014-02-25T06:37:18Z<p>Shantanu Tushar: /* Past contributors */</p>
<hr />
<div>This page describes the goals for Plasma Media Center (PMC), explains the design choices being made and details the outstanding tasks remaining. <br />
<br />
== Release Info ==<br />
<br />
=== Plasma Media Center 1.0.0 release ===<br />
Plasma Media Center first stable release has been made recently on 20th March 2013.<br />
* KDE Dot article link : http://dot.kde.org/2013/03/20/plasma-media-center-release-one<br />
<br />
===Release and Feature Plan===<br />
=====Plasma Media Center 1.1=====<br />
http://community.kde.org/Plasma/Plasma_Media_Center/Release_1.1<br />
=====Plasma Media Center 1.2=====<br />
http://community.kde.org/Plasma/Plasma_Media_Center/Release_1.2<br />
=====Plasma Media Center 1.3=====<br />
http://community.kde.org/Plasma/Plasma_Media_Center/Release_1.3<br />
<br />
== Use Cases ==<br />
<br />
=== Viewing Media On The Go With a Laptop ===<br />
<br />
Joe is on a train / airplane travelling between two cities. The trip is long enough to watch the latest episode of his favourite T.V. show which he downloaded the night before from his PVR at home. Joe pops open his laptop, clicks on the Desktop Toolbox and selects "Media Center". PMC loads and he selects "Video", which presents a list of videos on his internal hard drive. <br />
<br />
=== Viewing Media At Home, Laptop -&gt; T.V. ===<br />
<br />
Jane is at home and wants to show her dinner guests pictures from the recent weekend trip she went on. Jane plugs her laptop into the living room television, opens the application launcher (Kickoff, Lancelot) and selects "Media Center". PMC starts up and she selects "Photos" which shows various sets of photo albums. After going through the "Weekend Ski Trip" photos, she goes back and selects Videos -&gt; Youtube and loads a Youtube playlist of top 40 music videos to play in the background while they visit. <br />
<br />
=== A PVR Style Experience ===<br />
<br />
Jaqueline sits down on the couch with her husband Jack and they turn on the television and their Plasma Media Center set top box. They grab the remote control and check the videos that they had recorded / downloaded but haven't watched yet. They select an episode of House and another of Fawlty Towers and press "Play".<br />
<br />
=== Media Center for Plasma Active ===<br />
<br />
PMC now works well with Plama Active. Small video showing PMC running on ExoPC at http://www.youtube.com/watch?v=B8yV2NKiADM .<br />
<br />
== Design Decisions ==<br />
<br />
=== Architecture ===<br />
<br />
On a very high level, PMC is composed of QML components for different parts of the MediaCenter.<br />
<br />
==== Media Elements ====<br />
<br />
* Media Welcome<br />
It is a QML componnet which hosts the welcome screen which is presented to the user when PMC starts up.<br />
<br />
* Media Browser<br />
It is a QML component which allows user to browse through the media from a backend and to select the desired media to play or view.<br />
<br />
* Media Player<br />
It is a QML component that uses Phonon QML to play Audio/Video and show Images.<br />
<br />
* Media Controller<br />
It is QML component that allows user to control currently playing media status like play/pause, seek, volume.<br />
<br />
*RuntimeData<br />
It is a QML component which handles various media information that is needed when PMC is running.<br />
<br />
*Playlist<br />
It is a QML component which contains list of media (Music and Videos) files added by user. User can add or remove media anytime from it.<br />
<br />
*ImageViewer<br />
It is a QML component which is responsible to display picture in PMC. It contains pictureStrip component too, which display all available pictures of a directory in the form of strip and provides flexibility to view next, previous and any random selected picture from strip.<br />
<br />
==== Browsing Backends ====<br />
<br />
Another very important component of PMC, browsing backends support PMC to have different sources for media to be used. Backends are plguins so one can, for example, write a plugin to show all images from a image sharing website<br />
<br />
* Local files<br />
<br />
This backend collection allows the user to browse her local filesystem for media. It exposes three backends-<br />
<br />
** Local pictures<br />
** Local music<br />
** Local videos<br />
<br />
* Metadata<br />
<br />
This backend collection uses Plasma Active's metadata model to fetch media from Nepomuk. This should allow us to create groupings based on media tags (such as artist, album etc). Similar to local, this contains three backends-<br />
<br />
** Metadata pictures<br />
** Metadata music<br />
** Metadata videos<br />
<br />
* Online Services<br />
This backend collection fetches media from Internet. Currently available backends are-<br />
** Flickr : This backend fetches images related to the given search string from flickr.<br />
** Picasa : This backend needs user to enter his/her Google login credential to browse through Albums and Pictures<br />
** Youtube : This backend allows user to view videos from youtube. User can search using searcbox and can play video of his own choice in PMC<br />
<br />
==== Libs ====<br />
It contains core MediaCenter classes to help in functionality.<br />
<br />
==== Shells ====<br />
<br />
This has the actual PMC shell which loads all the components and specifies the positioning of different components within shell. It also provides interconnection between various components.<br />
<br />
=== Mockups ===<br />
<br />
Here are three early Mockups by [http://pinheiro-kde.blogspot.com/ Nuno Pinheiro] (with permission). The top/bottom panel idea has been taken from here (higher resolutions of these on svn)<br> <br />
<br />
[[Image:Nuno albums.JPG|301x189px|Albums]] <br />
<br />
[[Image:Nuno pics.JPG|301x188px]] <br />
<br />
[[Image:Nuno playlist.JPG|303x189px]]<br />
<br />
'''These are from the very early ideas, for current screenshots, see the Status Reports section at the bottom of this page'''<br />
<br />
=== Navigation within PMC ===<br />
<br />
*Keyboard<br />
*Mouse<br />
*Touch<br />
*Remote control<br />
<br />
== TODO ==<br />
<br />
=== Accessibility ===<br />
Make sure that the following input methods work-<br />
*Keyboard ( works almost fine now)<br />
*Touch Gestures (pinch, swipe etc)<br />
*TV Remote (wiimote etc)<br />
<br />
=== Visualizations for music ===<br />
<br />
=== [[Plasma/Plasma Media Center/Podcast | Rss Podcast Integration]] ===<br />
<br />
== Getting started ==<br />
If you are new to Plasma Media Center and want to start doing development in it, then take a look at http://community.kde.org/Plasma/Plasma_Media_Center/getting_started_with_PMC<br />
<br />
== Current contributors ==<br />
<br />
'''Akshay Ratan''' - akshay_r on freenode<br />
<br />
'''Marco Martin''' - notmart on freenode<br />
<br />
'''Shantanu Tushar''' - Shaan7 on freenode<br />
<br />
'''Sinny Kumari''' - ksinny on freenode<br />
<br />
'''Sujith H''' - sujith_h on freenode<br />
<br />
== Past contributors ==<br />
<br />
'''Christophe Olinger''' - binarylooks on freenode, olingerc on gitorious.org<br> <br />
<br />
'''Sebastian''' - sebas on freenode <br />
<br />
'''Alessandro''' - alediaferia on freenode<br />
<br />
'''Christopher Blauvelt''' - cblauvelt on freenode <br />
<br />
'''Lukas Appelhans''' - boom1992 on freenode<br />
<br />
'''Onur-Hayri Bakici'''<br />
<br />
'''Fabian Riethmayer''' - fabian on freenode<br />
<br />
... add your name if you have contributed and its missing<br />
<br />
== Plasma Media Center IRC&nbsp;Channel on Freenode ==<br />
<br />
* #plasma on irc.freenode.net<br><br />
<br />
== Repository ==<br />
<br />
Code is browsable at [https://projects.kde.org/projects/extragear/multimedia/plasma-mediacenter/repository PMC @ kde git]<br />
<br />
==Meetings / BoFs==<br />
<br />
* '''2013''' Akademy 2013 [[/Akademy2013/]]<br />
* '''2012''' BoF at Akademy 2012 [[/Akademy2012/]]<br />
* '''2012''' December IRC meeting [[/DecemberMeeting/]]<br />
<br />
== Status Reports ==<br />
<br />
'''2012''' [http://sinny.in/node/17] [http://sinny.in/node/18] [http://sinny.in/node/19] [http://www.sinny.in/node/23] [http://sinny.in/node/25] [http://sinny.in/node/27]<br />
<br />
'''2011''' [http://sinny.in/node/12] [http://sinny.in/node/13] [http://sinny.in/node/14] [http://sinny.in/node/15]<br />
<br />
'''2010''' [http://alediaferia.blogspot.com/2010/03/call-for-devs-part-i.html] [http://alediaferia.blogspot.com/2010/04/welcome-to-my-gsoc-student-personal.html] [http://blog.binarylooks.com/2010/05/plasma-media-center-status-report-and-introduction/] <br />
<br />
'''2009''' [http://alediaferia.wordpress.com/2009/04/22/smells-like-summer-of-code/] [http://alediaferia.wordpress.com/2009/04/28/adventures-in-mediacenter-land/] [http://alediaferia.wordpress.com/2009/04/28/get-your-cover/] [http://alediaferia.wordpress.com/2009/05/27/plasmatube/] [http://alediaferia.wordpress.com/2009/06/11/browsing-your-medias/] [http://alediaferia.wordpress.com/2009/06/17/rating-your-medias/] [http://alediaferia.wordpress.com/2009/06/24/media-center-quick-update/] [http://alediaferia.wordpress.com/2009/07/11/still-alive/] [http://alediaferia.wordpress.com/2009/08/08/mediacenter-again/] [http://alediaferia.blogspot.com/2009/08/gsoc-ends-mediacenter-continues.html] [http://alediaferia.blogspot.com/2009/09/plug-your-model-in-mediacenter.html]<br />
<br />
----<br />
<br />
Find the older design and discussions here [[/History/]]</div>Shantanu Tusharhttps://community.kde.org/index.php?title=Plasma/Plasma_Media_Center&diff=36608Plasma/Plasma Media Center2014-02-25T06:36:53Z<p>Shantanu Tushar: /* Current contributors */</p>
<hr />
<div>This page describes the goals for Plasma Media Center (PMC), explains the design choices being made and details the outstanding tasks remaining. <br />
<br />
== Release Info ==<br />
<br />
=== Plasma Media Center 1.0.0 release ===<br />
Plasma Media Center first stable release has been made recently on 20th March 2013.<br />
* KDE Dot article link : http://dot.kde.org/2013/03/20/plasma-media-center-release-one<br />
<br />
===Release and Feature Plan===<br />
=====Plasma Media Center 1.1=====<br />
http://community.kde.org/Plasma/Plasma_Media_Center/Release_1.1<br />
=====Plasma Media Center 1.2=====<br />
http://community.kde.org/Plasma/Plasma_Media_Center/Release_1.2<br />
=====Plasma Media Center 1.3=====<br />
http://community.kde.org/Plasma/Plasma_Media_Center/Release_1.3<br />
<br />
== Use Cases ==<br />
<br />
=== Viewing Media On The Go With a Laptop ===<br />
<br />
Joe is on a train / airplane travelling between two cities. The trip is long enough to watch the latest episode of his favourite T.V. show which he downloaded the night before from his PVR at home. Joe pops open his laptop, clicks on the Desktop Toolbox and selects "Media Center". PMC loads and he selects "Video", which presents a list of videos on his internal hard drive. <br />
<br />
=== Viewing Media At Home, Laptop -&gt; T.V. ===<br />
<br />
Jane is at home and wants to show her dinner guests pictures from the recent weekend trip she went on. Jane plugs her laptop into the living room television, opens the application launcher (Kickoff, Lancelot) and selects "Media Center". PMC starts up and she selects "Photos" which shows various sets of photo albums. After going through the "Weekend Ski Trip" photos, she goes back and selects Videos -&gt; Youtube and loads a Youtube playlist of top 40 music videos to play in the background while they visit. <br />
<br />
=== A PVR Style Experience ===<br />
<br />
Jaqueline sits down on the couch with her husband Jack and they turn on the television and their Plasma Media Center set top box. They grab the remote control and check the videos that they had recorded / downloaded but haven't watched yet. They select an episode of House and another of Fawlty Towers and press "Play".<br />
<br />
=== Media Center for Plasma Active ===<br />
<br />
PMC now works well with Plama Active. Small video showing PMC running on ExoPC at http://www.youtube.com/watch?v=B8yV2NKiADM .<br />
<br />
== Design Decisions ==<br />
<br />
=== Architecture ===<br />
<br />
On a very high level, PMC is composed of QML components for different parts of the MediaCenter.<br />
<br />
==== Media Elements ====<br />
<br />
* Media Welcome<br />
It is a QML componnet which hosts the welcome screen which is presented to the user when PMC starts up.<br />
<br />
* Media Browser<br />
It is a QML component which allows user to browse through the media from a backend and to select the desired media to play or view.<br />
<br />
* Media Player<br />
It is a QML component that uses Phonon QML to play Audio/Video and show Images.<br />
<br />
* Media Controller<br />
It is QML component that allows user to control currently playing media status like play/pause, seek, volume.<br />
<br />
*RuntimeData<br />
It is a QML component which handles various media information that is needed when PMC is running.<br />
<br />
*Playlist<br />
It is a QML component which contains list of media (Music and Videos) files added by user. User can add or remove media anytime from it.<br />
<br />
*ImageViewer<br />
It is a QML component which is responsible to display picture in PMC. It contains pictureStrip component too, which display all available pictures of a directory in the form of strip and provides flexibility to view next, previous and any random selected picture from strip.<br />
<br />
==== Browsing Backends ====<br />
<br />
Another very important component of PMC, browsing backends support PMC to have different sources for media to be used. Backends are plguins so one can, for example, write a plugin to show all images from a image sharing website<br />
<br />
* Local files<br />
<br />
This backend collection allows the user to browse her local filesystem for media. It exposes three backends-<br />
<br />
** Local pictures<br />
** Local music<br />
** Local videos<br />
<br />
* Metadata<br />
<br />
This backend collection uses Plasma Active's metadata model to fetch media from Nepomuk. This should allow us to create groupings based on media tags (such as artist, album etc). Similar to local, this contains three backends-<br />
<br />
** Metadata pictures<br />
** Metadata music<br />
** Metadata videos<br />
<br />
* Online Services<br />
This backend collection fetches media from Internet. Currently available backends are-<br />
** Flickr : This backend fetches images related to the given search string from flickr.<br />
** Picasa : This backend needs user to enter his/her Google login credential to browse through Albums and Pictures<br />
** Youtube : This backend allows user to view videos from youtube. User can search using searcbox and can play video of his own choice in PMC<br />
<br />
==== Libs ====<br />
It contains core MediaCenter classes to help in functionality.<br />
<br />
==== Shells ====<br />
<br />
This has the actual PMC shell which loads all the components and specifies the positioning of different components within shell. It also provides interconnection between various components.<br />
<br />
=== Mockups ===<br />
<br />
Here are three early Mockups by [http://pinheiro-kde.blogspot.com/ Nuno Pinheiro] (with permission). The top/bottom panel idea has been taken from here (higher resolutions of these on svn)<br> <br />
<br />
[[Image:Nuno albums.JPG|301x189px|Albums]] <br />
<br />
[[Image:Nuno pics.JPG|301x188px]] <br />
<br />
[[Image:Nuno playlist.JPG|303x189px]]<br />
<br />
'''These are from the very early ideas, for current screenshots, see the Status Reports section at the bottom of this page'''<br />
<br />
=== Navigation within PMC ===<br />
<br />
*Keyboard<br />
*Mouse<br />
*Touch<br />
*Remote control<br />
<br />
== TODO ==<br />
<br />
=== Accessibility ===<br />
Make sure that the following input methods work-<br />
*Keyboard ( works almost fine now)<br />
*Touch Gestures (pinch, swipe etc)<br />
*TV Remote (wiimote etc)<br />
<br />
=== Visualizations for music ===<br />
<br />
=== [[Plasma/Plasma Media Center/Podcast | Rss Podcast Integration]] ===<br />
<br />
== Getting started ==<br />
If you are new to Plasma Media Center and want to start doing development in it, then take a look at http://community.kde.org/Plasma/Plasma_Media_Center/getting_started_with_PMC<br />
<br />
== Current contributors ==<br />
<br />
'''Akshay Ratan''' - akshay_r on freenode<br />
<br />
'''Marco Martin''' - notmart on freenode<br />
<br />
'''Shantanu Tushar''' - Shaan7 on freenode<br />
<br />
'''Sinny Kumari''' - ksinny on freenode<br />
<br />
'''Sujith H''' - sujith_h on freenode<br />
<br />
== Past contributors ==<br />
<br />
'''Christophe Olinger''' - binarylooks on freenode, olingerc on gitorious.org<br> <br />
<br />
'''Sebastian''' - sebas on freenode <br />
<br />
'''Alessandro''' - alediaferia on freenode<br />
<br />
'''Christopher Blauvelt''' - cblauvelt on freenode <br />
<br />
'''Lukas Appelhans''' - boom1992 on freenode<br />
<br />
'''Onur-Hayri Bakici'''<br />
<br />
... add your name if you have contributed and its missing<br />
<br />
== Plasma Media Center IRC&nbsp;Channel on Freenode ==<br />
<br />
* #plasma on irc.freenode.net<br><br />
<br />
== Repository ==<br />
<br />
Code is browsable at [https://projects.kde.org/projects/extragear/multimedia/plasma-mediacenter/repository PMC @ kde git]<br />
<br />
==Meetings / BoFs==<br />
<br />
* '''2013''' Akademy 2013 [[/Akademy2013/]]<br />
* '''2012''' BoF at Akademy 2012 [[/Akademy2012/]]<br />
* '''2012''' December IRC meeting [[/DecemberMeeting/]]<br />
<br />
== Status Reports ==<br />
<br />
'''2012''' [http://sinny.in/node/17] [http://sinny.in/node/18] [http://sinny.in/node/19] [http://www.sinny.in/node/23] [http://sinny.in/node/25] [http://sinny.in/node/27]<br />
<br />
'''2011''' [http://sinny.in/node/12] [http://sinny.in/node/13] [http://sinny.in/node/14] [http://sinny.in/node/15]<br />
<br />
'''2010''' [http://alediaferia.blogspot.com/2010/03/call-for-devs-part-i.html] [http://alediaferia.blogspot.com/2010/04/welcome-to-my-gsoc-student-personal.html] [http://blog.binarylooks.com/2010/05/plasma-media-center-status-report-and-introduction/] <br />
<br />
'''2009''' [http://alediaferia.wordpress.com/2009/04/22/smells-like-summer-of-code/] [http://alediaferia.wordpress.com/2009/04/28/adventures-in-mediacenter-land/] [http://alediaferia.wordpress.com/2009/04/28/get-your-cover/] [http://alediaferia.wordpress.com/2009/05/27/plasmatube/] [http://alediaferia.wordpress.com/2009/06/11/browsing-your-medias/] [http://alediaferia.wordpress.com/2009/06/17/rating-your-medias/] [http://alediaferia.wordpress.com/2009/06/24/media-center-quick-update/] [http://alediaferia.wordpress.com/2009/07/11/still-alive/] [http://alediaferia.wordpress.com/2009/08/08/mediacenter-again/] [http://alediaferia.blogspot.com/2009/08/gsoc-ends-mediacenter-continues.html] [http://alediaferia.blogspot.com/2009/09/plug-your-model-in-mediacenter.html]<br />
<br />
----<br />
<br />
Find the older design and discussions here [[/History/]]</div>Shantanu Tusharhttps://community.kde.org/index.php?title=Plasma/Plasma_Media_Center&diff=36607Plasma/Plasma Media Center2014-02-25T06:36:34Z<p>Shantanu Tushar: /* Current contributors */</p>
<hr />
<div>This page describes the goals for Plasma Media Center (PMC), explains the design choices being made and details the outstanding tasks remaining. <br />
<br />
== Release Info ==<br />
<br />
=== Plasma Media Center 1.0.0 release ===<br />
Plasma Media Center first stable release has been made recently on 20th March 2013.<br />
* KDE Dot article link : http://dot.kde.org/2013/03/20/plasma-media-center-release-one<br />
<br />
===Release and Feature Plan===<br />
=====Plasma Media Center 1.1=====<br />
http://community.kde.org/Plasma/Plasma_Media_Center/Release_1.1<br />
=====Plasma Media Center 1.2=====<br />
http://community.kde.org/Plasma/Plasma_Media_Center/Release_1.2<br />
=====Plasma Media Center 1.3=====<br />
http://community.kde.org/Plasma/Plasma_Media_Center/Release_1.3<br />
<br />
== Use Cases ==<br />
<br />
=== Viewing Media On The Go With a Laptop ===<br />
<br />
Joe is on a train / airplane travelling between two cities. The trip is long enough to watch the latest episode of his favourite T.V. show which he downloaded the night before from his PVR at home. Joe pops open his laptop, clicks on the Desktop Toolbox and selects "Media Center". PMC loads and he selects "Video", which presents a list of videos on his internal hard drive. <br />
<br />
=== Viewing Media At Home, Laptop -&gt; T.V. ===<br />
<br />
Jane is at home and wants to show her dinner guests pictures from the recent weekend trip she went on. Jane plugs her laptop into the living room television, opens the application launcher (Kickoff, Lancelot) and selects "Media Center". PMC starts up and she selects "Photos" which shows various sets of photo albums. After going through the "Weekend Ski Trip" photos, she goes back and selects Videos -&gt; Youtube and loads a Youtube playlist of top 40 music videos to play in the background while they visit. <br />
<br />
=== A PVR Style Experience ===<br />
<br />
Jaqueline sits down on the couch with her husband Jack and they turn on the television and their Plasma Media Center set top box. They grab the remote control and check the videos that they had recorded / downloaded but haven't watched yet. They select an episode of House and another of Fawlty Towers and press "Play".<br />
<br />
=== Media Center for Plasma Active ===<br />
<br />
PMC now works well with Plama Active. Small video showing PMC running on ExoPC at http://www.youtube.com/watch?v=B8yV2NKiADM .<br />
<br />
== Design Decisions ==<br />
<br />
=== Architecture ===<br />
<br />
On a very high level, PMC is composed of QML components for different parts of the MediaCenter.<br />
<br />
==== Media Elements ====<br />
<br />
* Media Welcome<br />
It is a QML componnet which hosts the welcome screen which is presented to the user when PMC starts up.<br />
<br />
* Media Browser<br />
It is a QML component which allows user to browse through the media from a backend and to select the desired media to play or view.<br />
<br />
* Media Player<br />
It is a QML component that uses Phonon QML to play Audio/Video and show Images.<br />
<br />
* Media Controller<br />
It is QML component that allows user to control currently playing media status like play/pause, seek, volume.<br />
<br />
*RuntimeData<br />
It is a QML component which handles various media information that is needed when PMC is running.<br />
<br />
*Playlist<br />
It is a QML component which contains list of media (Music and Videos) files added by user. User can add or remove media anytime from it.<br />
<br />
*ImageViewer<br />
It is a QML component which is responsible to display picture in PMC. It contains pictureStrip component too, which display all available pictures of a directory in the form of strip and provides flexibility to view next, previous and any random selected picture from strip.<br />
<br />
==== Browsing Backends ====<br />
<br />
Another very important component of PMC, browsing backends support PMC to have different sources for media to be used. Backends are plguins so one can, for example, write a plugin to show all images from a image sharing website<br />
<br />
* Local files<br />
<br />
This backend collection allows the user to browse her local filesystem for media. It exposes three backends-<br />
<br />
** Local pictures<br />
** Local music<br />
** Local videos<br />
<br />
* Metadata<br />
<br />
This backend collection uses Plasma Active's metadata model to fetch media from Nepomuk. This should allow us to create groupings based on media tags (such as artist, album etc). Similar to local, this contains three backends-<br />
<br />
** Metadata pictures<br />
** Metadata music<br />
** Metadata videos<br />
<br />
* Online Services<br />
This backend collection fetches media from Internet. Currently available backends are-<br />
** Flickr : This backend fetches images related to the given search string from flickr.<br />
** Picasa : This backend needs user to enter his/her Google login credential to browse through Albums and Pictures<br />
** Youtube : This backend allows user to view videos from youtube. User can search using searcbox and can play video of his own choice in PMC<br />
<br />
==== Libs ====<br />
It contains core MediaCenter classes to help in functionality.<br />
<br />
==== Shells ====<br />
<br />
This has the actual PMC shell which loads all the components and specifies the positioning of different components within shell. It also provides interconnection between various components.<br />
<br />
=== Mockups ===<br />
<br />
Here are three early Mockups by [http://pinheiro-kde.blogspot.com/ Nuno Pinheiro] (with permission). The top/bottom panel idea has been taken from here (higher resolutions of these on svn)<br> <br />
<br />
[[Image:Nuno albums.JPG|301x189px|Albums]] <br />
<br />
[[Image:Nuno pics.JPG|301x188px]] <br />
<br />
[[Image:Nuno playlist.JPG|303x189px]]<br />
<br />
'''These are from the very early ideas, for current screenshots, see the Status Reports section at the bottom of this page'''<br />
<br />
=== Navigation within PMC ===<br />
<br />
*Keyboard<br />
*Mouse<br />
*Touch<br />
*Remote control<br />
<br />
== TODO ==<br />
<br />
=== Accessibility ===<br />
Make sure that the following input methods work-<br />
*Keyboard ( works almost fine now)<br />
*Touch Gestures (pinch, swipe etc)<br />
*TV Remote (wiimote etc)<br />
<br />
=== Visualizations for music ===<br />
<br />
=== [[Plasma/Plasma Media Center/Podcast | Rss Podcast Integration]] ===<br />
<br />
== Getting started ==<br />
If you are new to Plasma Media Center and want to start doing development in it, then take a look at http://community.kde.org/Plasma/Plasma_Media_Center/getting_started_with_PMC<br />
<br />
== Current contributors ==<br />
<br />
'''Akshay Ratan'' - akshay_r on freenode<br />
<br />
'''Marco Martin''' - notmart on freenode<br />
<br />
'''Shantanu Tushar''' - Shaan7 on freenode<br />
<br />
'''Sinny Kumari''' - ksinny on freenode<br />
<br />
'''Sujith H''' - sujith_h on freenode<br />
<br />
== Past contributors ==<br />
<br />
'''Christophe Olinger''' - binarylooks on freenode, olingerc on gitorious.org<br> <br />
<br />
'''Sebastian''' - sebas on freenode <br />
<br />
'''Alessandro''' - alediaferia on freenode<br />
<br />
'''Christopher Blauvelt''' - cblauvelt on freenode <br />
<br />
'''Lukas Appelhans''' - boom1992 on freenode<br />
<br />
'''Onur-Hayri Bakici'''<br />
<br />
... add your name if you have contributed and its missing<br />
<br />
== Plasma Media Center IRC&nbsp;Channel on Freenode ==<br />
<br />
* #plasma on irc.freenode.net<br><br />
<br />
== Repository ==<br />
<br />
Code is browsable at [https://projects.kde.org/projects/extragear/multimedia/plasma-mediacenter/repository PMC @ kde git]<br />
<br />
==Meetings / BoFs==<br />
<br />
* '''2013''' Akademy 2013 [[/Akademy2013/]]<br />
* '''2012''' BoF at Akademy 2012 [[/Akademy2012/]]<br />
* '''2012''' December IRC meeting [[/DecemberMeeting/]]<br />
<br />
== Status Reports ==<br />
<br />
'''2012''' [http://sinny.in/node/17] [http://sinny.in/node/18] [http://sinny.in/node/19] [http://www.sinny.in/node/23] [http://sinny.in/node/25] [http://sinny.in/node/27]<br />
<br />
'''2011''' [http://sinny.in/node/12] [http://sinny.in/node/13] [http://sinny.in/node/14] [http://sinny.in/node/15]<br />
<br />
'''2010''' [http://alediaferia.blogspot.com/2010/03/call-for-devs-part-i.html] [http://alediaferia.blogspot.com/2010/04/welcome-to-my-gsoc-student-personal.html] [http://blog.binarylooks.com/2010/05/plasma-media-center-status-report-and-introduction/] <br />
<br />
'''2009''' [http://alediaferia.wordpress.com/2009/04/22/smells-like-summer-of-code/] [http://alediaferia.wordpress.com/2009/04/28/adventures-in-mediacenter-land/] [http://alediaferia.wordpress.com/2009/04/28/get-your-cover/] [http://alediaferia.wordpress.com/2009/05/27/plasmatube/] [http://alediaferia.wordpress.com/2009/06/11/browsing-your-medias/] [http://alediaferia.wordpress.com/2009/06/17/rating-your-medias/] [http://alediaferia.wordpress.com/2009/06/24/media-center-quick-update/] [http://alediaferia.wordpress.com/2009/07/11/still-alive/] [http://alediaferia.wordpress.com/2009/08/08/mediacenter-again/] [http://alediaferia.blogspot.com/2009/08/gsoc-ends-mediacenter-continues.html] [http://alediaferia.blogspot.com/2009/09/plug-your-model-in-mediacenter.html]<br />
<br />
----<br />
<br />
Find the older design and discussions here [[/History/]]</div>Shantanu Tusharhttps://community.kde.org/index.php?title=Plasma/Plasma_Media_Center&diff=36606Plasma/Plasma Media Center2014-02-25T06:35:51Z<p>Shantanu Tushar: /* TODO */</p>
<hr />
<div>This page describes the goals for Plasma Media Center (PMC), explains the design choices being made and details the outstanding tasks remaining. <br />
<br />
== Release Info ==<br />
<br />
=== Plasma Media Center 1.0.0 release ===<br />
Plasma Media Center first stable release has been made recently on 20th March 2013.<br />
* KDE Dot article link : http://dot.kde.org/2013/03/20/plasma-media-center-release-one<br />
<br />
===Release and Feature Plan===<br />
=====Plasma Media Center 1.1=====<br />
http://community.kde.org/Plasma/Plasma_Media_Center/Release_1.1<br />
=====Plasma Media Center 1.2=====<br />
http://community.kde.org/Plasma/Plasma_Media_Center/Release_1.2<br />
=====Plasma Media Center 1.3=====<br />
http://community.kde.org/Plasma/Plasma_Media_Center/Release_1.3<br />
<br />
== Use Cases ==<br />
<br />
=== Viewing Media On The Go With a Laptop ===<br />
<br />
Joe is on a train / airplane travelling between two cities. The trip is long enough to watch the latest episode of his favourite T.V. show which he downloaded the night before from his PVR at home. Joe pops open his laptop, clicks on the Desktop Toolbox and selects "Media Center". PMC loads and he selects "Video", which presents a list of videos on his internal hard drive. <br />
<br />
=== Viewing Media At Home, Laptop -&gt; T.V. ===<br />
<br />
Jane is at home and wants to show her dinner guests pictures from the recent weekend trip she went on. Jane plugs her laptop into the living room television, opens the application launcher (Kickoff, Lancelot) and selects "Media Center". PMC starts up and she selects "Photos" which shows various sets of photo albums. After going through the "Weekend Ski Trip" photos, she goes back and selects Videos -&gt; Youtube and loads a Youtube playlist of top 40 music videos to play in the background while they visit. <br />
<br />
=== A PVR Style Experience ===<br />
<br />
Jaqueline sits down on the couch with her husband Jack and they turn on the television and their Plasma Media Center set top box. They grab the remote control and check the videos that they had recorded / downloaded but haven't watched yet. They select an episode of House and another of Fawlty Towers and press "Play".<br />
<br />
=== Media Center for Plasma Active ===<br />
<br />
PMC now works well with Plama Active. Small video showing PMC running on ExoPC at http://www.youtube.com/watch?v=B8yV2NKiADM .<br />
<br />
== Design Decisions ==<br />
<br />
=== Architecture ===<br />
<br />
On a very high level, PMC is composed of QML components for different parts of the MediaCenter.<br />
<br />
==== Media Elements ====<br />
<br />
* Media Welcome<br />
It is a QML componnet which hosts the welcome screen which is presented to the user when PMC starts up.<br />
<br />
* Media Browser<br />
It is a QML component which allows user to browse through the media from a backend and to select the desired media to play or view.<br />
<br />
* Media Player<br />
It is a QML component that uses Phonon QML to play Audio/Video and show Images.<br />
<br />
* Media Controller<br />
It is QML component that allows user to control currently playing media status like play/pause, seek, volume.<br />
<br />
*RuntimeData<br />
It is a QML component which handles various media information that is needed when PMC is running.<br />
<br />
*Playlist<br />
It is a QML component which contains list of media (Music and Videos) files added by user. User can add or remove media anytime from it.<br />
<br />
*ImageViewer<br />
It is a QML component which is responsible to display picture in PMC. It contains pictureStrip component too, which display all available pictures of a directory in the form of strip and provides flexibility to view next, previous and any random selected picture from strip.<br />
<br />
==== Browsing Backends ====<br />
<br />
Another very important component of PMC, browsing backends support PMC to have different sources for media to be used. Backends are plguins so one can, for example, write a plugin to show all images from a image sharing website<br />
<br />
* Local files<br />
<br />
This backend collection allows the user to browse her local filesystem for media. It exposes three backends-<br />
<br />
** Local pictures<br />
** Local music<br />
** Local videos<br />
<br />
* Metadata<br />
<br />
This backend collection uses Plasma Active's metadata model to fetch media from Nepomuk. This should allow us to create groupings based on media tags (such as artist, album etc). Similar to local, this contains three backends-<br />
<br />
** Metadata pictures<br />
** Metadata music<br />
** Metadata videos<br />
<br />
* Online Services<br />
This backend collection fetches media from Internet. Currently available backends are-<br />
** Flickr : This backend fetches images related to the given search string from flickr.<br />
** Picasa : This backend needs user to enter his/her Google login credential to browse through Albums and Pictures<br />
** Youtube : This backend allows user to view videos from youtube. User can search using searcbox and can play video of his own choice in PMC<br />
<br />
==== Libs ====<br />
It contains core MediaCenter classes to help in functionality.<br />
<br />
==== Shells ====<br />
<br />
This has the actual PMC shell which loads all the components and specifies the positioning of different components within shell. It also provides interconnection between various components.<br />
<br />
=== Mockups ===<br />
<br />
Here are three early Mockups by [http://pinheiro-kde.blogspot.com/ Nuno Pinheiro] (with permission). The top/bottom panel idea has been taken from here (higher resolutions of these on svn)<br> <br />
<br />
[[Image:Nuno albums.JPG|301x189px|Albums]] <br />
<br />
[[Image:Nuno pics.JPG|301x188px]] <br />
<br />
[[Image:Nuno playlist.JPG|303x189px]]<br />
<br />
'''These are from the very early ideas, for current screenshots, see the Status Reports section at the bottom of this page'''<br />
<br />
=== Navigation within PMC ===<br />
<br />
*Keyboard<br />
*Mouse<br />
*Touch<br />
*Remote control<br />
<br />
== TODO ==<br />
<br />
=== Accessibility ===<br />
Make sure that the following input methods work-<br />
*Keyboard ( works almost fine now)<br />
*Touch Gestures (pinch, swipe etc)<br />
*TV Remote (wiimote etc)<br />
<br />
=== Visualizations for music ===<br />
<br />
=== [[Plasma/Plasma Media Center/Podcast | Rss Podcast Integration]] ===<br />
<br />
== Getting started ==<br />
If you are new to Plasma Media Center and want to start doing development in it, then take a look at http://community.kde.org/Plasma/Plasma_Media_Center/getting_started_with_PMC<br />
<br />
== Current contributors ==<br />
<br />
'''Fabian Riethmayer''' - fabian on freenode<br />
<br />
'''Marco Martin''' - notmart on freenode<br />
<br />
'''Shantanu Tushar''' - Shaan7 on freenode<br />
<br />
'''Sinny Kumari''' - ksinny on freenode<br />
<br />
== Past contributors ==<br />
<br />
'''Christophe Olinger''' - binarylooks on freenode, olingerc on gitorious.org<br> <br />
<br />
'''Sebastian''' - sebas on freenode <br />
<br />
'''Alessandro''' - alediaferia on freenode<br />
<br />
'''Christopher Blauvelt''' - cblauvelt on freenode <br />
<br />
'''Lukas Appelhans''' - boom1992 on freenode<br />
<br />
'''Onur-Hayri Bakici'''<br />
<br />
... add your name if you have contributed and its missing<br />
<br />
== Plasma Media Center IRC&nbsp;Channel on Freenode ==<br />
<br />
* #plasma on irc.freenode.net<br><br />
<br />
== Repository ==<br />
<br />
Code is browsable at [https://projects.kde.org/projects/extragear/multimedia/plasma-mediacenter/repository PMC @ kde git]<br />
<br />
==Meetings / BoFs==<br />
<br />
* '''2013''' Akademy 2013 [[/Akademy2013/]]<br />
* '''2012''' BoF at Akademy 2012 [[/Akademy2012/]]<br />
* '''2012''' December IRC meeting [[/DecemberMeeting/]]<br />
<br />
== Status Reports ==<br />
<br />
'''2012''' [http://sinny.in/node/17] [http://sinny.in/node/18] [http://sinny.in/node/19] [http://www.sinny.in/node/23] [http://sinny.in/node/25] [http://sinny.in/node/27]<br />
<br />
'''2011''' [http://sinny.in/node/12] [http://sinny.in/node/13] [http://sinny.in/node/14] [http://sinny.in/node/15]<br />
<br />
'''2010''' [http://alediaferia.blogspot.com/2010/03/call-for-devs-part-i.html] [http://alediaferia.blogspot.com/2010/04/welcome-to-my-gsoc-student-personal.html] [http://blog.binarylooks.com/2010/05/plasma-media-center-status-report-and-introduction/] <br />
<br />
'''2009''' [http://alediaferia.wordpress.com/2009/04/22/smells-like-summer-of-code/] [http://alediaferia.wordpress.com/2009/04/28/adventures-in-mediacenter-land/] [http://alediaferia.wordpress.com/2009/04/28/get-your-cover/] [http://alediaferia.wordpress.com/2009/05/27/plasmatube/] [http://alediaferia.wordpress.com/2009/06/11/browsing-your-medias/] [http://alediaferia.wordpress.com/2009/06/17/rating-your-medias/] [http://alediaferia.wordpress.com/2009/06/24/media-center-quick-update/] [http://alediaferia.wordpress.com/2009/07/11/still-alive/] [http://alediaferia.wordpress.com/2009/08/08/mediacenter-again/] [http://alediaferia.blogspot.com/2009/08/gsoc-ends-mediacenter-continues.html] [http://alediaferia.blogspot.com/2009/09/plug-your-model-in-mediacenter.html]<br />
<br />
----<br />
<br />
Find the older design and discussions here [[/History/]]</div>Shantanu Tusharhttps://community.kde.org/index.php?title=Plasma/Plasma_Media_Center&diff=36605Plasma/Plasma Media Center2014-02-25T06:35:30Z<p>Shantanu Tushar: We no longer have Wii</p>
<hr />
<div>This page describes the goals for Plasma Media Center (PMC), explains the design choices being made and details the outstanding tasks remaining. <br />
<br />
== Release Info ==<br />
<br />
=== Plasma Media Center 1.0.0 release ===<br />
Plasma Media Center first stable release has been made recently on 20th March 2013.<br />
* KDE Dot article link : http://dot.kde.org/2013/03/20/plasma-media-center-release-one<br />
<br />
===Release and Feature Plan===<br />
=====Plasma Media Center 1.1=====<br />
http://community.kde.org/Plasma/Plasma_Media_Center/Release_1.1<br />
=====Plasma Media Center 1.2=====<br />
http://community.kde.org/Plasma/Plasma_Media_Center/Release_1.2<br />
=====Plasma Media Center 1.3=====<br />
http://community.kde.org/Plasma/Plasma_Media_Center/Release_1.3<br />
<br />
== Use Cases ==<br />
<br />
=== Viewing Media On The Go With a Laptop ===<br />
<br />
Joe is on a train / airplane travelling between two cities. The trip is long enough to watch the latest episode of his favourite T.V. show which he downloaded the night before from his PVR at home. Joe pops open his laptop, clicks on the Desktop Toolbox and selects "Media Center". PMC loads and he selects "Video", which presents a list of videos on his internal hard drive. <br />
<br />
=== Viewing Media At Home, Laptop -&gt; T.V. ===<br />
<br />
Jane is at home and wants to show her dinner guests pictures from the recent weekend trip she went on. Jane plugs her laptop into the living room television, opens the application launcher (Kickoff, Lancelot) and selects "Media Center". PMC starts up and she selects "Photos" which shows various sets of photo albums. After going through the "Weekend Ski Trip" photos, she goes back and selects Videos -&gt; Youtube and loads a Youtube playlist of top 40 music videos to play in the background while they visit. <br />
<br />
=== A PVR Style Experience ===<br />
<br />
Jaqueline sits down on the couch with her husband Jack and they turn on the television and their Plasma Media Center set top box. They grab the remote control and check the videos that they had recorded / downloaded but haven't watched yet. They select an episode of House and another of Fawlty Towers and press "Play".<br />
<br />
=== Media Center for Plasma Active ===<br />
<br />
PMC now works well with Plama Active. Small video showing PMC running on ExoPC at http://www.youtube.com/watch?v=B8yV2NKiADM .<br />
<br />
== Design Decisions ==<br />
<br />
=== Architecture ===<br />
<br />
On a very high level, PMC is composed of QML components for different parts of the MediaCenter.<br />
<br />
==== Media Elements ====<br />
<br />
* Media Welcome<br />
It is a QML componnet which hosts the welcome screen which is presented to the user when PMC starts up.<br />
<br />
* Media Browser<br />
It is a QML component which allows user to browse through the media from a backend and to select the desired media to play or view.<br />
<br />
* Media Player<br />
It is a QML component that uses Phonon QML to play Audio/Video and show Images.<br />
<br />
* Media Controller<br />
It is QML component that allows user to control currently playing media status like play/pause, seek, volume.<br />
<br />
*RuntimeData<br />
It is a QML component which handles various media information that is needed when PMC is running.<br />
<br />
*Playlist<br />
It is a QML component which contains list of media (Music and Videos) files added by user. User can add or remove media anytime from it.<br />
<br />
*ImageViewer<br />
It is a QML component which is responsible to display picture in PMC. It contains pictureStrip component too, which display all available pictures of a directory in the form of strip and provides flexibility to view next, previous and any random selected picture from strip.<br />
<br />
==== Browsing Backends ====<br />
<br />
Another very important component of PMC, browsing backends support PMC to have different sources for media to be used. Backends are plguins so one can, for example, write a plugin to show all images from a image sharing website<br />
<br />
* Local files<br />
<br />
This backend collection allows the user to browse her local filesystem for media. It exposes three backends-<br />
<br />
** Local pictures<br />
** Local music<br />
** Local videos<br />
<br />
* Metadata<br />
<br />
This backend collection uses Plasma Active's metadata model to fetch media from Nepomuk. This should allow us to create groupings based on media tags (such as artist, album etc). Similar to local, this contains three backends-<br />
<br />
** Metadata pictures<br />
** Metadata music<br />
** Metadata videos<br />
<br />
* Online Services<br />
This backend collection fetches media from Internet. Currently available backends are-<br />
** Flickr : This backend fetches images related to the given search string from flickr.<br />
** Picasa : This backend needs user to enter his/her Google login credential to browse through Albums and Pictures<br />
** Youtube : This backend allows user to view videos from youtube. User can search using searcbox and can play video of his own choice in PMC<br />
<br />
==== Libs ====<br />
It contains core MediaCenter classes to help in functionality.<br />
<br />
==== Shells ====<br />
<br />
This has the actual PMC shell which loads all the components and specifies the positioning of different components within shell. It also provides interconnection between various components.<br />
<br />
=== Mockups ===<br />
<br />
Here are three early Mockups by [http://pinheiro-kde.blogspot.com/ Nuno Pinheiro] (with permission). The top/bottom panel idea has been taken from here (higher resolutions of these on svn)<br> <br />
<br />
[[Image:Nuno albums.JPG|301x189px|Albums]] <br />
<br />
[[Image:Nuno pics.JPG|301x188px]] <br />
<br />
[[Image:Nuno playlist.JPG|303x189px]]<br />
<br />
'''These are from the very early ideas, for current screenshots, see the Status Reports section at the bottom of this page'''<br />
<br />
=== Navigation within PMC ===<br />
<br />
*Keyboard<br />
*Mouse<br />
*Touch<br />
*Remote control<br />
<br />
== TODO ==<br />
<br />
=== Accessibility ===<br />
Make sure that the following input methods work-<br />
*Keyboard ( works almost fine now)<br />
*Touch Gestures (pinch, swipe etc)<br />
*TV Remote (wiimote etc)<br />
<br />
=== Support for grouping by tag, artists, album etc in Music Plugin ===<br />
<br />
=== Adding DVD/CD play support ===<br />
<br />
=== Visualizations for music ===<br />
<br />
=== [[Plasma/Plasma Media Center/Podcast | Rss Podcast Integration]] ===<br />
<br />
== Getting started ==<br />
If you are new to Plasma Media Center and want to start doing development in it, then take a look at http://community.kde.org/Plasma/Plasma_Media_Center/getting_started_with_PMC<br />
<br />
== Current contributors ==<br />
<br />
'''Fabian Riethmayer''' - fabian on freenode<br />
<br />
'''Marco Martin''' - notmart on freenode<br />
<br />
'''Shantanu Tushar''' - Shaan7 on freenode<br />
<br />
'''Sinny Kumari''' - ksinny on freenode<br />
<br />
== Past contributors ==<br />
<br />
'''Christophe Olinger''' - binarylooks on freenode, olingerc on gitorious.org<br> <br />
<br />
'''Sebastian''' - sebas on freenode <br />
<br />
'''Alessandro''' - alediaferia on freenode<br />
<br />
'''Christopher Blauvelt''' - cblauvelt on freenode <br />
<br />
'''Lukas Appelhans''' - boom1992 on freenode<br />
<br />
'''Onur-Hayri Bakici'''<br />
<br />
... add your name if you have contributed and its missing<br />
<br />
== Plasma Media Center IRC&nbsp;Channel on Freenode ==<br />
<br />
* #plasma on irc.freenode.net<br><br />
<br />
== Repository ==<br />
<br />
Code is browsable at [https://projects.kde.org/projects/extragear/multimedia/plasma-mediacenter/repository PMC @ kde git]<br />
<br />
==Meetings / BoFs==<br />
<br />
* '''2013''' Akademy 2013 [[/Akademy2013/]]<br />
* '''2012''' BoF at Akademy 2012 [[/Akademy2012/]]<br />
* '''2012''' December IRC meeting [[/DecemberMeeting/]]<br />
<br />
== Status Reports ==<br />
<br />
'''2012''' [http://sinny.in/node/17] [http://sinny.in/node/18] [http://sinny.in/node/19] [http://www.sinny.in/node/23] [http://sinny.in/node/25] [http://sinny.in/node/27]<br />
<br />
'''2011''' [http://sinny.in/node/12] [http://sinny.in/node/13] [http://sinny.in/node/14] [http://sinny.in/node/15]<br />
<br />
'''2010''' [http://alediaferia.blogspot.com/2010/03/call-for-devs-part-i.html] [http://alediaferia.blogspot.com/2010/04/welcome-to-my-gsoc-student-personal.html] [http://blog.binarylooks.com/2010/05/plasma-media-center-status-report-and-introduction/] <br />
<br />
'''2009''' [http://alediaferia.wordpress.com/2009/04/22/smells-like-summer-of-code/] [http://alediaferia.wordpress.com/2009/04/28/adventures-in-mediacenter-land/] [http://alediaferia.wordpress.com/2009/04/28/get-your-cover/] [http://alediaferia.wordpress.com/2009/05/27/plasmatube/] [http://alediaferia.wordpress.com/2009/06/11/browsing-your-medias/] [http://alediaferia.wordpress.com/2009/06/17/rating-your-medias/] [http://alediaferia.wordpress.com/2009/06/24/media-center-quick-update/] [http://alediaferia.wordpress.com/2009/07/11/still-alive/] [http://alediaferia.wordpress.com/2009/08/08/mediacenter-again/] [http://alediaferia.blogspot.com/2009/08/gsoc-ends-mediacenter-continues.html] [http://alediaferia.blogspot.com/2009/09/plug-your-model-in-mediacenter.html]<br />
<br />
----<br />
<br />
Find the older design and discussions here [[/History/]]</div>Shantanu Tusharhttps://community.kde.org/index.php?title=Plasma/Plasma_Media_Center/getting_started_with_PMC&diff=34419Plasma/Plasma Media Center/getting started with PMC2013-09-18T15:19:42Z<p>Shantanu Tushar: /* Bug report and fixes */</p>
<hr />
<div>== Introduction ==<br />
Plasma media Center (PMC) is KDE's Media Center which allow you to play your favourite songs, view lovely pictures and watch viedos together at one place.<br />
<br />
This wiki page is created mainly tell how and from where a person should start with in order to contribute into this project. Our main wiki page related to Plasma Media Center is available at http://community.kde.org/Plasma/Plasma_Media_Center<br />
<br />
== Source Code==<br />
You can browse Plasma Media center source code at https://projects.kde.org/projects/extragear/multimedia/plasma-mediacenter/repository<br />
<br />
To get the current source code from git, you can use following in your terminal<br />
$ git clone git://anongit.kde.org/plasma-mediacenter<br />
<br />
== Package dependency ==<br />
You need to install follwoing package before compiling PMC source code<br />
* Following Required devel pacakge: <br />
* kde-workspace<br />
* qt-mobility<br />
* taglib<br />
* nepomuk-core<br />
* kffmpegthumbnailer as optional<br />
<br />
== Building source ==<br />
*Go inside plasma-mediacenter folder<br />
$ cd plasma-mediacenter<br />
*Now, create a build directory. build directory will contain all binaries, libraries generated by make<br />
$ mkdir build<br />
* Enter into build directory<br />
$ cd build<br />
* Run cmake in source directory, you can also provide custom path in option -DCMAKE_INSTALL_PREFIX to tell where your final binary should get installed<br />
$ cmake .. -DCMAKE_INSTALL_PREFIX=`kde4-config --prefix`<br />
* Run make command to generate binaries<br />
$ make or,<br />
$ make -j(n+1) # here, n = number of CPU available in your system<br />
* Now, install binaries to path mentioned in option -DCMAKE_INSTALL_PREFIX<br />
$ sudo make install<br />
* Now, run kbuildsycoca4 in order to get plugins loaded<br />
$ kbuildsycoca4<br />
<br />
- You can also take help from blog http://sinny.in/node/25<br />
<br />
== Bug report and fixes ==<br />
Once you are done with successful installation, run plasma-mediacenter and it should launch.<br />
* You can file bug related to PMC at https://bugs.kde.org/enter_bug.cgi?product=plasma-mediacenter&format=guided<br />
* You can also take a look at existing bugs in PMC https://bugs.kde.org/component-report.cgi?product=plasma-mediacenter and can try to fix them<br />
<br />
== Getting Help ==<br />
If you have any question or need any kind of help then<br />
* You can send email on plasma-devel Mailing List https://mail.kde.org/mailman/listinfo/plasma-devel . We would love to help you :)<br />
* You can also ping us on IRC channel #plasma on freenode</div>Shantanu Tusharhttps://community.kde.org/index.php?title=Plasma/Plasma_Media_Center/getting_started_with_PMC&diff=34418Plasma/Plasma Media Center/getting started with PMC2013-09-18T15:15:36Z<p>Shantanu Tushar: /* Source Code */</p>
<hr />
<div>== Introduction ==<br />
Plasma media Center (PMC) is KDE's Media Center which allow you to play your favourite songs, view lovely pictures and watch viedos together at one place.<br />
<br />
This wiki page is created mainly tell how and from where a person should start with in order to contribute into this project. Our main wiki page related to Plasma Media Center is available at http://community.kde.org/Plasma/Plasma_Media_Center<br />
<br />
== Source Code==<br />
You can browse Plasma Media center source code at https://projects.kde.org/projects/extragear/multimedia/plasma-mediacenter/repository<br />
<br />
To get the current source code from git, you can use following in your terminal<br />
$ git clone git://anongit.kde.org/plasma-mediacenter<br />
<br />
== Package dependency ==<br />
You need to install follwoing package before compiling PMC source code<br />
* Following Required devel pacakge: <br />
* kde-workspace<br />
* qt-mobility<br />
* taglib<br />
* nepomuk-core<br />
* kffmpegthumbnailer as optional<br />
<br />
== Building source ==<br />
*Go inside plasma-mediacenter folder<br />
$ cd plasma-mediacenter<br />
*Now, create a build directory. build directory will contain all binaries, libraries generated by make<br />
$ mkdir build<br />
* Enter into build directory<br />
$ cd build<br />
* Run cmake in source directory, you can also provide custom path in option -DCMAKE_INSTALL_PREFIX to tell where your final binary should get installed<br />
$ cmake .. -DCMAKE_INSTALL_PREFIX=`kde4-config --prefix`<br />
* Run make command to generate binaries<br />
$ make or,<br />
$ make -j(n+1) # here, n = number of CPU available in your system<br />
* Now, install binaries to path mentioned in option -DCMAKE_INSTALL_PREFIX<br />
$ sudo make install<br />
* Now, run kbuildsycoca4 in order to get plugins loaded<br />
$ kbuildsycoca4<br />
<br />
- You can also take help from blog http://sinny.in/node/25<br />
<br />
== Bug report and fixes ==<br />
Once you are done with successful installation, run plasma-mediacentr and use various features available into it.<br />
* You can file bug related to PMC at https://bugs.kde.org/enter_bug.cgi?product=plasma-mediacenter&format=guided<br />
* You can also take a look at existing bug in PMC https://bugs.kde.org/component-report.cgi?product=plasma-mediacenter and can try to fix them<br />
<br />
== Getting Help ==<br />
If you have any question or need any kind of help then<br />
* You can send email on plasma-devel Mailing List https://mail.kde.org/mailman/listinfo/plasma-devel . We would love to help you :)<br />
* You can also ping us on IRC channel #plasma on freenode</div>Shantanu Tusharhttps://community.kde.org/index.php?title=Plasma/Plasma_Media_Center/Akademy2013&diff=33559Plasma/Plasma Media Center/Akademy20132013-07-28T09:55:20Z<p>Shantanu Tushar: Points for PMC BoF</p>
<hr />
<div>'''PMC Usability test feedback'''<br />
<br />
* Controller icons are too black <br />
* Naming convention of Brwowse Music and All Music not obvious (Browse Music sounds like browsing music files on the basis of artist, albums, etc)<br />
* When user opens All Music, default list of all music should be displayed instead of Artist list<br />
* Search text box should be smaller in size in All music ( currently it looks like creating partition)<br />
* Back buton is not visible<br />
* Cover arts are missing in Artist and Album<br />
* search should be enabled by default i.e if user press any key to search, focus should go automatically to search bar<br />
* One letter search doesn't work (e.g listing all files starting with letter 'M')<br />
<br />
'''PMC BoF'''<br />
<br />
* Need to define project definition and goals<br />
* Need to write user profiles as on [ http://community.kde.org/Plasma/PURP ]<br />
* Need a setup screen (and options while browsing) to add user's media collection to indexing<br />
* Informative messages like "Your collection is still being indexed, you might not see all your media"<br />
* Next release must have artist/album images</div>Shantanu Tusharhttps://community.kde.org/index.php?title=Plasma/Plasma_Media_Center/Release_1.1&diff=33555Plasma/Plasma Media Center/Release 1.12013-07-27T14:27:20Z<p>Shantanu Tushar: /* Planned features */</p>
<hr />
<div>=Release Schedule=<br />
* 01 April - Start of development for PMC 1.1<br />
* 15 June - Feature freeze, no more features to master<br />
* <del>01 July</del> '''01 August''' - PMC 1.1 Beta<br />
* <del>15 July</del> '''11 August''' - PMC 1.1 RC<br />
* <del>01 Aug</del> '''20 August''' - PMC 1.1 release<br />
<br />
=Planned features=<br />
* Refactored common components for media browsers<br />
* Keyboard navigation for All Music mode '''[done]'''<br />
* Youtube backend for watching videos '''[done]'''<br />
* Video/Audio podcasts<br />
<br />
== Achieved features and improvements ==<br />
=== Features ===<br />
* Youtube backend for watching online videos<br />
* Media file association with Plasma Media Center<br />
* Plasma Media Center command line option to open audio and video file in it<br />
$ plasma-mediacenter [--fullscreen] <audio/video file url><br />
* Option to go back to currently playing media on clicking empty area in home-screen <br />
<br />
=== Improvements ===<br />
* Dimming image/video when it is not viewed directly<br />
* Shuffle playlist items instead of playing random item<br />
* Reordering playlist item by holding and dragging to new position<br />
* Deleting playlist item on Holding and dragging item outside playlist<br />
* Dedicated option in home-screen to exit Plasma Media Center</div>Shantanu Tusharhttps://community.kde.org/index.php?title=Plasma/Plasma_Media_Center/Release_1.1&diff=33554Plasma/Plasma Media Center/Release 1.12013-07-27T14:26:53Z<p>Shantanu Tushar: /* Planned features */</p>
<hr />
<div>=Release Schedule=<br />
* 01 April - Start of development for PMC 1.1<br />
* 15 June - Feature freeze, no more features to master<br />
* <del>01 July</del> '''01 August''' - PMC 1.1 Beta<br />
* <del>15 July</del> '''11 August''' - PMC 1.1 RC<br />
* <del>01 Aug</del> '''20 August''' - PMC 1.1 release<br />
<br />
=Planned features=<br />
* Refactored common components for media browsers<br />
* Keyboard navigation for All Music mode [done]<br />
* Youtube backend for watching videos [done]<br />
* Video/Audio podcasts<br />
<br />
== Achieved features and improvements ==<br />
=== Features ===<br />
* Youtube backend for watching online videos<br />
* Media file association with Plasma Media Center<br />
* Plasma Media Center command line option to open audio and video file in it<br />
$ plasma-mediacenter [--fullscreen] <audio/video file url><br />
* Option to go back to currently playing media on clicking empty area in home-screen <br />
<br />
=== Improvements ===<br />
* Dimming image/video when it is not viewed directly<br />
* Shuffle playlist items instead of playing random item<br />
* Reordering playlist item by holding and dragging to new position<br />
* Deleting playlist item on Holding and dragging item outside playlist<br />
* Dedicated option in home-screen to exit Plasma Media Center</div>Shantanu Tusharhttps://community.kde.org/index.php?title=Plasma/Plasma_Media_Center/Release_1.1&diff=33544Plasma/Plasma Media Center/Release 1.12013-07-25T17:15:51Z<p>Shantanu Tushar: Release dates postponed</p>
<hr />
<div>=Release Schedule=<br />
* 01 April - Start of development for PMC 1.1<br />
* 15 June - Feature freeze, no more features to master<br />
* <del>01 July</del> '''01 August''' - PMC 1.1 Beta<br />
* <del>15 July</del> '''11 August''' - PMC 1.1 RC<br />
* <del>01 Aug</del> '''20 August''' - PMC 1.1 release<br />
<br />
=Planned features=<br />
* Refactored common components for media browsers<br />
* Keyboard navigation for All Music mode<br />
* Youtube backend for watching videos<br />
* Video/Audio podcasts<br />
<br />
== Achieved features and improvements ==<br />
=== Features ===<br />
* Youtube backend for watching online videos<br />
* Media file association with Plasma Media Center<br />
* Plasma Media Center command line option to open audio and video file in it<br />
$ plasma-mediacenter [--fullscreen] <audio/video file url><br />
* Option to go back to currently playing media on clicking empty area in home-screen <br />
<br />
=== Improvements ===<br />
* Dimming image/video when it is not viewed directly<br />
* Shuffle playlist items instead of playing random item<br />
* Reordering playlist item by holding and dragging to new position<br />
* Deleting playlist item on Holding and dragging item outside playlist<br />
* Dedicated option in home-screen to exit Plasma Media Center</div>Shantanu Tusharhttps://community.kde.org/index.php?title=Akademy/2013/Tuesday&diff=33247Akademy/2013/Tuesday2013-07-16T10:22:55Z<p>Shantanu Tushar: /* Room B4 - 16 July */</p>
<hr />
<div>= BoF sessions on Tuesday, July 16th 2013 =<br />
<br />
'''All rooms have chalkboards and projectors.'''<br /><br />
Please put your name and email address in the Host/Notes section. There is no length limitation; text will wrap.<br />
<br />
'''NEW THIS YEAR - BoF Wrap-up'''<br /><br />
'''Room B2; 18:00'''<br /><br />
Please join the BoF wrap-up session this evening. Another opportunity for communication. Share outcomes and plans, cross-pollinate, attract attention to your project.<br />
<br />
Please select someone from your BoF to give a summary—topic, what was discussed and decided, what's next, resources desired.<br />
<br />
----<br />
<br />
=== Room A3 - 16 July === <br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Room A3<br />
! seats 42 <br />
! <br />
|-<br />
! Time <br />
! Subject <br />
! Host/Notes<br />
|-<br />
| width="100pt" | 9:30<br />
| width="200pt" | Extending and improving KDE Personas<br />
| width="400pt" | Thomas Pfeiffer<br />
|-<br />
| 10:15 <br />
| Extending and improving KDE Personas<br />
|<br />
|-<br />
| 12:15 <br />
| Lunch <br />
| <br />
|-<br />
| 13:45 <br />
| KDE Desktop HIG<br />
| Aurélien Gâteau <agateau@kde.org><br />
|-<br />
| 15:00 <br />
| KDE Desktop HIG<br />
| Aurélien Gâteau <agateau@kde.org><br />
|-<br />
| 16:00 <br />
| KDE Desktop HIG<br />
| Aurélien Gâteau <agateau@kde.org><br />
|}<br />
<br />
=== Room A4 - 16 July === <br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Room A4<br />
! seats 48 <br />
! <br />
|-<br />
! Time <br />
! Subject <br />
! Host/Notes<br />
|-<br />
| width="100pt" | 9:30<br />
| width="200pt" | KDE e.V. - finding answers to important questions about the future<br />
| width="400pt" | Lydia Pintscher - we'll be doing some soul-searching and discussing important questions about the future of KDE e.V. - members and non-members of KDE e.V. welcome<br />
|-<br />
| 10:15 <br />
| KDE e.V. - finding answers to important questions about the future<br />
| Lydia Pintscher - we'll be doing some soul-searching and discussing important questions about the future of KDE e.V. - members and non-members of KDE e.V. welcome<br />
|-<br />
| 12:30<br />
| Lunch <br />
| <br />
|-<br />
| 14:00<br />
| <br />
| <br />
|-<br />
| 15:00 <br />
| Open Source Speech Recognition: Going forward<br />
| Peter Grasch - Mixture of BoF and Workshop about the next steps to work towards competitive open source speech recognition systems. No prerequisites necessary.<br />
|-<br />
| 16:00 <br />
| Open Source Speech Recognition: Going forward<br />
| Peter Grasch - Mixture of BoF and Workshop about the next steps to work towards competitive open source speech recognition systems. No prerequisites necessary.<br />
|}<br />
<br />
=== Room B1 - 16 July ===<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Room B1<br />
! seats 70<br />
! <br />
|-<br />
! Time <br />
! Subject <br />
! Host/Notes<br />
|-<br />
| width="100pt" | 9:30<br />
| width="200pt" | <br />
| width="400pt" |<br />
|-<br />
| 10:15 <br />
| <br />
| <br />
|-<br />
| 11:30 <br />
| <br />
| <br />
|-<br />
| 12:30 <br />
| Lunch <br />
| <br />
|-<br />
| 13:45 <br />
| <br />
| <br />
|-<br />
| 15:00 <br />
| Frameworks5 Communication Strategy<br />
| Jos, sebas, ... [https://notes.kde.org/p/Frameworks5Communication notes]<br />
|-<br />
| 16:00 <br />
| <br />
| <br />
|}<br />
<br />
=== Room B2 - 16 July ===<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Room B2<br />
! seats 72<br />
!<br />
|-<br />
! Time <br />
! Subject <br />
! Host/Notes<br />
|-<br />
| width="100pt" | 9:30<br />
| width="200pt" | <br />
| width="400pt" |<br />
|-<br />
| 10:30 <br />
| <br />
| <br />
|-<br />
| 12:30<br />
| Lunch <br />
| <br />
|-<br />
| 13:00<br />
| <br />
| <br />
|-<br />
| 14:00<br />
| Mentoring program BoF (Google Summer of Code, Google Code-in, Season of KDE, Outreach Program for Women), current state and what to do in the future<br />
| Lydia Pintscher, Cornelius Schumacher, [[Akademy/2013/BoF/GSoC | more info]]<br />
|-<br />
| 15:00 <br />
| <br />
| <br />
|-<br />
|16:00<br />
| KDE Incubator BoF<br />
| Kevin Ottens<br />
|-<br />
| 17:00<br />
|<br />
|<br />
|-<br />
| 18:00<br />
| [[Akademy/2013/BoFWrapUp|BoF wrap-up]]<br />
| All BoFs report outcomes<br />
|}<br />
<br />
=== Room B3 - 16 July ===<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Room B3<br />
! seats 48 <br />
! <br />
|-<br />
! Time <br />
! Subject <br />
! Host/Notes<br />
|-<br />
| width="100pt" | 9:30<br />
| width="200pt" | <br />
| width="400pt" |<br />
|-<br />
| 10:30 <br />
| <br />
| <br />
|-<br />
| 11:30 <br />
| <br />
| <br />
|-<br />
| 12:30 <br />
| Lunch <br />
| <br />
|-<br />
| 14:00 <br />
| <br />
| <br />
|-<br />
| 15:00 <br />
| <br />
| <br />
|-<br />
| 16:00 <br />
| KDE Edu<br />
| The "general" Edu BoF where we want to talk about everything KDE Edu related not covered in other BoFs: possible topics are (please add topics of interest!)<br />
* Edu on Windows/other platforms<br />
* attracting teachers<br />
* where do we are/where are we going to<br />
* missing apps<br />
* providing Edu libs for others<br />
|}<br />
<br />
=== Room B4 - 16 July ===<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Room B4<br />
! seats 48 <br />
! <br />
|-<br />
! Time <br />
! Subject <br />
! Host/Notes<br />
|-<br />
| width="100pt" | 9:30<br />
| width="200pt" | KDE Frameworks office hours<br />
| width="400pt" | Kevin Ottens or David Faure ([[Frameworks/Meetings/Akademy2013|office hours details]])<br />
|-<br />
| 10:30 <br />
| KDE Frameworks office hours<br />
| Kevin Ottens or David Faure ([[Frameworks/Meetings/Akademy2013|office hours details]])<br />
|-<br />
| 11:30 <br />
| KDE Frameworks office hours<br />
| Kevin Ottens or David Faure ([[Frameworks/Meetings/Akademy2013|office hours details]])<br />
|-<br />
| 12:30 <br />
| Lunch <br />
| <br />
|-<br />
| 14:00 <br />
| Calligra BoF<br />
| Shantanu Tushar <shantanu@kde.org><br />
|-<br />
| 15:00 <br />
| Calligra BoF<br />
| Shantanu Tushar <shantanu@kde.org><br />
|-<br />
| 16:00 <br />
| <br />
| <br />
|}<br />
<br />
=== Room B5 - 16 July ===<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Room B5<br />
! seats 31<br />
!<br />
! <br />
|-<br />
! Time <br />
! Subject <br />
! Host/Notes<br />
! Other projects<br />
|-<br />
| width="80pt" | 9:30<br />
| width="200pt" | <br />
| width="300pt" | <br />
| width="250pt" | <br />
|-<br />
| 10:30 <br />
| <br />
| <br />
|<br />
|-<br />
| 11:30 <br />
| <br />
| <br />
|<br />
|-<br />
| 12:30 <br />
| Lunch <br />
| <br />
|<br />
|-<br />
| 14:00 <br />
| <br />
| <br />
|<br />
|-<br />
| 15:00 <br />
| <br />
| <br />
|<br />
|-<br />
| 16:00 <br />
| <br />
| <br />
|<br />
|}<br />
<br />
=== Coffeeshop - 16 July ===<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Coffeeshop<br />
! seats 45<br />
!<br />
! <br />
|-<br />
! Time <br />
! Subject <br />
! Host/Notes<br />
! Other projects<br />
|-<br />
| width="80pt" | 11:00 - 18:00<br />
| width="200pt" | Tomahawk office hours<br />
| width="300pt" | Tomahawk team (contact: teo- on Freenode)<br />
| width="250pt" | Amarok, Phonon, Phonon-GStreamer, VLC<br />
|}<br />
<br />
<noinclude><br />
<br />
= Other BoF Days =<br />
<br />
[[Akademy/2013/Monday|Monday BoF schedule]]<br />
<br />
[[Akademy/2013/Wednesday|Wednesday BoF schedule]]<br />
<br />
[[Akademy/2013/Thursday|Thursday BoF schedule]]<br />
<br />
[[Akademy/2013/Friday|Friday BoF schedule]]<br />
<br />
= All BOFs on one page =<br />
[[Akademy/2013/AllBoF|All BOFs on one page]]<br />
</noinclude></div>Shantanu Tusharhttps://community.kde.org/index.php?title=Akademy/2013/Tuesday&diff=33242Akademy/2013/Tuesday2013-07-16T08:13:30Z<p>Shantanu Tushar: /* Room B4 - 16 July */</p>
<hr />
<div>= BoF sessions on Tuesday, July 16th 2013 =<br />
<br />
'''All rooms have chalkboards and projectors.'''<br /><br />
Please put your name and email address in the Host/Notes section. There is no length limitation; text will wrap.<br />
<br />
'''NEW THIS YEAR - BoF Wrap-up'''<br /><br />
'''Room B2; 18:00'''<br /><br />
Please join the BoF wrap-up session this evening. Another opportunity for communication. Share outcomes and plans, cross-pollinate, attract attention to your project.<br />
<br />
Please select someone from your BoF to give a summary—topic, what was discussed and decided, what's next, resources desired.<br />
<br />
----<br />
<br />
=== Room A3 - 16 July === <br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Room A3<br />
! seats 42 <br />
! <br />
|-<br />
! Time <br />
! Subject <br />
! Host/Notes<br />
|-<br />
| width="100pt" | 9:30<br />
| width="200pt" | Extending and improving KDE Personas<br />
| width="400pt" | Thomas Pfeiffer<br />
|-<br />
| 10:15 <br />
| Extending and improving KDE Personas<br />
|<br />
|-<br />
| 12:15 <br />
| Lunch <br />
| <br />
|-<br />
| 13:45 <br />
| KDE Desktop HIG<br />
| Aurélien Gâteau <agateau@kde.org><br />
|-<br />
| 15:00 <br />
| KDE Desktop HIG<br />
| Aurélien Gâteau <agateau@kde.org><br />
|-<br />
| 16:00 <br />
| KDE Desktop HIG<br />
| Aurélien Gâteau <agateau@kde.org><br />
|}<br />
<br />
=== Room A4 - 16 July === <br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Room A4<br />
! seats 48 <br />
! <br />
|-<br />
! Time <br />
! Subject <br />
! Host/Notes<br />
|-<br />
| width="100pt" | 9:30<br />
| width="200pt" | KDE e.V. - finding answers to important questions about the future<br />
| width="400pt" | Lydia Pintscher - we'll be doing some soul-searching and discussing important questions about the future of KDE e.V. - members and non-members of KDE e.V. welcome<br />
|-<br />
| 10:15 <br />
| KDE e.V. - finding answers to important questions about the future<br />
| Lydia Pintscher - we'll be doing some soul-searching and discussing important questions about the future of KDE e.V. - members and non-members of KDE e.V. welcome<br />
|-<br />
| 12:15 <br />
| Lunch <br />
| <br />
|-<br />
| 14:00<br />
| <br />
| <br />
|-<br />
| 15:00 <br />
| Open Source Speech Recognition: Going forward<br />
| Peter Grasch - Mixture of BoF and Workshop about the next steps to work towards competitive open source speech recognition systems. No prerequisites necessary.<br />
|-<br />
| 16:00 <br />
| Open Source Speech Recognition: Going forward<br />
| Peter Grasch - Mixture of BoF and Workshop about the next steps to work towards competitive open source speech recognition systems. No prerequisites necessary.<br />
|}<br />
<br />
=== Room B1 - 16 July ===<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Room B1<br />
! seats 70<br />
! <br />
|-<br />
! Time <br />
! Subject <br />
! Host/Notes<br />
|-<br />
| width="100pt" | 9:30<br />
| width="200pt" | <br />
| width="400pt" |<br />
|-<br />
| 10:15 <br />
| <br />
| <br />
|-<br />
| 11:30 <br />
| <br />
| <br />
|-<br />
| 12:30 <br />
| Lunch <br />
| <br />
|-<br />
| 13:45 <br />
| <br />
| <br />
|-<br />
| 15:00 <br />
| <br />
| <br />
|-<br />
| 16:00 <br />
| <br />
| <br />
|}<br />
<br />
=== Room B2 - 16 July ===<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Room B2<br />
! seats 72<br />
!<br />
|-<br />
! Time <br />
! Subject <br />
! Host/Notes<br />
|-<br />
| width="100pt" | 9:30<br />
| width="200pt" | <br />
| width="400pt" |<br />
|-<br />
| 10:30 <br />
| <br />
| <br />
|-<br />
| 12:30<br />
| Lunch <br />
| <br />
|-<br />
| 13:00<br />
| <br />
| <br />
|-<br />
| 14:00<br />
| Mentoring program BoF (Google Summer of Code, Google Code-in, Season of KDE, Outreach Program for Women), current state and what to do in the future<br />
| Lydia Pintscher, Cornelius Schumacher, [[Akademy/2013/BoF/GSoC | more info]]<br />
|-<br />
| 15:00 <br />
| <br />
| <br />
|-<br />
|16:00<br />
| KDE Incubator BoF<br />
| Kevin Ottens<br />
|-<br />
| 17:00<br />
|<br />
|<br />
|-<br />
| 18:00<br />
| [[Akademy/2013/BoFWrapUp|BoF wrap-up]]<br />
| All BoFs report outcomes<br />
|}<br />
<br />
=== Room B3 - 16 July ===<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Room B3<br />
! seats 48 <br />
! <br />
|-<br />
! Time <br />
! Subject <br />
! Host/Notes<br />
|-<br />
| width="100pt" | 9:30<br />
| width="200pt" | <br />
| width="400pt" |<br />
|-<br />
| 10:30 <br />
| <br />
| <br />
|-<br />
| 11:30 <br />
| <br />
| <br />
|-<br />
| 12:30 <br />
| Lunch <br />
| <br />
|-<br />
| 14:00 <br />
| <br />
| <br />
|-<br />
| 15:00 <br />
| <br />
| <br />
|-<br />
| 16:00 <br />
| KDE Edu<br />
| The "general" Edu BoF where we want to talk about everything KDE Edu related not covered in other BoFs: possible topics are (please add topics of interest!)<br />
* Edu on Windows/other platforms<br />
* attracting teachers<br />
* where do we are/where are we going to<br />
* missing apps<br />
* providing Edu libs for others<br />
|}<br />
<br />
=== Room B4 - 16 July ===<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Room B4<br />
! seats 48 <br />
! <br />
|-<br />
! Time <br />
! Subject <br />
! Host/Notes<br />
|-<br />
| width="100pt" | 9:30<br />
| width="200pt" | KDE Frameworks office hours<br />
| width="400pt" | Kevin Ottens or David Faure ([[Frameworks/Meetings/Akademy2013|office hours details]])<br />
|-<br />
| 10:30 <br />
| KDE Frameworks office hours<br />
| Kevin Ottens or David Faure ([[Frameworks/Meetings/Akademy2013|office hours details]])<br />
|-<br />
| 11:30 <br />
| KDE Frameworks office hours<br />
| Kevin Ottens or David Faure ([[Frameworks/Meetings/Akademy2013|office hours details]])<br />
|-<br />
| 12:30 <br />
| Lunch <br />
| <br />
|-<br />
| 14:00 <br />
| <br />
| <br />
|-<br />
| 15:00 <br />
| <br />
| <br />
|-<br />
| 16:00 <br />
| <br />
| <br />
|}<br />
<br />
=== Room B5 - 16 July ===<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Room B5<br />
! seats 31<br />
!<br />
! <br />
|-<br />
! Time <br />
! Subject <br />
! Host/Notes<br />
! Other projects<br />
|-<br />
| width="80pt" | 9:30<br />
| width="200pt" | <br />
| width="300pt" | <br />
| width="250pt" | <br />
|-<br />
| 10:30 <br />
| <br />
| <br />
|<br />
|-<br />
| 11:30 <br />
| <br />
| <br />
|<br />
|-<br />
| 12:30 <br />
| Lunch <br />
| <br />
|<br />
|-<br />
| 14:00 <br />
| <br />
| <br />
|<br />
|-<br />
| 15:00 <br />
| <br />
| <br />
|<br />
|-<br />
| 16:00 <br />
| <br />
| <br />
|<br />
|}<br />
<br />
=== Coffeeshop - 16 July ===<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Coffeeshop<br />
! seats 45<br />
!<br />
! <br />
|-<br />
! Time <br />
! Subject <br />
! Host/Notes<br />
! Other projects<br />
|-<br />
| width="80pt" | 11:00 - 18:00<br />
| width="200pt" | Tomahawk office hours<br />
| width="300pt" | Tomahawk team (contact: teo- on Freenode)<br />
| width="250pt" | Amarok, Phonon, Phonon-GStreamer, VLC<br />
|}<br />
<br />
<noinclude><br />
<br />
= Other BoF Days =<br />
<br />
[[Akademy/2013/Monday|Monday BoF schedule]]<br />
<br />
[[Akademy/2013/Wednesday|Wednesday BoF schedule]]<br />
<br />
[[Akademy/2013/Thursday|Thursday BoF schedule]]<br />
<br />
[[Akademy/2013/Friday|Friday BoF schedule]]<br />
<br />
= All BOFs on one page =<br />
[[Akademy/2013/AllBoF|All BOFs on one page]]<br />
</noinclude></div>Shantanu Tusharhttps://community.kde.org/index.php?title=Akademy/2013/Tuesday&diff=33007Akademy/2013/Tuesday2013-07-07T06:41:22Z<p>Shantanu Tushar: /* Room B4 - 16 July */</p>
<hr />
<div>= BoF sessions on Tuesday, July 16th 2013 =<br />
<br />
'''All rooms have chalkboards and projectors.'''<br /><br />
Please put your name and email address in the Host/Notes section. There is no length limitation; text will wrap.<br />
<br />
'''NEW THIS YEAR - BoF Wrap-up'''<br /><br />
'''Room B2; 18:00'''<br /><br />
Please join the BoF wrap-up session this evening. Another opportunity for communication. Share outcomes and plans, cross-pollinate, attract attention to your project.<br />
<br />
Please select someone from your BoF to give a summary—topic, what was discussed and decided, what's next, resources desired.<br />
<br />
----<br />
<br />
=== Room A3 - 16 July === <br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Room A3<br />
! seats 42 <br />
! <br />
|-<br />
! Time <br />
! Subject <br />
! Host/Notes<br />
|-<br />
| width="100pt" | 9:30<br />
| width="200pt" | Extending and improving KDE Personas<br />
| width="400pt" | Thomas Pfeiffer<br />
|-<br />
| 10:15 <br />
| Extending and improving KDE Personas<br />
|<br />
|-<br />
| 12:15 <br />
| Lunch <br />
| <br />
|-<br />
| 13:45 <br />
| KDE Desktop HIG<br />
| Aurélien Gâteau <agateau@kde.org><br />
|-<br />
| 15:00 <br />
| KDE Desktop HIG<br />
| Aurélien Gâteau <agateau@kde.org><br />
|-<br />
| 16:00 <br />
| KDE Desktop HIG<br />
| Aurélien Gâteau <agateau@kde.org><br />
|}<br />
<br />
=== Room A4 - 16 July === <br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Room A4<br />
! seats 48 <br />
! <br />
|-<br />
! Time <br />
! Subject <br />
! Host/Notes<br />
|-<br />
| width="100pt" | 9:30<br />
| width="200pt" | KDE e.V. - finding answers to important questions about the future<br />
| width="400pt" | Lydia Pintscher - we'll be doing some soul-searching and discussing important questions about the future of KDE e.V. - members and non-members of KDE e.V. welcome<br />
|-<br />
| 10:15 <br />
| KDE e.V. - finding answers to important questions about the future<br />
| Lydia Pintscher - we'll be doing some soul-searching and discussing important questions about the future of KDE e.V. - members and non-members of KDE e.V. welcome<br />
|-<br />
| 12:15 <br />
| Lunch <br />
| <br />
|-<br />
| 14:00<br />
| Open Source Speech Recognition: Going forward<br />
| Peter Grasch - Mixture of BoF and Workshop about the next steps to work towards competitive open source speech recognition systems. No prerequisites necessary.<br />
|-<br />
| 15:00 <br />
| Open Source Speech Recognition: Going forward<br />
| Peter Grasch - Mixture of BoF and Workshop about the next steps to work towards competitive open source speech recognition systems. No prerequisites necessary.<br />
|-<br />
| 16:00 <br />
| Open Source Speech Recognition: Going forward<br />
| Peter Grasch - Mixture of BoF and Workshop about the next steps to work towards competitive open source speech recognition systems. No prerequisites necessary.<br />
|}<br />
<br />
=== Room B1 - 16 July ===<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Room B1<br />
! seats 70<br />
! <br />
|-<br />
! Time <br />
! Subject <br />
! Host/Notes<br />
|-<br />
| width="100pt" | 9:30<br />
| width="200pt" | <br />
| width="400pt" |<br />
|-<br />
| 10:15 <br />
| <br />
| <br />
|-<br />
| 11:30 <br />
| <br />
| <br />
|-<br />
| 12:30 <br />
| Lunch <br />
| <br />
|-<br />
| 13:45 <br />
| <br />
| <br />
|-<br />
| 15:00 <br />
| <br />
| <br />
|-<br />
| 16:00 <br />
| <br />
| <br />
|}<br />
<br />
=== Room B2 - 16 July ===<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Room B2<br />
! seats 72<br />
!<br />
|-<br />
! Time <br />
! Subject <br />
! Host/Notes<br />
|-<br />
| width="100pt" | 9:30<br />
| width="200pt" | <br />
| width="400pt" |<br />
|-<br />
| 10:30 <br />
| <br />
| <br />
|-<br />
| 12:30<br />
| Lunch <br />
| <br />
|-<br />
| 13:00<br />
| <br />
| <br />
|-<br />
| 14:00<br />
| Mentoring program BoF (Google Summer of Code, Google Code-in, Season of KDE, Outreach Program for Women), current state and what to do in the future<br />
| Lydia Pintscher, Cornelius Schumacher, [[Akademy/2013/BoF/GSoC | more info]]<br />
|-<br />
| 15:00 <br />
| Women/Diversity BoF<br />
| Claudia Rauch<br />
|-<br />
|16:00<br />
|<br />
|<br />
|-<br />
| 17:00<br />
|<br />
|<br />
|-<br />
| 18:00<br />
| [[Akademy/2013/BoFWrapUp|BoF wrap-up]]<br />
| All BoFs report outcomes<br />
|}<br />
<br />
=== Room B3 - 16 July ===<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Room B3<br />
! seats 48 <br />
! <br />
|-<br />
! Time <br />
! Subject <br />
! Host/Notes<br />
|-<br />
| width="100pt" | 9:30<br />
| width="200pt" | <br />
| width="400pt" |<br />
|-<br />
| 10:30 <br />
| <br />
| <br />
|-<br />
| 11:30 <br />
| <br />
| <br />
|-<br />
| 12:30 <br />
| Lunch <br />
| <br />
|-<br />
| 14:00 <br />
| <br />
| <br />
|-<br />
| 15:00 <br />
| <br />
| <br />
|-<br />
| 16:00 <br />
| KDE Edu<br />
| The "general" Edu BoF where we want to talk about everything KDE Edu related not covered in other BoFs: possible topics are (please add topics of interest!)<br />
* Edu on Windows/other platforms<br />
* attracting teachers<br />
* where do we are/where are we going to<br />
* missing apps<br />
* providing Edu libs for others<br />
|}<br />
<br />
=== Room B4 - 16 July ===<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Room B4<br />
! seats 48 <br />
! <br />
|-<br />
! Time <br />
! Subject <br />
! Host/Notes<br />
|-<br />
| width="100pt" | 9:30<br />
| width="200pt" | <br />
| width="400pt" |<br />
|-<br />
| 10:30 <br />
| <br />
| <br />
|-<br />
| 11:30 <br />
| <br />
| <br />
|-<br />
| 12:30 <br />
| Lunch <br />
| <br />
|-<br />
| 14:00 <br />
| Calligra BoF<br />
| Shantanu Tushar <shantanu@kde.org><br />
|-<br />
| 15:00 <br />
| Calligra BoF<br />
| Shantanu Tushar <shantanu@kde.org><br />
|-<br />
| 16:00 <br />
| <br />
| <br />
|}<br />
<br />
=== Room B5 - 16 July ===<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Room B5<br />
! seats 31<br />
!<br />
! <br />
|-<br />
! Time <br />
! Subject <br />
! Host/Notes<br />
! Other projects<br />
|-<br />
| width="80pt" | 9:30<br />
| width="200pt" | Tomahawk office hours<br />
| width="300pt" | Tomahawk team (contact: teo- on Freenode)<br />
| width="250pt" | Amarok<br />
|-<br />
| 10:30 <br />
| Tomahawk office hours<br />
| <br />
|<br />
|-<br />
| 11:30 <br />
| Tomahawk office hours<br />
| <br />
|<br />
|-<br />
| 12:30 <br />
| Lunch <br />
| <br />
|<br />
|-<br />
| 14:00 <br />
| Tomahawk office hours<br />
| <br />
|<br />
|-<br />
| 15:00 <br />
| Tomahawk office hours<br />
| <br />
|<br />
|-<br />
| 16:00 <br />
| Tomahawk office hours<br />
| <br />
|<br />
|}<br />
<br />
= Other BoF Days =<br />
<br />
[[Akademy/2013/Monday|Monday BoF schedule]]<br />
<br />
[[Akademy/2013/Wednesday|Wednesday BoF schedule]]<br />
<br />
[[Akademy/2013/Thursday|Thursday BoF schedule]]<br />
<br />
[[Akademy/2013/Friday|Friday BoF schedule]]<br />
<br />
= All BOFs on one page =<br />
[[Akademy/2013/AllBoF|All BOFs on one page]]</div>Shantanu Tusharhttps://community.kde.org/index.php?title=Akademy/2013/Attendees&diff=32096Akademy/2013/Attendees2013-06-05T16:57:04Z<p>Shantanu Tushar: Add shantanu</p>
<hr />
<div>== Arrivals ==<br />
<br />
Please add in order of <u>'''''arrival date'''''<br></u> <br />
<br />
{| cellspacing="0" cellpadding="5" border="1" class="sortable" style="border: 1px solid gray; border-collapse: collapse; text-align: left; width: 831px; height: 131px;"<br />
|- style="background: none repeat scroll 0% 0% rgb(236, 236, 236); white-space: nowrap;"<br />
! Name <br />
! Country<br> <br />
! IRC <br />
! ''Arrival Date'' <br />
! Arrival Time <br />
! Arrival Details <br />
! Notes<br />
|-<br />
| Shantanu Tushar<br />
| India<br />
| Shaan7<br />
| 12 July<br />
| 11:20 AM<br />
| LH 1824<br />
| Bilbao<br />
|-<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|<br />
|-<br />
| <br />
| <br />
| <br />
|<br />
| <br />
| <br />
|<br />
|-<br />
|}<br />
<br />
<br><br />
<br />
== Departures ==<br />
<br />
Please add in order of ''<u>'''departure date'''</u>''<u>''<br>''</u> <br />
<br />
{| cellspacing="0" cellpadding="5" border="1" class="sortable" style="border: 1px solid gray; border-collapse: collapse; text-align: left; width: 831px; height: 131px;"<br />
|- style="background: none repeat scroll 0% 0% rgb(236, 236, 236); white-space: nowrap;"<br />
! Name <br />
! Country<br> <br />
! IRC <br />
! ''Departure Date'' <br />
! Departure Time <br />
! Departure Details <br />
! Notes<br />
|-<br />
| Shantanu Tushar<br />
| India<br />
| Shaan7<br />
| 21 July<br />
| 6:55 AM<br />
| LH 1147<br />
| Bilbao<br />
|-<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|<br />
|-<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-|}</div>Shantanu Tusharhttps://community.kde.org/index.php?title=Akademy/2013/Attendees&diff=32095Akademy/2013/Attendees2013-06-05T16:55:55Z<p>Shantanu Tushar: Add shantanu</p>
<hr />
<div>== Arrivals ==<br />
<br />
Please add in order of <u>'''''arrival date'''''<br></u> <br />
<br />
{| cellspacing="0" cellpadding="5" border="1" class="sortable" style="border: 1px solid gray; border-collapse: collapse; text-align: left; width: 831px; height: 131px;"<br />
|- style="background: none repeat scroll 0% 0% rgb(236, 236, 236); white-space: nowrap;"<br />
! Name <br />
! Country<br> <br />
! IRC <br />
! ''Arrival Date'' <br />
! Arrival Time <br />
! Arrival Details <br />
! Notes<br />
|-<br />
| Shantanu Tushar<br />
| India<br />
| Shaan7<br />
| 12 July<br />
| 11:20 AM<br />
| LH 1824<br />
| Bilbao<br />
|-<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|<br />
|-<br />
| <br />
| <br />
| <br />
|<br />
| <br />
| <br />
|<br />
|-<br />
|}<br />
<br />
<br><br />
<br />
== Departures ==<br />
<br />
Please add in order of ''<u>'''departure date'''</u>''<u>''<br>''</u> <br />
<br />
{| cellspacing="0" cellpadding="5" border="1" class="sortable" style="border: 1px solid gray; border-collapse: collapse; text-align: left; width: 831px; height: 131px;"<br />
|- style="background: none repeat scroll 0% 0% rgb(236, 236, 236); white-space: nowrap;"<br />
! Name <br />
! Country<br> <br />
! IRC <br />
! ''Departure Date'' <br />
! Departure Time <br />
! Departure Details <br />
! Notes<br />
|-<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|<br />
|-<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|<br />
|-<br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
| <br />
|-|}</div>Shantanu Tusharhttps://community.kde.org/index.php?title=Calligra/Meetings/Spring_2013_Sprint/Bangalore&diff=29436Calligra/Meetings/Spring 2013 Sprint/Bangalore2013-01-14T18:34:13Z<p>Shantanu Tushar: /* Venue Map */</p>
<hr />
<div>== Venue Address ==<br />
ThoughtWorks Technologies (India) <br /><br />
2nd floor, ACR Mansion <br /><br />
147/F, 8th Main, 3rd Block <br /><br />
Koramangala, Bangalore-560034, India<br />
<br />
== Venue Map ==<br />
{{#display_map:12.92873, 77.62907|width=600|height=400|service=osm|zoom=16}}<br />
<br />
== Reaching Bangalore ==<br />
Bangalore is well connected to all parts of the country by train, bus and air. Choose what you prefer :)<br />
<br />
== Accomodation ==<br />
We are trying to figure out what will be the best place for us to stay so its easy to get to the venue. We will be adding the information here as we get updates.<br />
For cost estimation, 20 EUR per night per person will be a good estimate. This could have been lower but unfortunately the venue is in one of the costliest areas of the city.</div>Shantanu Tusharhttps://community.kde.org/index.php?title=Calligra/Meetings/Spring_2013_Sprint&diff=29429Calligra/Meetings/Spring 2013 Sprint2013-01-14T18:10:10Z<p>Shantanu Tushar: /* Location */</p>
<hr />
<div>== General information ==<br />
<br />
The sprint will take place from ?.?.2013 to ?.?.2013 at ?<br />
<br />
KDE Sprint page: NONE yet, but requested<br />
<br />
=== Date ===<br />
Date finding page: http://doodle.com/dwznt2uk5de6zgn6<br />
<br />
Currently hot dates: March 8th-10th and March 15th-17th<br />
<br />
=== Location ===<br />
<br />
hot candidates: event happening both at<br />
* the [http://linuxhotel.de/ Linux Hotel (Essen, Germany)]<br />
* the office of ThoughtWorks Bangalore (fallback option: Intel Bangalore) in Bangalore in India (unless we find a sponsor to fly people over to the other continent), See [[/Bangalore/]]<br />
<br />
=== Attendees List ===<br />
<br />
Column explanations:<br />
; Sponsoring needed?: enter if you need sponsoring from the KDE e.V. or if you pay the travel/stay by yourself (please also ask any of your company/employer/donor if they would sponsor you, at least partially). Options are: "Yes", "For accomodation", "For travel", "No". Add note if you might be able/willing to take part of costs yourself, if really needed.<br />
; Estimated travel costs: enter the estimated travel costs you would have to travel to & from LinuxHotel or Bangalore<br />
; Estimated accomodation costs: if you are going to stay at the LinuxHotel, enter the days (e.g. Fri-Sun), if you are going to stay in Bangalore, also give a money estimate <br />
<br />
Also notice the section "3. Financial support" of the [http://ev.kde.org/rules/sprint_policy.php KDE Sprint Policy].<br />
<br />
<br> <br />
<br />
{| cellspacing="0" cellpadding="5" border="1" class="wikitable"<br />
|- style="color: blue;"<br />
| Name <br />
| email <br />
| Area<br />
| Estimated travel costs <br />
| Estimated accomodation costs <br />
| Sponsoring needed? <br />
| Special<br />
|-<br />
| Friedrich W. H. Kossebau<br />
| kossebauATkde.org<br />
| cleaning up, core libs, Words<br />
| 140 €<br />
| LinuxHotel (Fri-Sun)<br />
| Yes (can take parts myself)<br />
| -<br />
|-<br />
| Boudewijn Rempt<br />
| boud@kde.org<br />
| parts stuff<br />
| 100 €<br />
| LinuxHotel (Fri-Sun)<br />
| For acco only <br />
| -<br />
|-<br />
| Sven Langkamp<br />
| sven.langkamp@gmail.com<br />
| Krita<br />
| 0 €<br />
| LinuxHotel (Fri-Sun)<br />
| For acco only <br />
| -<br />
|-<br />
| Dmitry Kazakov<br />
| dimula73@gmail.com<br />
| Krita<br />
| 210-310 € (depending on dates)<br />
| LinuxHotel (Fri-Sun)<br />
| Yes<br />
| -<br />
|-<br />
| Thorsten Zachmann<br />
| zachmann@kde.org<br />
| Stage, Libs<br />
| 60-120 € (depending when booking is done)<br />
| LinuxHotel (Fri-Sun)<br />
| Yes<br />
| -<br />
|-<br />
| Marijn Kruisselbrink<br />
| mkruisselbrink@kde.org<br />
| Sheets<br />
| $1000 - $1200 (depending when booking is done)<br />
| LinuxHotel (Fri-Sun)<br />
| Yes<br />
| Bangalore would be about the same travel costs for me<br />
| -<br />
|-<br />
| Shantanu Tushar<br />
| shantanu@kde.org<br />
| Active<br />
| -<br />
| -<br />
| No<br />
| Bangalore<br />
|-<br />
| Gopalakrishna Bhat A<br />
| gopalakbhat@gmail.com<br />
| Author, Formula Shape<br />
| -<br />
| -<br />
| No<br />
| Bangalore<br />
|-<br />
| Sujith Haridasan<br />
| sujith.h@gmail.com<br />
| Active<br />
| -<br />
| -<br />
| No<br />
| Bangalore<br />
|-<br />
| Jigar Raisinghani<br />
| jigarraisinghani@gmail.com<br />
| Sheets<br />
| 100-150 € ( Depending when booking is done) <br />
| Fri - Sun( 60 €)<br />
| Yes<br />
| Bangalore<br />
|-<br />
|-<br />
| (Your name)<br />
| (your email address)<br />
| (what do you plan to work on)<br />
| (rough realistic amount)<br />
| (days, rough realistic amount)<br />
| (Need sponsoring, for?)<br />
| (anything else, comments?)<br />
|-<br />
|}<br />
<br />
== Equipment ==<br />
<br />
Needed: reliable conferencing system to make space between India - Europe vanish virtually (sadly not possible for timezone difference)<br />
<br />
Any proposals, experiences?<br />
<br />
== Sprint agenda ==<br />
<br />
Below follows a suggested agenda for the sprint. It's free for anybody to put new items below. The actual contents and order for the agenda will be decided at the sprint. Please also indicate who is behind a certain suggestion. If you are interested in something that is already proposed and want to add your opinion, then add your name to the list.<br />
<br />
=== Presentations ===<br />
<br />
''Presentations of things interesting to the Calligra community. Please state targeted audience.''<br />
<br />
* ''Add your presentation here''<br />
<br />
=== BoFs ===<br />
<br />
* Fill in topics here...<br />
<br />
=== Projects ===<br />
<br />
''Projects we'll work on in small groups, mostly coding or creating other concrete results.''<br />
<br />
* ''Add your project here''<br />
<br />
=== Discussions ===<br />
<br />
''Discussions about topics, which are relevant to all or a sub group of people. Please state audience and desired result of the discussion.''<br />
<br />
==== ''Add your discussion topic here'' ====<br />
<br />
== Meeting Notes ==<br />
<br />
''Notes will go here''<br />
<br />
== Blogs ==<br />
<br />
''When you blog about the meeting (and you should ;-), please add a link here''</div>Shantanu Tusharhttps://community.kde.org/index.php?title=Calligra/Meetings/Spring_2013_Sprint/Bangalore&diff=29428Calligra/Meetings/Spring 2013 Sprint/Bangalore2013-01-14T18:08:07Z<p>Shantanu Tushar: Add very basic info, more coming</p>
<hr />
<div>== Venue Address ==<br />
ThoughtWorks Technologies (India)<br />
2nd floor, ACR Mansion<br />
147/F, 8th Main, 3rd Block<br />
Koramangala, Bangalore-560034, India<br />
<br />
== Venue Map ==<br />
I am trying to figure out how to embed OpenStreet Maps or Google Maps into the wiki, till then either<br />
* Search "thoughtworks, bangalore" on OpenStreetMaps<br />
* http://goo.gl/maps/D1ZLW for Google Maps<br />
* latitude 12.92873 longitude 77.62907<br />
<br />
== Reaching Bangalore ==<br />
Bangalore is well connected to all parts of the country by train, bus and air. Choose what you prefer :)<br />
<br />
== Accomodation ==<br />
We are trying to figure out what will be the best place for us to stay so its easy to get to the venue. We will be adding the information here as we get updates.<br />
For cost estimation, 20 EUR per night per person will be a good estimate. This could have been lower but unfortunately the venue is in one of the costliest areas of the city.</div>Shantanu Tusharhttps://community.kde.org/index.php?title=Calligra/Meetings/Spring_2013_Sprint&diff=29424Calligra/Meetings/Spring 2013 Sprint2013-01-14T17:50:20Z<p>Shantanu Tushar: /* Location */</p>
<hr />
<div>== General information ==<br />
<br />
The sprint will take place from ?.?.2013 to ?.?.2013 at ?<br />
<br />
KDE Sprint page: NONE yet, but requested<br />
<br />
=== Date ===<br />
Date finding page: http://doodle.com/dwznt2uk5de6zgn6<br />
<br />
Currently hot dates: March 8th-10th and March 15th-17th<br />
<br />
=== Location ===<br />
<br />
hot candidates: event happening both at<br />
* the [http://linuxhotel.de/ Linux Hotel (Essen, Germany)]<br />
* the office of ThoughtWorks Bangalore (fallback option: Intel Bangalore) in Bangalore in India (unless we find a sponsor to fly people over to the other continent),<br />
<br />
=== Attendees List ===<br />
<br />
Column explanations:<br />
; Sponsoring needed?: enter if you need sponsoring from the KDE e.V. or if you pay the travel/stay by yourself (please also ask any of your company/employer/donor if they would sponsor you, at least partially). Options are: "Yes", "For accomodation", "For travel", "No". Add note if you might be able/willing to take part of costs yourself, if really needed.<br />
; Estimated travel costs: enter the estimated travel costs you would have to travel to & from LinuxHotel or Bangalore<br />
; Estimated accomodation costs: if you are going to stay at the LinuxHotel, enter the days (e.g. Fri-Sun), if you are going to stay in Bangalore, also give a money estimate <br />
<br />
Also notice the section "3. Financial support" of the [http://ev.kde.org/rules/sprint_policy.php KDE Sprint Policy].<br />
<br />
<br> <br />
<br />
{| cellspacing="0" cellpadding="5" border="1" class="wikitable"<br />
|- style="color: blue;"<br />
| Name <br />
| email <br />
| Area<br />
| Estimated travel costs <br />
| Estimated accomodation costs <br />
| Sponsoring needed? <br />
| Special<br />
|-<br />
| Friedrich W. H. Kossebau<br />
| kossebauATkde.org<br />
| cleaning up, core libs, Words<br />
| 140 €<br />
| LinuxHotel (Fri-Sun)<br />
| Yes (can take parts myself)<br />
| -<br />
|-<br />
| Boudewijn Rempt<br />
| boud@kde.org<br />
| parts stuff<br />
| 100 €<br />
| LinuxHotel (Fri-Sun)<br />
| For acco only <br />
| -<br />
|-<br />
| Sven Langkamp<br />
| sven.langkamp@gmail.com<br />
| Krita<br />
| 0 €<br />
| LinuxHotel (Fri-Sun)<br />
| For acco only <br />
| -<br />
|-<br />
| Dmitry Kazakov<br />
| dimula73@gmail.com<br />
| Krita<br />
| 210-310 € (depending on dates)<br />
| LinuxHotel (Fri-Sun)<br />
| Yes<br />
| -<br />
|-<br />
| Thorsten Zachmann<br />
| zachmann@kde.org<br />
| Stage, Libs<br />
| 60-120 € (depending when booking is done)<br />
| LinuxHotel (Fri-Sun)<br />
| Yes<br />
| -<br />
|-<br />
| Marijn Kruisselbrink<br />
| mkruisselbrink@kde.org<br />
| Sheets<br />
| $1000 - $1200 (depending when booking is done)<br />
| LinuxHotel (Fri-Sun)<br />
| Yes<br />
| Bangalore would be about the same travel costs for me<br />
| -<br />
|-<br />
| Shantanu Tushar<br />
| shantanu@kde.org<br />
| Active<br />
| -<br />
| -<br />
| No<br />
| Bangalore<br />
|-<br />
| Gopalakrishna Bhat A<br />
| gopalakbhat@gmail.com<br />
| Author, Formula Shape<br />
| -<br />
| -<br />
| No<br />
| Bangalore<br />
|-<br />
| (Your name)<br />
| (your email address)<br />
| (what do you plan to work on)<br />
| (rough realistic amount)<br />
| (days, rough realistic amount)<br />
| (Need sponsoring, for?)<br />
| (anything else, comments?)<br />
|-<br />
|}<br />
<br />
== Equipment ==<br />
<br />
Needed: reliable conferencing system to make space between India - Europe vanish virtually (sadly not possible for timezone difference)<br />
<br />
Any proposals, experiences?<br />
<br />
== Sprint agenda ==<br />
<br />
Below follows a suggested agenda for the sprint. It's free for anybody to put new items below. The actual contents and order for the agenda will be decided at the sprint. Please also indicate who is behind a certain suggestion. If you are interested in something that is already proposed and want to add your opinion, then add your name to the list.<br />
<br />
=== Presentations ===<br />
<br />
''Presentations of things interesting to the Calligra community. Please state targeted audience.''<br />
<br />
* ''Add your presentation here''<br />
<br />
=== BoFs ===<br />
<br />
* Fill in topics here...<br />
<br />
=== Projects ===<br />
<br />
''Projects we'll work on in small groups, mostly coding or creating other concrete results.''<br />
<br />
* ''Add your project here''<br />
<br />
=== Discussions ===<br />
<br />
''Discussions about topics, which are relevant to all or a sub group of people. Please state audience and desired result of the discussion.''<br />
<br />
==== ''Add your discussion topic here'' ====<br />
<br />
== Meeting Notes ==<br />
<br />
''Notes will go here''<br />
<br />
== Blogs ==<br />
<br />
''When you blog about the meeting (and you should ;-), please add a link here''</div>Shantanu Tusharhttps://community.kde.org/index.php?title=Calligra/Meetings/Spring_2013_Sprint&diff=29339Calligra/Meetings/Spring 2013 Sprint2013-01-14T12:32:50Z<p>Shantanu Tushar: Add Shantanu</p>
<hr />
<div>== General information ==<br />
<br />
The sprint will take place from ?.?.2013 to ?.?.2013 at ?<br />
<br />
KDE Sprint page: NONE yet, but requested<br />
<br />
=== Date ===<br />
Date finding page: http://doodle.com/dwznt2uk5de6zgn6<br />
<br />
Currently hot dates: March 8th-10th and March 15th-17th<br />
<br />
=== Location ===<br />
<br />
hot candidates: event happening both at the [http://linuxhotel.de/ Linux Hotel (Essen, Germany)] and at the office of ThoughtWorks Bangalore (fallback option: Intel Bangalore) in Bangalore in India (unless we find a sponsor to fly people over to the other continent),<br />
<br />
=== Attendees List ===<br />
<br />
Column explanations:<br />
; Sponsoring needed?: enter if you need sponsoring from the KDE e.V. or if you pay the travel/stay by yourself (please also ask any of your company/employer/donor if they would sponsor you, at least partially). Options are: "Yes", "For accomodation", "For travel", "No". Add note if you might be able/willing to take part of costs yourself, if really needed.<br />
; Estimated travel costs: enter the estimated travel costs you would have to travel to & from LinuxHotel or Bangalore<br />
; Estimated accomodation costs: if you are going to stay at the LinuxHotel, enter the days (e.g. Fri-Sun), if you are going to stay in Bangalore, also give a money estimate <br />
<br />
Also notice the section "3. Financial support" of the [http://ev.kde.org/rules/sprint_policy.php KDE Sprint Policy].<br />
<br />
<br> <br />
<br />
{| cellspacing="0" cellpadding="5" border="1" class="wikitable"<br />
|- style="color: blue;"<br />
| Name <br />
| email <br />
| Area<br />
| Estimated travel costs <br />
| Estimated accomodation costs <br />
| Sponsoring needed? <br />
| Special<br />
|-<br />
| Friedrich W. H. Kossebau<br />
| kossebauATkde.org<br />
| cleaning up, core libs, Words<br />
| 140 €<br />
| LinuxHotel (Fri-Sun)<br />
| Yes (can take parts myself)<br />
| -<br />
|-<br />
| Boudewijn Rempt<br />
| boud@kde.org<br />
| parts stuff<br />
| 100 €<br />
| LinuxHotel (Fri-Sun)<br />
| For acco only <br />
| -<br />
|-<br />
| Sven Langkamp<br />
| sven.langkamp@gmail.com<br />
| Krita<br />
| 0 €<br />
| LinuxHotel (Fri-Sun)<br />
| For acco only <br />
| -<br />
|-<br />
| Dmitry Kazakov<br />
| dimula73@gmail.com<br />
| Krita<br />
| 210-310 € (depending on dates)<br />
| LinuxHotel (Fri-Sun)<br />
| Yes<br />
| -<br />
|-<br />
| Thorsten Zachmann<br />
| zachmann@kde.org<br />
| Stage, Libs<br />
| 60-120 € (depending when booking is done)<br />
| LinuxHotel (Fri-Sun)<br />
| Yes<br />
| -<br />
|-<br />
| Marijn Kruisselbrink<br />
| mkruisselbrink@kde.org<br />
| Sheets<br />
| $1000 - $1200 (depending when booking is done)<br />
| LinuxHotel (Fri-Sun)<br />
| Yes<br />
| Bangalore would be about the same travel costs for me<br />
| -<br />
|-<br />
| Shantanu Tushar<br />
| shantanu@kde.org<br />
| Active<br />
| -<br />
| -<br />
| No<br />
| Bangalore<br />
|-<br />
| (Your name)<br />
| (your email address)<br />
| (what you do in Calligra)<br />
| (rough realistic amount)<br />
| (days, rough realistic amount)<br />
| (Need sponsoring, for?)<br />
| (anything else, comments?)<br />
|-<br />
|}<br />
<br />
== Equipment ==<br />
<br />
Needed: reliable conferencing system to make space between India - Europe vanish virtually (sadly not possible for timezone difference)<br />
<br />
Any proposals, experiences?<br />
<br />
== Sprint agenda ==<br />
<br />
Below follows a suggested agenda for the sprint. It's free for anybody to put new items below. The actual contents and order for the agenda will be decided at the sprint. Please also indicate who is behind a certain suggestion. If you are interested in something that is already proposed and want to add your opinion, then add your name to the list.<br />
<br />
=== Presentations ===<br />
<br />
''Presentations of things interesting to the Calligra community. Please state targeted audience.''<br />
<br />
* ''Add your presentation here''<br />
<br />
=== BoFs ===<br />
<br />
* Fill in topics here...<br />
<br />
=== Projects ===<br />
<br />
''Projects we'll work on in small groups, mostly coding or creating other concrete results.''<br />
<br />
* ''Add your project here''<br />
<br />
=== Discussions ===<br />
<br />
''Discussions about topics, which are relevant to all or a sub group of people. Please state audience and desired result of the discussion.''<br />
<br />
==== ''Add your discussion topic here'' ====<br />
<br />
== Meeting Notes ==<br />
<br />
''Notes will go here''<br />
<br />
== Blogs ==<br />
<br />
''When you blog about the meeting (and you should ;-), please add a link here''</div>Shantanu Tusharhttps://community.kde.org/index.php?title=Plasma/Plasma_Media_Center&diff=27546Plasma/Plasma Media Center2012-12-09T17:21:21Z<p>Shantanu Tushar: /* Meetings / BoFs */</p>
<hr />
<div>This page describes the goals for Plasma Media Center (PMC), explains the design choices being made and details the outstanding tasks remaining. <br />
<br />
== Use Cases ==<br />
<br />
=== Viewing Media On The Go With a Laptop ===<br />
<br />
Joe is on a train / airplane travelling between two cities. The trip is long enough to watch the latest episode of his favourite T.V. show which he downloaded the night before from his PVR at home. Joe pops open his laptop, clicks on the Desktop Toolbox and selects "Media Center". PMC loads and he selects "Video", which presents a list of videos on his internal hard drive. <br />
<br />
=== Viewing Media At Home, Laptop -&gt; T.V. ===<br />
<br />
Jane is at home and wants to show her dinner guests pictures from the recent weekend trip she went on. Jane plugs her laptop into the living room television, opens the application launcher (Kickoff, Lancelot) and selects "Media Center". PMC starts up and she selects "Photos" which shows various sets of photo albums. After going through the "Weekend Ski Trip" photos, she goes back and selects Videos -&gt; Youtube and loads a Youtube playlist of top 40 music videos to play in the background while they visit. <br />
<br />
=== A PVR Style Experience ===<br />
<br />
Jaqueline sits down on the couch with her husband Jack and they turn on the television and their Plasma Media Center set top box. They grab the remote control and check the videos that they had recorded / downloaded but haven't watched yet. They select an episode of House and another of Fawlty Towers and press "Play".<br />
<br />
=== Media Center for Plasma Active ===<br />
<br />
PMC now works well with Plama Active. Small video showing PMC running on ExoPC at http://www.youtube.com/watch?v=B8yV2NKiADM .<br />
<br />
== Design Decisions ==<br />
<br />
=== Architecture ===<br />
<br />
On a very high level, PMC is composed of QML components for different parts of the MediaCenter.<br />
<br />
==== Components ====<br />
<br />
<br />
* Media Welcome<br />
It is a QML componnet which hosts the welcome screen which is presented to the user when PMC starts up.<br />
<br />
* Media Browser<br />
It is a QML component which allows user to browse through the media from a backend and to select the desired media to play or view.<br />
<br />
* Media Player<br />
It is a QML component that uses Phonon QML to play Audio/Video and show Images.<br />
<br />
* Media Controller<br />
It is QML component that allows user to control currently playing media status like play/pause, seek, volume.<br />
<br />
* Media Infobar<br />
It is a QML component which shows information about the current media to the user.<br />
<br />
*RuntimeData<br />
It is a QML component which handles various media information that is needed when PMC is running.<br />
<br />
*Playlist<br />
It is a QML component which contains list of media (Music and Videos) files added by user. User can add or remove media anytime from it.<br />
<br />
*ImageViewer<br />
It is a QML component which is responsible to display picture in PMC. It contains pictureStrip component too, which display all available pictures of a directory in the form of strip and provides flexibility to view next, previous and any random selected picture from strip.<br />
<br />
==== Browsing Backends ====<br />
<br />
Another very important component of PMC, browsing backends support PMC to have different sources for media to be used. Backends are plguins so one can, for example, write a plugin to show all images from a image sharing website<br />
<br />
* Local files<br />
<br />
This backend collection allows the user to browse her local filesystem for media. It exposes three backends-<br />
<br />
** Local pictures<br />
** Local music<br />
** Local videos<br />
<br />
* Metadata<br />
<br />
This backend collection uses Plasma Active's metadata model to fetch media from Nepomuk. This should allow us to create groupings based on media tags (such as artist, album etc). Similar to local, this contains three backends-<br />
<br />
** Metadata pictures<br />
** Metadata music<br />
** Metadata videos<br />
<br />
* Flickr<br />
<br />
This backend fetches images related to the given search string from flickr.<br />
<br />
==== Libs ====<br />
<br />
This has core MediaCenter classes to help in functionality.<br />
<br />
==== Shells ====<br />
<br />
This has the actual PMC shell which loads all the components and specifies the positioning of different components within shell. It also provides interconnection between various components.<br />
<br />
=== Mockups ===<br />
<br />
Here are three early Mockups by [http://pinheiro-kde.blogspot.com/ Nuno Pinheiro] (with permission). The top/bottom panel idea has been taken from here (higher resolutions of these on svn)<br> <br />
<br />
[[Image:Nuno albums.JPG|301x189px|Albums]] <br />
<br />
[[Image:Nuno pics.JPG|301x188px]] <br />
<br />
[[Image:Nuno playlist.JPG|303x189px]]<br />
<br />
'''These are from the very early ideas, for current screenshots, see the Status Reports section at the bottom of this page'''<br />
<br />
=== Navigation within PMC ===<br />
<br />
*Wiimote (thanks Sebastian for the initial work on this)<br />
*Keyboard<br />
*Mouse<br />
*Touch<br />
*Remote control<br />
<br />
== TODO ==<br />
<br />
=== Accessibility ===<br />
Make sure that the following input methods work-<br />
*Keyboard<br />
*Touch Gestures (pinch, swipe etc)<br />
*TV Remote (wiimote etc)<br />
<br />
=== Port dataengines (youtube, picasa etc) to new plugins architecture ===<br />
'''hayri?'''<br />
<br />
=== Support for grouping by tag, artists, album etc in Music Plugin ===<br />
'''hayri?'''<br />
<br />
=== Adding DVD/CD play support ===<br />
<br />
=== In general add support for removable devices ===<br />
<br />
=== Documentation ===<br />
<br />
=== Visualizations for music ===<br />
<br />
== Current contributors ==<br />
<br />
'''Fabian Riethmayer''' - fabian on freenode<br />
<br />
'''Marco Martin''' - notmart on freenode<br />
<br />
'''Shantanu Tushar''' - Shaan7 on freenode<br />
<br />
'''Sinny Kumari''' - ksinny on freenode<br />
<br />
== Past contributors ==<br />
<br />
'''Christophe Olinger''' - binarylooks on freenode, olingerc on gitorious.org<br> <br />
<br />
'''Sebastian''' - sebas on freenode <br />
<br />
'''Alessandro''' - alediaferia on freenode<br />
<br />
'''Christopher Blauvelt''' - cblauvelt on freenode <br />
<br />
'''Lukas Appelhans''' - boom1992 on freenode<br />
<br />
'''Onur-Hayri Bakici'''<br />
<br />
... add your name if you have contributed and its missing<br />
<br />
== Plasma Media Center IRC&nbsp;Channel on Freenode ==<br />
<br />
* #plasma on irc.freenode.net<br><br />
<br />
== Repository ==<br />
<br />
Code is browsable at [https://projects.kde.org/projects/playground/multimedia/plasma-mediacenter/repository PMC @ kde git]<br />
<br />
==Meetings / BoFs==<br />
<br />
* '''2012''' BoF at Akademy 2012 [[/Akademy2012/]]<br />
* '''2012''' December december meeting [[/DecemberMeeting/]]<br />
<br />
== Status Reports ==<br />
<br />
'''2012''' [http://sinny.in/node/17] [http://sinny.in/node/18] [http://sinny.in/node/19] [http://www.sinny.in/node/23] [http://sinny.in/node/25] [http://sinny.in/node/27]<br />
<br />
'''2011''' [http://sinny.in/node/12] [http://sinny.in/node/13] [http://sinny.in/node/14] [http://sinny.in/node/15]<br />
<br />
'''2010''' [http://alediaferia.blogspot.com/2010/03/call-for-devs-part-i.html] [http://alediaferia.blogspot.com/2010/04/welcome-to-my-gsoc-student-personal.html] [http://blog.binarylooks.com/2010/05/plasma-media-center-status-report-and-introduction/] <br />
<br />
'''2009''' [http://alediaferia.wordpress.com/2009/04/22/smells-like-summer-of-code/] [http://alediaferia.wordpress.com/2009/04/28/adventures-in-mediacenter-land/] [http://alediaferia.wordpress.com/2009/04/28/get-your-cover/] [http://alediaferia.wordpress.com/2009/05/27/plasmatube/] [http://alediaferia.wordpress.com/2009/06/11/browsing-your-medias/] [http://alediaferia.wordpress.com/2009/06/17/rating-your-medias/] [http://alediaferia.wordpress.com/2009/06/24/media-center-quick-update/] [http://alediaferia.wordpress.com/2009/07/11/still-alive/] [http://alediaferia.wordpress.com/2009/08/08/mediacenter-again/] [http://alediaferia.blogspot.com/2009/08/gsoc-ends-mediacenter-continues.html] [http://alediaferia.blogspot.com/2009/09/plug-your-model-in-mediacenter.html]<br />
<br />
----<br />
<br />
Find the older design and discussions here [[/History/]]</div>Shantanu Tusharhttps://community.kde.org/index.php?title=Plasma/Plasma_Media_Center/DecemberMeeting&diff=27545Plasma/Plasma Media Center/DecemberMeeting2012-12-09T17:20:36Z<p>Shantanu Tushar: Add meeting minutes</p>
<hr />
<div>== Release ==<br />
=== Strategy ===<br />
* Stable, always release-able master<br />
* Features to be worked in separate branches, to be merged after review<br />
* While in freeze, bugs to be reported on bugs.kde.org<br />
<br />
=== Release Plan ===<br />
* Feature Freeze on 12 December 2012<br />
* Plasma Media Center 1.0 Release on 12 February 2013<br />
<br />
=== Plasma Active Packages ===<br />
* Request Lamarque to maintain PMC package for PA<br />
<br />
== Papercuts ==<br />
=== General ===<br />
* No hardcoded colors, take from Plasma::Theme<br />
* Air theme doesn't work there, use Oxygen<br />
* old black-ish wallpaper (Marco to find the wallpaper used in the screenshot of [http://community.kde.org/images.techbase/1/1a/Nuno_pics.JPG] )<br />
* test end to end keyboard navigation<br />
<br />
=== Intro screen ===<br />
* Just a little dot pointer (actionbutton.svgz?) instead of the whole highlight frame<br />
* no about page<br />
* No "Plasma Media Center" label<br />
<br />
=== Browser ===<br />
* A single spinner, not one per file (or static image to resemble loading)<br />
* no zoom of thumbnails on mouse over<br />
* no one pixel gray border<br />
* elide the text on the places sidebar<br />
<br />
== Features ==<br />
=== General ===<br />
* Way to add plasmoids (after 1.0)<br />
* Hidden config option to hide Filesystem browsing backends (for 1.0)<br />
<br />
=== Refactoring ===<br />
* Create reusable components for media browsers (after 1.0)</div>Shantanu Tusharhttps://community.kde.org/index.php?title=Plasma/Plasma_Media_Center/DecemberMeeting&diff=27544Plasma/Plasma Media Center/DecemberMeeting2012-12-09T17:12:45Z<p>Shantanu Tushar: </p>
<hr />
<div>== Release ==<br />
=== Strategy ===<br />
* Stable, always release-able master<br />
* Features to be worked in separate branches, to be merged after review<br />
* While in freeze, bugs to be reported on bugs.kde.org<br />
<br />
=== Release Plan ===<br />
* Feature Freeze on 12 December 2012<br />
* Plasma Media Center 1.0 Release on 12 February 2013<br />
<br />
=== Plasma Active Packages ===<br />
* Request Lamarque to maintain PMC package for PA<br />
<br />
== Papercuts ==<br />
=== General ===<br />
* No hardcoded colors, take from Plasma::Theme<br />
* Air theme doesn't work there, use Oxygen<br />
* old black-ish wallpaper (Marco to find the wallpaper used in the screenshot of [http://community.kde.org/images.techbase/1/1a/Nuno_pics.JPG] )<br />
* test end to end keyboard navigation<br />
<br />
=== Intro screen ===<br />
* Just a little dot pointer (actionbutton.svgz?) instead of the whole highlight frame<br />
* no about page<br />
* No "Plasma Media Center" label<br />
<br />
=== Browser ===<br />
* A single spinner, not one per file<br />
* no zoom of thumbnails on mouse over<br />
* no one pixel gray border<br />
* elide the text on the places sidebar<br />
<br />
== Features ==<br />
=== Refactoring ===<br />
* Create reusable components for media browsers</div>Shantanu Tusharhttps://community.kde.org/index.php?title=Plasma/Plasma_Media_Center/DecemberMeeting&diff=27543Plasma/Plasma Media Center/DecemberMeeting2012-12-09T17:09:10Z<p>Shantanu Tushar: </p>
<hr />
<div>== Release ==<br />
=== Strategy ===<br />
* Stable, always release-able master<br />
* Features to be worked in separate branches, to be merged after review<br />
* While in freeze, bugs to be reported on bugs.kde.org<br />
<br />
=== Release Plan ===<br />
* Feature Freeze on 12 December 2012<br />
* Plasma Media Center 1.0 Release on 12 February 2013<br />
<br />
=== Plasma Active Packages ===<br />
* Request Lamarque to maintain PMC package for PA<br />
<br />
== Papercuts ==<br />
=== General ===<br />
* No hardcoded colors, take from Plasma::Theme<br />
* Air theme doesn't work there, use Oxygen<br />
* old black-ish wallpaper<br />
* test end to end keyboard navigation<br />
<br />
=== Intro screen ===<br />
* Just a little dot pointer (actionbutton.svgz?) instead of the whole highlight frame<br />
* no about page<br />
<br />
=== Browser ===<br />
* A single spinner, not one per file<br />
* no zoom of thumbnails on mouse over<br />
* no one pixel gray border<br />
<br />
== Features ==<br />
=== Refactoring ===<br />
* Create reusable components for media browsers</div>Shantanu Tusharhttps://community.kde.org/index.php?title=Plasma/Plasma_Media_Center/DecemberMeeting&diff=27541Plasma/Plasma Media Center/DecemberMeeting2012-12-09T17:06:29Z<p>Shantanu Tushar: Add release</p>
<hr />
<div>== Release ==<br />
=== Strategy ===<br />
* Stable, always release-able master<br />
* Features to be worked in separate branches, to be merged after review<br />
=== Release Plan ===<br />
* Feature Freeze on 12 December 2012<br />
* Plasma Media Center 1.0 Release on 12 February 2013<br />
<br />
== Papercuts ==<br />
=== General ===<br />
* No hardcoded colors, take from Plasma::Theme<br />
* Air theme doesn't work there, use Oxygen<br />
* old black-ish wallpaper<br />
* test end to end keyboard navigation<br />
<br />
=== Intro screen ===<br />
* Just a little dot pointer (actionbutton.svgz?) instead of the whole highlight frame<br />
* no about page<br />
<br />
<br />
=== Browser ===<br />
* A single spinner, not one per file<br />
* no zoom of thumbnails on mouse over<br />
* no one pixel gray border</div>Shantanu Tusharhttps://community.kde.org/index.php?title=Plasma/Plasma_Media_Center&diff=26894Plasma/Plasma Media Center2012-11-27T17:59:20Z<p>Shantanu Tushar: Add fabian to /* Current contributors */</p>
<hr />
<div>This page describes the goals for Plasma Media Center (PMC), explains the design choices being made and details the outstanding tasks remaining. <br />
<br />
== Use Cases ==<br />
<br />
=== Viewing Media On The Go With a Laptop ===<br />
<br />
Joe is on a train / airplane travelling between two cities. The trip is long enough to watch the latest episode of his favourite T.V. show which he downloaded the night before from his PVR at home. Joe pops open his laptop, clicks on the Desktop Toolbox and selects "Media Center". PMC loads and he selects "Video", which presents a list of videos on his internal hard drive. <br />
<br />
=== Viewing Media At Home, Laptop -&gt; T.V. ===<br />
<br />
Jane is at home and wants to show her dinner guests pictures from the recent weekend trip she went on. Jane plugs her laptop into the living room television, opens the application launcher (Kickoff, Lancelot) and selects "Media Center". PMC starts up and she selects "Photos" which shows various sets of photo albums. After going through the "Weekend Ski Trip" photos, she goes back and selects Videos -&gt; Youtube and loads a Youtube playlist of top 40 music videos to play in the background while they visit. <br />
<br />
=== A PVR Style Experience ===<br />
<br />
Jaqueline sits down on the couch with her husband Jack and they turn on the television and their Plasma Media Center set top box. They grab the remote control and check the videos that they had recorded / downloaded but haven't watched yet. They select an episode of House and another of Fawlty Towers and press "Play".<br />
<br />
=== Media Center for Plasma Active ===<br />
<br />
PMC now works well with Plama Active. Small video showing PMC running on ExoPC at http://www.youtube.com/watch?v=B8yV2NKiADM .<br />
<br />
== Design Decisions ==<br />
<br />
=== Architecture ===<br />
<br />
On a very high level, PMC is composed of QML components for different parts of the MediaCenter.<br />
<br />
==== Components ====<br />
<br />
<br />
* Media Welcome<br />
It is a QML componnet which hosts the welcome screen which is presented to the user when PMC starts up.<br />
<br />
* Media Browser<br />
It is a QML component which allows user to browse through the media from a backend and to select the desired media to play or view.<br />
<br />
* Media Player<br />
It is a QML component that uses Phonon QML to play Audio/Video and show Images.<br />
<br />
* Media Controller<br />
It is QML component that allows user to control currently playing media status like play/pause, seek, volume.<br />
<br />
* Media Infobar<br />
It is a QML component which shows information about the current media to the user.<br />
<br />
*RuntimeData<br />
It is a QML component which handles various media information that is needed when PMC is running.<br />
<br />
*Playlist<br />
It is a QML component which contains list of media (Music and Videos) files added by user. User can add or remove media anytime from it.<br />
<br />
*ImageViewer<br />
It is a QML component which is responsible to display picture in PMC. It contains pictureStrip component too, which display all available pictures of a directory in the form of strip and provides flexibility to view next, previous and any random selected picture from strip.<br />
<br />
==== Browsing Backends ====<br />
<br />
Another very important component of PMC, browsing backends support PMC to have different sources for media to be used. Backends are plguins so one can, for example, write a plugin to show all images from a image sharing website<br />
<br />
* Local files<br />
<br />
This backend collection allows the user to browse her local filesystem for media. It exposes three backends-<br />
<br />
** Local pictures<br />
** Local music<br />
** Local videos<br />
<br />
* Metadata<br />
<br />
This backend collection uses Plasma Active's metadata model to fetch media from Nepomuk. This should allow us to create groupings based on media tags (such as artist, album etc). Similar to local, this contains three backends-<br />
<br />
** Metadata pictures<br />
** Metadata music<br />
** Metadata videos<br />
<br />
* Flickr<br />
<br />
This backend fetches images related to the given search string from flickr.<br />
<br />
==== Libs ====<br />
<br />
This has core MediaCenter classes to help in functionality.<br />
<br />
==== Shells ====<br />
<br />
This has the actual PMC shell which loads all the components and specifies the positioning of different components within shell. It also provides interconnection between various components.<br />
<br />
=== Mockups ===<br />
<br />
Here are three early Mockups by [http://pinheiro-kde.blogspot.com/ Nuno Pinheiro] (with permission). The top/bottom panel idea has been taken from here (higher resolutions of these on svn)<br> <br />
<br />
[[Image:Nuno albums.JPG|301x189px|Albums]] <br />
<br />
[[Image:Nuno pics.JPG|301x188px]] <br />
<br />
[[Image:Nuno playlist.JPG|303x189px]]<br />
<br />
'''These are from the very early ideas, for current screenshots, see the Status Reports section at the bottom of this page'''<br />
<br />
=== Navigation within PMC ===<br />
<br />
*Wiimote (thanks Sebastian for the initial work on this)<br />
*Keyboard<br />
*Mouse<br />
*Touch<br />
*Remote control<br />
<br />
== TODO ==<br />
<br />
=== Accessibility ===<br />
Make sure that the following input methods work-<br />
*Keyboard<br />
*Touch Gestures (pinch, swipe etc)<br />
*TV Remote (wiimote etc)<br />
<br />
=== Port dataengines (youtube, picasa etc) to new plugins architecture ===<br />
'''hayri?'''<br />
<br />
=== Support for grouping by tag, artists, album etc in Music Plugin ===<br />
'''hayri?'''<br />
<br />
=== Adding DVD/CD play support ===<br />
<br />
=== In general add support for removable devices ===<br />
<br />
=== Documentation ===<br />
<br />
=== Visualizations for music ===<br />
<br />
== Current contributors ==<br />
<br />
'''Fabian Riethmayer''' - fabian on freenode<br />
<br />
'''Marco Martin''' - notmart on freenode<br />
<br />
'''Shantanu Tushar''' - Shaan7 on freenode<br />
<br />
'''Sinny Kumari''' - ksinny on freenode<br />
<br />
== Past contributors ==<br />
<br />
'''Christophe Olinger''' - binarylooks on freenode, olingerc on gitorious.org<br> <br />
<br />
'''Sebastian''' - sebas on freenode <br />
<br />
'''Alessandro''' - alediaferia on freenode<br />
<br />
'''Christopher Blauvelt''' - cblauvelt on freenode <br />
<br />
'''Lukas Appelhans''' - boom1992 on freenode<br />
<br />
'''Onur-Hayri Bakici'''<br />
<br />
... add your name if you have contributed and its missing<br />
<br />
== Plasma Media Center IRC&nbsp;Channel on Freenode ==<br />
<br />
* #plasma on irc.freenode.net<br><br />
<br />
== Repository ==<br />
<br />
Code is browsable at [https://projects.kde.org/projects/playground/multimedia/plasma-mediacenter/repository PMC @ kde git]<br />
<br />
==Meetings / BoFs==<br />
<br />
'''2012''' BoF at Akademy 2012 [[/Akademy2012/]]<br />
<br />
== Status Reports ==<br />
<br />
'''2012''' [http://sinny.in/node/17] [http://sinny.in/node/18] [http://sinny.in/node/19] [http://www.sinny.in/node/23]<br />
<br />
'''2011''' [http://sinny.in/node/12] [http://sinny.in/node/13] [http://sinny.in/node/14] [http://sinny.in/node/15]<br />
<br />
'''2010''' [http://alediaferia.blogspot.com/2010/03/call-for-devs-part-i.html] [http://alediaferia.blogspot.com/2010/04/welcome-to-my-gsoc-student-personal.html] [http://blog.binarylooks.com/2010/05/plasma-media-center-status-report-and-introduction/] <br />
<br />
'''2009''' [http://alediaferia.wordpress.com/2009/04/22/smells-like-summer-of-code/] [http://alediaferia.wordpress.com/2009/04/28/adventures-in-mediacenter-land/] [http://alediaferia.wordpress.com/2009/04/28/get-your-cover/] [http://alediaferia.wordpress.com/2009/05/27/plasmatube/] [http://alediaferia.wordpress.com/2009/06/11/browsing-your-medias/] [http://alediaferia.wordpress.com/2009/06/17/rating-your-medias/] [http://alediaferia.wordpress.com/2009/06/24/media-center-quick-update/] [http://alediaferia.wordpress.com/2009/07/11/still-alive/] [http://alediaferia.wordpress.com/2009/08/08/mediacenter-again/] [http://alediaferia.blogspot.com/2009/08/gsoc-ends-mediacenter-continues.html] [http://alediaferia.blogspot.com/2009/09/plug-your-model-in-mediacenter.html]<br />
<br />
----<br />
<br />
Find the older design and discussions here [[/History/]]</div>Shantanu Tusharhttps://community.kde.org/index.php?title=Calligra_Active&diff=24908Calligra Active2012-09-26T15:27:59Z<p>Shantanu Tushar: Updates</p>
<hr />
<div>= Introduction =<br />
<br />
Calligra Active is a Calligra interface tailored specifically for use with [[Plasma/Active]] on tablet devices.<br />
Read more about the first release at http://www.shantanutushar.com/content/calligra-now-active<br />
<br />
Started off as a generic QML UI for Calligra in January 2011, Calligra Active now aims to provide a basic Office viewer for the Plasma Active project. The source code resides inside the active/ subdirectory of the [[Calligra]] repository at https://projects.kde.org/projects/calligra/repository<br />
<br />
= Features =<br />
<br />
== Current Features ==<br />
* Open Text Documents, Spreadsheets, Presentations<br />
* Search for text in Text Documents<br />
* Flick and pan<br />
* Easy to use toolbars - now adapt to document properties<br />
* Slideshow mode<br />
* Select and copy for Text documents<br />
* Browse pages in Text documents<br />
* Slide selector for Slideshows<br />
<br />
== Planned features ==<br />
* Pinch zoom<br />
* Custom slideshow mode<br />
* Search for text in Spreadsheets, Presentations<br />
<br />
== Junior Jobs ==<br />
* Select and copy for Spreadsheets, Presentations<br />
<br />
= Release cycle =<br />
<br />
Even though officially a part of the Calligra suite, Calligra Active follows the release schedule from the Plasma Active project and contributions should be made according to the same.<br />
<br />
= Contact =<br />
<br />
*calligra-devel mailing list at https://mail.kde.org/mailman/listinfo/calligra-devel<br />
* #calligra or #active on freenode</div>Shantanu Tusharhttps://community.kde.org/index.php?title=GSoC/2012/StatusReports&diff=23955GSoC/2012/StatusReports2012-09-09T16:46:40Z<p>Shantanu Tushar: We no longer use #plasma-mediacenter</p>
<hr />
<div>Status Report:GSoC and SoK 2012<br />
<br />
= GSoC =<br />
<br />
== Puneet Goyal ==<br />
<br />
'''Project Name:''' Enhancement to peer-to-peer DBus for Telepathy DBus Tubes<br />
<br />
'''A _Brief_ Description''' Telepathy is a modular framework for real-time communications that handles voice, video, text, file transfer, and so on. It makes extensive use of the D-Bus messaging bus and a modular design. When an application connects to a peer to peer dbus tube, it must know what exactly to look for. Even When it registers for another object, the other side of the tube must know about it. So the ideas is to create a class that could ease the object to register and unregister on the DBus Tubes, and to provide you with an interface similar to the one as a DBus Server.<br />
<br />
''' Status: ''' <br />
org.freedesktop.DBus.Peer Interface and Adaptor- complete<br />
org.freedesktop.DBus.ObjectManager Interface and Adaptor - complete<br />
Tabbed Kwhiteboard using ObjectManager Interface - Pending<br />
<br />
<br />
''' Screenshot: '''<br />
<br />
''' IRC Nick: ''' puneetgoyal<br />
<br />
''' IRC Channels: ''' #kde-telepathy, #kde-in<br />
<br />
'''Blog: ''' http://blog.puneetgoyal.co.in<br />
<br />
''' This is awesome about GSoC: '''<br />
<br />
''' This is what I learned during GSoC: '''<br />
<br />
== Cyril Oblikov ==<br />
<br />
'''Project Name:''' Asynchronous errors handling during file transfer<br />
<br />
'''A _Brief_ Description''' The goal is to bring powerful, easy to use and suitable for both desktops and touch devices way to handle errors during copying or moving files. Since this project will be finished, errors will no more block copying process. The functionality for kdelibs is already done in last GSoC. You can see my blog posts about it: [http://en.munknex.net/2011/07/gsoc-errors-handling-during-file.html first], [http://en.munknex.net/2011/08/gsoc-results-interaction-dialog.html second]. <br />
<br />
''' Google+: ''' [https://plus.google.com/106405830534079517375 munknex]<br />
<br />
'''Blog: ''' http://munknex.net<br />
<br />
'''Report 1: ''' [http://en.munknex.net/2012/06/new-kde-copy-dialog-first-preview.html New KDE Copy Dialog: First Preview]<br />
<br />
== Rishab Arora ==<br />
<br />
'''Project Name:''' Improving Data Storage, Logs and adding DSO catalogs to KStars <br />
<br />
'''A _Brief_ Description''' My proposal aims at improving the way the data is handled inside KStars. All user data which is currently being fed by multiple text files can be consolidated into a SQLite database which also makes the data more manageable and resolves many issues. This will also let me improve drastically on the ability to create portable logs about sky objects with a detailed interface and storage. However, in cases where reading the text files (comma/space/colon delimited) is necessary, I shall create separate provisions for processing them which is robust, tested and reliable. I shall also target the way the sky objects are stored and referenced and transfer all those objects to another SQLite database to make the data more manageable.<br />
<br />
''' Status: ''' User generated data is now stored in a SQLite database. Built file parsers to handle text file processing where absolutely required. Custom catalogs are now stored in a specially designed DB, adding more catalogs is more robust and versatile. Finishing up some features and documentation and working on merging my work.<br />
<br />
''' IRC Nick: ''' spacetime<br />
<br />
''' IRC Channels: ''' #kde-edu #kstars #kde-in<br />
<br />
'''Blog: ''' http://blog.rishab.in/category/kde/<br />
<br />
''' This is awesome about GSoC: ''' I got the chance to work with amazing people from all over the world. And had an awesome time at Akademy! :)<br />
<br />
''' This is what I learned during GSoC: ''' <br />
Just because you cannot see something, doesn't mean it isn't important. <br />
Clarity and readability are as important as working code. <br />
Contributing to any project is a very satisfying experience!<br />
<br />
== Shreya Pandit ==<br />
<br />
'''Project Name:''' Introduction of Context Action Based Layout and UI Improvements in Gluon Creator<br />
<br />
'''A _Brief_ Description''' Gluon Creator, as we all know is that wonder pen, that allows a gaming freak to wield his magic with click-and-go! The craze for game development has grown exponentially in terms of popularity in the last few years. For an open source lover, an obvious choice to start with is Gluon Creator. It would be so awesome, if everyone, from a novice to a professional feels elated and at ease while dealing with creator.<br />
<br />
The project caters to this by introducing a new Slideshow feature like the Startup tutorial in Qt creator, that acquaints the user with all aspects of the application. It also aims at introducing a Game Distribution Wizard, that will reform the way users can share and enjoy games! Finally, I will reform many parts of Gluon Creator's current UI layout,making it more context based,so that it is more informative and usable :)<br />
<br />
''' Status: ''' The slideshow has been completed. The welcome screen has now been modified to show all new options, and the old page based layout is now gone. Now I am working on the context based layout feature, that tracks current focus of Creator and applies all actions (cut/copy/paste/save and the like) correctly to whatever is in user's attention.<br />
<br />
''' IRC Nick: ''' shreyap<br />
<br />
''' IRC Channels: ''' #gluon #kde-in<br />
<br />
'''Blog: ''' www.shreyapandit.com<br />
<br />
== Sinny Kumari ==<br />
<br />
'''Project:''' Advanced features and enhancements for Plasma Media Center <br />
<br />
'''A _Brief_ Description''' Plasma Media Center (PMC) aims to provide users all the media related facilities like Listening Music, Watching Videos, Viewing Pictures, etc. Currently, PMC have all the basic features that a Media Center need to have. My project is to add advanced features in PMC like add to playlist, cover fetching, picture slideshow, tagging, online services like fetching pictures from picasa and many more.<br />
<br />
'''Link (Wiki):'''http://techbase.kde.org/Projects/Plasma/Plasma_Media_Center<br />
<br />
'''Link (Project):''' https://projects.kde.org/projects/playground/multimedia/plasma-mediacenter/repository<br />
<br />
'''Blog:''' http://www.sinny.in/node/23 http://www.sinny.in/node/21 http://www.sinny.in/node/19<br />
<br />
'''IRC :''' #plasma (ksinny)<br />
<br />
== Sitalo Vladislav ==<br />
<br />
'''Project Name:''' Simon SPHINX support<br />
<br />
'''A _Brief_ Description''' Currently Simon uses the HTK to handle acoustic model compilation and adaption. As a recognizer, the Julius recognition engine is used. <br />
These components have proved to be reliable and work quite well, but their development is not very active and both have complicated licenses. The HTK license for example, does not allow redistribution and requires a registration to download the HTK source code. <br />
CMU SPHINX from the Carnegie Mellon University can replace both the HTK and Julius, is licensed under the BSD license and included in most major distributions. Additionally, it's actively developed, widely supported and a lot of free acoustic models are already available.<br />
<br />
''' IRC Nick: ''' Stvad<br />
<br />
''' IRC Channels: ''' #kde-accessibility<br />
<br />
''' G+: ''' https://plus.google.com/100029252840852232716/<br />
<br />
'''Blog: ''' http://blog.stvad.org<br />
<br />
== Yash Shah ==<br />
<br />
'''Project Name:''' Multimodal Accessibility: Using Computer Vision to improve Speech Recognition in Simon <br />
<br />
'''A _Brief_ Description''' A major obstacle for command and control speech recognition systems is to differentiate commands from background noise. Many systems solve this by using physical buttons or certain key phrases to activate/deactivate the speech recognition. This project explores the use of computer vision to determine when to activate / deactivate the sound recognition using visual cues. For a media centre or robot applications, it would make a lot more sense to only activate the recognition when the user is actively looking at the screen/robot and is speaking something. This is strikingly similar to the day-to-day communication between humans! Face recognition can also be employed to provide different speech models for different people. In this way the media centre could adapt to different people in one household. <br />
[http://yashshah.com/blog/google-summer-of-code-2012-kde/ Checkout my blog post about it]<br />
<br />
''' IRC Nick: ''' yashshah<br />
<br />
''' IRC Channels: ''' #kde-accessibility<br />
<br />
'''Blog: ''' [http://yashshah.com/blog/category/kde/ yashshah.com/blog/category/kde/]<br />
<br />
== Vinay S Rao ==<br />
<br />
'''Project Name:''' Gluon: Implementing Saving/Loading Gluon Engine's Game State <br />
<br />
'''A _Brief_ Description''' <br />
My project mainly involves providing effective ways to save the Gluon Engine's Game state. This is a feature that any game developer would like to provide. To implement this first requires serialization of the current scene of the game. My project takes this further, by creating basic scene graphs, to compare two scenes. That way, only the necessary data is saved. Also, variants of basic save/load APIs like checkpoints, level saves etc are to be built. I plan to follow up this GSoC project, with an implementation of a replay feature, that takes scene graphs further by using timestamps of events, and using deterministic prediction to minimize data and processing required.<br />
<br />
''' IRC Nick: ''' vsrao<br />
<br />
== Zhengliang Feng ==<br />
<br />
'''Project Name:''' Integrate Spotify into Amarok<br />
<br />
'''A _Brief_ Description''' This project is to integrate Spotify collection and music streaming into Amarok. So that users can login into Spotify, access their playlists and stream & play music through Amarok.<br />
<br />
''' Status: ''' Spotify collection has successfully showed up in the main UI, users can search, stream and play music in Amarok now. A configuration dialog is working in progress. The playlist sync will be available soon too.<br />
<br />
''' Screenshots: ''' [http://i.imgur.com/bfdOi.png] [http://i.imgur.com/zIldm.png]<br />
<br />
''' IRC Nick: ''' ofan<br />
<br />
''' IRC Channels: ''' #kde-soc, #amarok.dev<br />
<br />
'''Blog: ''' http://ofan.me<br />
<br />
''' This is awesome about GSoC: ''' GSoC offered an great opportunity to practice programming skills and contribute code to open source projects.<br />
<br />
''' This is what I learned during GSoC: ''' Communication is very important.<br />
<br />
== Viranch Mehta ==<br />
<br />
'''Project Name:''' KDE games: Port KBreakout to QtQuick<br />
<br />
''' Brief Description: ''' The project is to port the current game graphics interface to Qt's popular QtQuick.<br />
<br />
''' Status: ''' Porting complete: Open for alpha testing and bug fixing.<br />
<br />
''' IRC Nick: ''' viranch<br />
<br />
''' IRC Channels: ''' #kde-games<br />
<br />
== Jigar Raisinghani ==<br />
<br />
'''Project Name:''' SUPPORT FOR PIVOT TABLES IN CALLIGRA SHEETS<br />
<br />
'''A _Brief_ Description''' Pivot Tables will be a data summarization feature for data visualization application (Calligra Sheets). Users can summarize data (also from ods files) by simply using drag & drop functionality. User has the freedom to choose the interested fields to work with and organize/summarize data as he/she wishes. It gives the user the analytical power by allowing him/her to rotate/transform columns to rows and vice versa and hence called “PIVOT”.<br />
<br />
''' Status: ''' Working on Extraction of data using QAbstractTableModel implementation<br />
<br />
''' Screenshot: ''' In the blog link given below<br />
<br />
''' IRC Nick: ''' jigar<br />
<br />
''' IRC Channels: ''' #kde #calligra<br />
<br />
'''Blog: ''' http://jigarraisinghani.blogspot.in/2012/06/pivot-tablesdesign.html<br />
<br />
== Paul Mendez ==<br />
<br />
'''Project Name:''' Support for edition of shape animations in Calligra Stage<br />
<br />
'''A _Brief_ Description''' At present, Calligra Stage can only show shape animations it loads from a file. It is not possible to add, edit or remove shape animations using Calligra Stage user interface. The goal of this project is to implement an user interface to let users easily add, edit or remove shape animations, manage animation trigger events and change animation parameters.<br />
<br />
''' Status: ''' Support of formula tag for animations is already commited. User interface and data model used to present animation data of each slide in a docker is done. I have also added an interface to load predefined animations stored in a xml file and unit test for the animations data model.<br />
User interface include: A basic list view where user can add, remove, or reorder animations. Edition of trigger events using context menu. Preview animations on document and on add animations dialog (automatic preview or preview using hover buttons). A time line view for advanced editing of duration and begin time of animations. A widget with predefined animations (used on adding or editing animations). Basic manipulation of motion path animations. Some icons for predefined animations (motion path animation icons are drawn using shape saved on xml config file).<br />
<br />
''' Screenshot: '''<br />
[[File:Stage_animation_tool_1.png|200px|thumb|center]]<br />
''' IRC Nick: ''' paul_m<br />
<br />
''' IRC Channels: ''' #kde #calligra<br />
<br />
'''Blog: ''' http://paulm-byte.blogspot.com/<br />
<br />
== Avnee Nathani ==<br />
<br />
'''Project Name: ''' Porting KDiamond (game) to Qt Quick<br />
<br />
'''Brief Description: ''' KDiamond is one of the addictive KDE-Games. Whilst the game is very intuitive to play, I feel that the gameplay and the user interactions can be improved to make it more compelling. My proposal is to port KDiamond to Qt Quick - which would allow me to enhance the UI for better gameplay, and with the UI capabilities of QML - give a new feel of the game to the player. I also plan to add some more UI components like - dialogs, particles effect, transitions to the game to to make it more engaging and fun to play!<br />
<br />
'''Status: ''' Implementing UI of the game - adding transitions and animations, integrating game graphics<br />
<br />
'''IRC Nick: ''' AvneeNathani<br />
<br />
'''IRC Channels: ''' #kdegames<br />
<br />
'''Blog: ''' http://avnee.wordpress.com/<br />
<br />
== Smit Mehta ==<br />
<br />
'''Project Name:''' UPnP / DLNA plugin for digiKam (as a kipi-plugin)<br />
<br />
'''A _Brief_ Description''' In the gadget-centric world of today, people will love the ability to share their photographs, managed by digiKam over other media devices without duplicating the data. Users will always want to showcase their art work in digiKam over better media devices like a giant TV. DLNA is a relatively new technology developed by Sony Cororation, based on UPnP protocols, where you can share multimedia over your home network via a router. So after the plugin is made, it will allow digikam's discovery on all the media devices connected to the network (say, TV, pads, phones, etc) and enable sharing of images.<br />
<br />
''' Status: ''' Plugin is done. Working on devices except Sony Bravia devices. Debugging going on in coordination with HUPnP library writer, Tuomo Penttinen. Will add implementation option by miniDLNA (written by Justin Mggard) as well, to compare the perfomances and finally selecting one before releasing it into production in christmas edition.<br />
<br />
''' IRC Nick: ''' alloy<br />
<br />
''' IRC Channels: ''' #digikam<br />
<br />
== Abhinav Badola ==<br />
<br />
'''Project Name:''' Video Metadata Support in Exiv2 library<br />
<br />
'''Brief Description''' All recent digital-still camera devices provide video capture. digiKam must be able to manage these files as it do with images. digiKam can already play-back video and register files to the database, but it lack important metadata used to catalogue and sort items (as date, camera name, and all record conditions). To improve video files support, video metadata management done in background needs to be improved. This requires extensive work to be done on Exiv2 shared library, the back-bone of digiKam for photo metadata handling.<br />
<br />
''' Status: ''' Implemented read functionality for the RIFF and Matroska container format, Completed Database Management in digiKam.<br />
Next working on QuickTime and ASF file format. <br />
<br />
''' IRC Nick: ''' badola<br />
<br />
''' IRC Channels: ''' #digikam, #kde, #kde-in,<br />
<br />
== Amandeep Singh ==<br />
<br />
'''Project Name: ''' Focus Tracking in KWin / KMagnifier <br />
<br />
'''Brief Description: ''' Currently the KWin zoom plugin and KMagnifier implement focus tracking using Kaccessible which only works for Qt/KDE applications. In this project I will change the existing code in the KWin zoom-plugin and KMagnifier to use DBus to connect with AT-SPI2 and fetch needed information about focused widget. Also I will identify and fix cases where common applications are not sending the focus events and correct accessibility problems in Qt's widgets as they emerge, for example Qt's tree-views.<br />
<br />
'''Results: '''<br />
* libkdeaccessibility extended. Fregl did send a request to kde-core devel to integrate the new library in kdelibs/kdesupport/kdeframeworks. See http://old.nabble.com/Review-LibKdeAccessibilityClient-td34305470.html<br />
* Patches for KMagnifier done and they are upstream, merged into kmag master, already. See https://projects.kde.org/projects/kde/kdeaccessibility/kmag/repository/revisions/953e32917fe3a8a640b3338c6e4d75c3ad9a5f44<br />
* Patches for KWin done and they will be merged as soon as libkdeaccessibility is in place. See https://git.reviewboard.kde.org/r/106041/<br />
* Fixes for Konsole done. See https://projects.kde.org/projects/kde/kde-baseapps/konsole/repository/show?rev=focus .<br />
* Made Dolphin's fileview accessible by writing a QAccessibleInterface for the ItemViewsNG based listview. See https://git.reviewboard.kde.org/r/105972/<br />
* Hunted down a problem in QLineEdit, reported to Qt QAccessible hackers, fixed in next Qt 4.8 release. See https://codereview.qt-project.org/#q,32715,n,z<br />
<br />
'''IRC Nick: ''' dedman<br />
<br />
'''IRC Channels: ''' #kde-accessibility<br />
<br />
'''Blogs: '''<br />
* Announcement of the gsoc project, intro of the student::http://amanonit.blogspot.com/2012/04/selected-for-gsoc.html<br />
* Mid term, first milestones done: http://amanonit.blogspot.com/2012/06/gsoc-focus-tracking-working-in-kwin.html<br />
* Pencil down, retrospection and gsoc result: http://amanonit.blogspot.com/2012/08/summer-of-accessibility.html<br />
<br />
== Samikshan Bairagya ==<br />
<br />
'''Project Name:''' Add "What's Interesting..." feature to KStars.<br />
<br />
'''A _Brief_ Description''' Often beginner astronomers open up KStars, look around a bit, but then can't figure out what to do next. This project aims to make KStars more beginner friendly through a new feature called "What's Interesting..." This feature will consist of a QML based easy-to-use user interface that will suggest sky objects currently visible in the sky taking into account the equipment-wise and location-wise limitations/availability of the user. The user's experience level and interest in astronomy will also be taken into account, thus providing the beginner/intermediate user a more personalised experience.<br />
<br />
''' Status: ''' Done with designing the model-view architecture to show list of interesting sky-objects. Done with testing different algorithms to decide the visibility of sky-objects. Currently working on the QML based UI to make it easier to use and cooler to look at. Have started code documentation as well.<br />
<br />
''' Screenshot: ''' Refer to blog link.<br />
<br />
''' IRC Nick: ''' samxan<br />
<br />
''' IRC Channels: ''' #kde-edu , #kde-kstars, #kde-in<br />
<br />
'''Blog: ''' http://samxan.wordpress.com/category/foss/gsoc-2012/<br />
<br />
''' This is awesome about GSoC: ''' Its fun and you learn a lot of stuff and you feel great!<br />
<br />
''' This is what I learned during GSoC: ''' Got to learn the awesome concept of model-view. Also loved the way C++ models could be exported to QML for use with Qt Quick views. Learned a lot about programming conventions, UI designing.<br />
<br />
== Matěj Laitl ==<br />
<br />
'''Project Name:''' Statistics synchronization for pluggable devices and Last.fm in Amarok<br />
<br />
'''A Brief Description:''' Amarok can maintain useful per-track play statistics and meta-data such as: play count, first/last played date, rating and labels; these are tracked for each collection separately. This project will implement statistics synchronization between all collections that support them (local, iPod) in its first part. Second part is to implement synchronization of the statistics from scrobbling services such as Last.fm to Amarok. (other way around already partially works)<br />
<br />
'''Status:''' Latest status can be tracked on [http://strohel.blogspot.com/search/label/gsoc my blog]. By the end of 3rd week, statistics synchronization between local collection already works.<br />
<br />
'''Screenshot:''' [http://2.bp.blogspot.com/-g4i2m3LnAfQ/T9XPH75R_BI/AAAAAAAAAGA/APuLisGOIrk/s1600/amarok1.png here]<br />
<br />
'''IRC Nick:''' strohel<br />
<br />
'''IRC Channels:''' #amarok, #gtkpod<br />
<br />
'''Blog:''' [http://strohel.blogspot.com/ strohel.blogspot.com]<br />
<br />
'''This is awesome about GSoC:''' I can finally work on open-source full-time during the summer without having to take less fun jobs on proprietary software.<br />
<br />
'''This is what I learned during GSoC:''' Mainly that Amarok codebase is in a desperate need of some major clean-ups. ;)<br />
<br />
== Martin K&uuml;ttler ==<br />
<br />
'''Project Name:''' New interface for Cantor<br />
<br />
'''A _Brief_ Description''' Cantor is a KDE application for mathematics. It uses various backend software to do the actual calculations, and strives to provide a common, intuitive and nice-looking interface. The design of the original interface had some limitations though, and it is the goal of this project to implement a new interface for Cantor. The first step is to reproduce the features (and the look&feel mostly, though some improvements are there) of the old interface. After that a couple of new features, such as a nice search&replace bar, are planed.<br />
<br />
''' Status: ''' Currently I still re-implement features that the old interface already has, but there is not much left to do for that.<br />
<br />
''' IRC Nick: ''' mkuettler<br />
<br />
'''Blog: ''' [http://mkuettler.blogspot.com mkuettler.blogspot.com]<br />
<br />
== Phalgun Guduthur ==<br />
<br />
'''Project Name:''' Semantic desktop collection in Amarok<br />
<br />
'''A _Brief_ Description''' Nepomuk has been a great semantic framework in recent years with many applications like Dolphin using it for managing metadata associated with its files and resources. But Amarok, still doesn't make use of the existing framework which comes bundled with any KDE distro. So, the objective of the project is to develop a Nepomuk based collection backend for Amarok which is functionally equivalent to the existing embedded MySql backend. An earlier attempt to achieve this was made this in GSoC 2008, but it never went on to be implemented and bundled along with the Amarok package because of reliability and performance issues. This is another attempt to make use of the excellent Nepomuk framework in Amarok and make it more semantic.<br />
<br />
''' Status: ''' Have a working Nepomuk Collection in Amarok now. Can be used as a plugin. Fine tuning the collection. Should be part of master any time soon. <br />
<br />
''' IRC Nick: ''' phalgun<br />
<br />
''' IRC Channels: ''' #amarok, #kde-in, #pes-os<br />
<br />
'''Blog: ''' http://blog.phalgun.in/tagged/gsoc<br />
<br />
''' This is awesome about GSoC: ''' Getting to know new people and is a platform to start contributing to open source projects that people use. Being part of something that so many people around the world use is satisfying.<br />
<br />
== Maximilian Löffler ==<br />
<br />
'''Project Name:''' Kate Scripting IDE Plugin<br />
<br />
'''A _Brief_ Description''' Kate supports a variety of possibilities for scripting, for example indentation and user defined commands. Although scripting in Kate is quite powerful, it is rarely used. This project aims at making scripting within Kate more popular by providing a plugin for Kate, which makes the process of creating and managing scripts easier.<br />
<br />
''' Status: ''' After figuring out the core capabilities which the IDE plugin should hold, they are now going to be implemented. Currently implementing script wizard for creating new scripts. There will be more features added in the future.<br />
<br />
'''Blog: ''' http://kate-editor.org<br />
<br />
''' This is awesome about GSoC: ''' GSoC is the perfect opportunity for me to deepen my C++ skills in combination with working on an awesome project.<br />
<br />
== Ganeshprasad T P ==<br />
<br />
'''Project Name:''' Bullet integration into Gluon<br />
<br />
'''A Brief Description''' Gluon has been an excellent cross-platform free and open source 2D game engine from KDE. It aims to make life easier for game developers by providing a simple but powerful API to handle 2D objects, sounds and inputs.Gluon will be a revolution in the way we’ve seen 2D game creation. People will be able to create new games in a more flexible manner, while the Gluon web content system will allow them to earn rewards.ntegration of Bullet physics to Gluon is a huge addition in this direction. Since the gaming world has entered the rage of Good effects and better look(better Graphics) ,The integration of Bullet physics to Gluon engine provides game developer to create games with clear effects such as collision detection, collision response etc.. in Gluon. This will be huge advantage to develop modern graphics games through Gluon.<br />
<br />
''' Status: ''' Right now creating different collision shapes.<br />
<br />
''' IRC Nick: ''' gani<br />
<br />
''' IRC Channels: ''' #gluon, #kde-in, #pes-os<br />
<br />
'''Blog: ''' http://ganeshprasad.tumblr.com/<br />
<br />
''' This is awesome about GSoC: ''' provides excellent opportunity to know new contributors of same interest and resourceful persons who are highly motivational and is a awesome platform to start contributing to open source projects that people use. Place to learn a lot.The concept that code we write is used by world is exciting. <br />
<br />
== Islam Wazery ==<br />
<br />
'''Project Name:''' Import Tool Revamp in digiKam<br />
<br />
'''A Brief Description''' digiKam features a graphical interface to access and download pictures from digital cameras. Code is rather old, using Qt3Support classes for the icon view, the UI code intermangled deeply with backend code, and has not seen very much care and love for some years. This project would involve taking the old code apart, rewriting a clean code base backend and front-end, but also adding user interface elements to make the most important everyday task as easy as possible.<br />
<br />
''' Status: ''' Finalizing the project and fixing bugs<br />
<br />
''' IRC Nick: ''' wazery<br />
<br />
''' IRC Channels: ''' #digikam, #ubuntu-eg<br />
<br />
'''Project link: ''' http://community.kde.org/Digikam/GSoC2012/CameraUserInterfaceRevamp<br />
<br />
''' This is awesome about GSoC: ''' Till now, understood the awesome concept of model-view, the digiKam code base, and getting to know new contributors.<br />
<br />
== Luís Gabriel Lima ==<br />
<br />
'''Project Name:''' QMLify Plasma widgets<br />
<br />
'''A _Brief_ Description''': The aim of this project is to port some of the plasmoids that are currently written in C++ to QML. A great advantage in porting it is reduce the code maintenance effort for the KDE community. The plasmoids written in QML will have considerably less code as QML allows the creation of fluid UIs in a powerful declarative way. <br />
<br />
''' Status: ''' <br />
[http://quickgit.kde.org/index.php?p=kdeplasma-addons.git&a=shortlog&h=refs/heads/plasma/luisgabriellima/weatherstation-qml LCD Weather Station] - Almost done (Pending? popup icon)<br />
[http://quickgit.kde.org/index.php?p=kde-workspace.git&a=shortlog&h=refs/heads/plasma/luisgabriellima/pager-qml Pager] - Work in progress<br />
[http://quickgit.kde.org/index.php?p=kdeplasma-addons.git&a=shortlog&h=refs/heads/plasma/luisgabriellima/weather-qml Weather Forecast] - Work in progress<br />
Kdeexample template - To be done<br />
<br />
''' IRC Nick: ''' luisgabriel<br />
<br />
''' IRC Channels: ''' #kde-devel, #plasma, #kde-brasil<br />
<br />
'''Blog: ''' http://luisgabriel.me<br />
<br />
== Pankaj Bhambhani ==<br />
<br />
'''Project Name:''' Facebook Integration for Choqok<br />
<br />
'''A Brief Description''' To enhance Choqok user experience by integration features of the social networking site Facebook. Primary or elementary functionalities include Posting to Facebook, Viewing Feed, Ability to Like and Comment a Post, etc. The Facebook Resource for Akonadi is an excellent library resource for this job. It can retrieve user’s news feed and list of posts and can also post on the user’s wall. See http://developers.facebook.com/docs/reference/api/ for more details<br />
<br />
'''Status:''' We can post to facebook and also view posts on Choqok ( Text and Images can be rendered properly)<br />
<br />
'''IRC Nick:''' panx, pankajb64<br />
<br />
'''IRC Channels:''' #choqok, #kde-in<br />
<br />
'''Blog:''' www.pankajb64.co.nr<br />
<br />
<br />
'''This is awesome about GSOC:''' The fact that you could learn about so many different things so quickly and so easily and get to interact with so many people. Also, the fact that code reuse is beneficial for quick and easy development of new things from similar old things. <br />
<br />
'''This is what I learned during GSOC:''' Always keep you code readable :) There may be others using or editing it. Comments are like gold dust :D<br />
<br />
== Abhishek B S ==<br />
<br />
'''Project Name:''' Improve Formula Shape in Calligra<br />
<br />
'''A Brief Description:''' Improve the Formula Shape for Calligra in the areas of basic math utilities, inline editing, general layout of formulas,fonts and provide support in MathML for 'XML entities'. Formula shape would definitely need these features to be complete. Many of the users would love to have formula shapes improved and I feel these are great enhancements.<br />
<br />
''' Status: ''' A good looking tab for commonly used formulas in Formula Editing Tool. Improved the layout for superscripts and subscripts. The sub/superscripts are shrinked in font with respect to the base element. This support holds good even if the sub/superscripts are fractions or roots. The index number of the root element is shrinked in font. The special math characters are in a grid view. The formula shape now comes with a better font. The fenced element has been implemented to work in fraction element. Its now is to be made available on the default formula tool. <br />
<br />
''' IRC Nick: ''' abhishek_<br />
<br />
''' IRC Channels: ''' #calligra, #kde-in, #pes-os<br />
<br />
''' This is awesome about GSoC: ''' To work on real-world softwares apart from the smaller projects in the universities is amazing and provides scope for personal improvement in terms of programming and product development. Even better is to be a part of a successful and dynamic community.<br />
<br />
== Lisa Vitolo ==<br />
'''Project name:''' Solid API extension for partitioning, and a Dolphin plugin to use it.<br />
<br />
'''A brief description:''' implement a high-level submodule of Solid for basic partitioning operations; this should make the task of writing a partitioner easier than it is with the current libraries. In addition I'm writing a partitioner in QML, integrated as a Dolphin plugin, that uses this library.<br />
<br />
''' Status: ''' the library is usable, althought I plan to add improvements in the immediate future; a lot of bugs have been fixed, and more tests have been added in the unit testing. You can register, undo and redo basilar actions: removing, resizing, moving, creating, formatting and modifying properties of partitions, plus partition table management, all for GPT and MBR. All classes and public methods of the API are documented for doxygen, and there is a tutorial for developing applications that use this module. The QML application is complete and a patch is ready to integrate it as a Dolphin plugin.<br />
<br />
''' IRC Nick: ''' shainer<br />
<br />
''' IRC Channels: ''' #solid, #chakra, #chakra-devel<br />
<br />
''' This is awesome about GSoC: ''' I had the opportunity to get more involved in the KDE community and techbase.<br />
<br />
''' This is what I learned during GSoC: ''' how to organize my time, and the work to do, when I have to face several obligations at once (mainly university exams). Plus I had the opportunity to improve a lot my knowledge of QML and the model-view paradigm.<br />
<br />
== Smit Patel ==<br />
<br />
'''Project Name:''' Bibliography engine integration and UI to manage citations in Calligra Words <br />
<br />
'''A _Brief_ Description''' Currently Calligra Words can add/remove citations and bibliographies. But it doesn't store citations for future use and doesn't have any interface for bibliography engines. The aim of this project is to provide a user interface which will let the users manage and organize citation database and to provide an interface for bibliography engines which allows them to insert citation and bibliography in Words.<br />
<br />
''' Status: ''' <br />
Bibliography database UI - complete<br />
bridge actions 1) insert_citation 2) insert_cite_record - complete<br />
action insert_bibliography for bridge interface - pending<br />
<br />
''' Screenshot: '''<br />
<br />
''' IRC Nick: ''' smitpatel<br />
<br />
''' IRC Channels: ''' #calligra, #kde-in <br />
<br />
'''Blog: ''' http://smitr.blogspot.com/<br />
<br />
''' This is awesome about GSoC: '''<br />
<br />
''' This is what I learned during GSoC: '''<br />
<br />
<br />
== Brijesh Patel ==<br />
<br />
'''Project Name:''' Improve saving of charts to OpenDocument in Calligra<br />
<br />
'''A _Brief_ Description''' The chart plugin of Calligra enables the functionality of inserting and configuring charts in applications like Words, Tables, Stage, etc. But at present, it is having some issues especially while saving charts. These applications just lose important chart data by saving. Like even at simple roundtrips ( loading->saving->loading ), in most of the cases, either the chart is lost, or the data is lost, or some style/formatting is lost. So the aim of this project is to fix that and improve the current situation.<br />
<br />
''' Status: ''' <br />
Fix load->save->load roundtrip - complete<br />
Fix saving of axis - complete<br />
Font editor for axis labels,legend,etc. - complete<br />
UI for setting markers per dataset - complete<br />
Add commands for everything - currently working on that<br />
<br />
''' Screenshot: '''<br />
<br />
''' IRC Nick: ''' erione<br />
<br />
''' IRC Channels: ''' #calligra, #kde-soc<br />
<br />
'''Blog: ''' http://erionism.blogspot.com/<br />
<br />
''' This is awesome about GSoC: '''<br />
<br />
''' This is what I learned during GSoC: '''<br />
<br />
== Nityam Vakil ==<br />
<br />
'''Project Name:''' Full support level 4 of the OpenFormula specification. <br />
<br />
'''A _Brief_ Description''' Calligra Sheets supports the OpenFormula-specification to implement formula functions. To fully support all of the defined highest level 4 we need to add support for following 17 formulas which are missing at the moment in Calligra Sheets; averageif, averageifs, b, chisqdist, chisqinv, countifs, critbinom, external - (dde, hyperlink), forecast, legacychitest, linest, logest, networkdays, percentrank, prob, sumifs. Also UI and unittests need to be done for all the functions.<br />
<br />
''' Status: ''' <br />
Function implementation: averageif, averageifs, b, chisqdist, chisqinv, countifs, critbinom, forecast, legacychitest, linest, logest, networkdays, percentrank, prob, sumifs - (15/17)complete<br />
UI: averageif, averageifs, b, chisqdist, chisqinv, countifs, critbinom, forecast, legacychitest, networkdays, percentrank, prob, sumifs - (13/17)complete<br />
Unittests: averageif, averageifs, b, chisqdist, chisqinv, countifs, critbinom, forecast, legacychitest, networkdays, percentrank, prob, sumifs - (13/17)complete<br />
<br />
''' Screenshot: '''<br />
<br />
''' IRC Nick: ''' nityam<br />
<br />
''' IRC Channels: ''' #calligra, #kde-in <br />
<br />
'''Blog: '''<br />
<br />
''' This is awesome about GSoC: '''<br />
<br />
''' This is what I learned during GSoC: '''<br />
<br />
<br />
== Alessandro Cosentino ==<br />
<br />
'''Project Name:''' A feed aggregator for ownCloud <br />
<br />
'''A _Brief_ Description''' The goal of this project is to create an ownCloud application for reading and managing RSS/Atom feeds. As opposed to most of the aggregators existing on the web, the ownCloud aggregator will give the user full ownership and control over the data, which is in the general philosophy of ownCloud. The aggregator will have a web user interface and will integrate with other applications in the ownCloud suite. Moreover, it will provide a web API for synchronization with mobile and standalone desktop feed readers, KDE Akregator above all.<br />
<br />
''' Status: ''' <br />
Model layer + database layer - complete<br />
Web GUI - almost complete<br />
API - starts July 16th<br />
<br />
''' Screenshot: ''' <br />
<br />
''' IRC Nick: ''' zimba12<br />
<br />
''' IRC Channels: ''' #owncloud-dev, #akregator, #kde-soc<br />
<br />
'''Blog: ''' [http://algorithmsforthekitchen.com/blog/ Algorithms for the Kitchen]<br />
<br />
''' This is awesome about GSoC: '''<br />
<br />
''' This is what I learned during GSoC: '''<br />
<br />
<br />
<br />
== A.H.M. Mahfuzur Rahman (Mamun) ==<br />
<br />
'''Project Name:''' Face Recognition for Digikam <br />
<br />
'''A _Brief_ Description''' The aim of this project is to develop a workable system of face recognition for digikam. Keeping this in mind, we are working on several algorithms in libface. Some are improvement of previous algorithms implemented in libface and others are new implementation. After the satisfactory implementation of algorithms, we will update libkface with the improvements and incorporate the algorithms with digikam UI.<br />
<br />
''' Status: ''' <br />
Eigenface + Fisherface Implementation - complete<br />
Libface GUI - complete for testing now (Refurbishment will be done if necessary)<br />
HMM implementation - Done<br />
Libkface integration - Done<br />
Update of digikam UI and Integration to Digikam UI of the algorithms - Going on ...<br />
<br />
''' Screenshot: ''' <br />
Not available right now. The work has been done on algorithms hitherto.<br />
<br />
<br />
''' IRC Nick: ''' nightCrawler<br />
<br />
''' IRC Channels: ''' #digikam, #okular<br />
<br />
'''Blog: ''' [http://nightcrawlerinshadow.wordpress.com/ Nightcrawler in Shadow]<br />
<br />
''' This is awesome about GSoC: '''<br />
<br />
''' This is what I learned during GSoC: '''<br />
<br />
== Shrikrishna Holla ==<br />
<br />
'''Project Name:''' Adding an Infinite Canvas / Wraparound mode for Krita<br />
<br />
'''A _Brief_ Description''' Krita focuses on texturing, matte painting and comics drawing. For texturing, the Krita image model needs to be expanded in two ways: First, the canvas needs to be made infinite, so the user can paint textures of any size without stopping, and second, a mode for creating tileable textures where painting strokes that go off the canvas, wrap over on the opposite side avoiding texture seams along the edges. Panning in this mode would essentially work just as an offset for the whole canvas to wrap around, allowing artists to check tiled textures for seams.<br />
<br />
''' Status: ''' Infinite Canvas mode up and running; last few bugs to fix.<br />
Wraparound mode - pending <br />
<br />
''' IRC Nick: ''' shrikrishna<br />
<br />
''' IRC Channels: ''' #krita, #kde-in, #pes-os<br />
<br />
''' This is awesome about GSoC: ''' The experience, the exposure, the learning curve, the confidence it gives<br />
<br />
''' This is what I learned during GSoC: ''' A lot of things; starting from technical stuff like the usage of git to communication skills on how to engage with people on IRC<br />
<br />
== Francisco Fernandes ==<br />
<br />
'''Project Name:''' A Sandpainting brush for Krita<br />
<br />
'''A _Brief_ Description''' Sandpainting is the art of rearrange powdered pigments onto a surface to make an unfixed, or fixed, granular painting. Unfixed sand paintings have a long established cultural history in numerous social groups around the globe. This project propose a simple unfixed sand brush to the digital painting software Krita, based on grain particle simulations.<br />
<br />
''' Status: ''' <br />
Paintop loads properly [Done]<br />
Particles physics settings possible using the brush settings widget. [Done]<br />
Particles created on the canvas made persistent by Krita annotations [Done]<br />
Creation a custom grid to improve particles interactions (collisions and sellection) [Done]<br />
Creation of annotations to hold particles between operations [Done]<br />
Creation of the animation framework [In progress]<br />
Particle spread on canvas (needs collision) [in progress]<br />
<br />
''' Screenshot: ''' <br />
[http://s3.amazonaws.com/twitpic/photos/large/619231294.png?AWSAccessKeyId=AKIAJF3XCCKACR3QDMOA&Expires=1342537484&Signature=6x7bFTOYzKT1kZRJmkd5JOOg1P4%3D&key=/ status]<br />
<br />
'''Video: '''<br />
[http://www.youtube.com/watch?feature=player_embedded&v=f818Pmxkt08/ SandPainting Brush - Some problems ]<br />
<br />
''' IRC Nick: ''' chicao<br />
<br />
''' IRC Channels: ''' #krita, #kde-brasil, #archlinux-br<br />
<br />
'''Blog: ''' [http://pedepinico.blogspot.com.br/search/label/kde/ Pe De Pinico]<br />
<br />
<br />
''' This is awesome about GSoC: ''' <br />
The community interaction and the learning is the most valuable experiences I'm getting from<br />
the GSoC.<br />
<br />
''' This is what I learned during GSoC: ''' <br />
Improved my C++ and Qt4 programming.<br />
Learned about integration methods (had to search and test many techniques to find a proper one)<br />
Learned about particles system and real-time physics.<br />
<br />
== Roney Gomes ==<br />
<br />
''' Project Name:''' Porting Games to a More Modern Graphics Framework<br />
<br />
''' A Brief Description:''' When Qt changed from version 3 to 4, there was a significant lack of performance regarding QGraphicsView, which forced the developers to build their own graphics framework. Now, that QGraphicsView has matured, the return to the framework seems feasible. That's a good practice, since it avoids the developers to constantly reinvent the wheel, primarily focusing on the development of their applications rather than in the tools necessary to create them.<br />
<br />
''' Status: ''' Working on KGoldRunner, trying to add the fancy borders some themes have around their backgrounds.<br />
<br />
''' IRC Nick: ''' roney<br />
<br />
''' IRC Channels: ''' #kde-games-devel #kde-devel<br />
<br />
''' Blog: ''' http://logofn.blogspot.com.br/<br />
<br />
''' This is awesome about GSoC: ''' Learning is certainly one of the most exciting things of life, actually to see<br />
your creation working is something really awesome. GSoC gave me the opportunity to learn, see and share the fruits of<br />
my work.<br />
<br />
== Felix Rohrbach ==<br />
''' Project Name:''' OCS specific JSON parser in Attica <br />
<br />
''' A Brief Description''' Attica is a client library for the Open Collaboration Service protocol. Open Collaboration Services (OCS) is a common protocol for providing social networking and collaboration across different services. My task is to write a JSON parser in Attica, as part of the ongoing process for creating a standardized JSON interface with OCS.<br />
<br />
''' Status:''' Changed the design of attica to work with multiple parsers. Currently writing parsers for the individual json inputs.<br />
<br />
''' IRC Nick: ''' fxrh<br />
<br />
''' IRC Channels: ''' #kde-devel #ocs #gluon<br />
<br />
== Vegard Øye ==<br />
<br />
'''Project Name:''' Further Improve Kate's vi Input Mode<br />
<br />
'''A <u>Brief</u> Description:''' Fix various bugs in the vi mode, improve the integration between selections, folded code and ex commands, and revamp the repeat system.<br />
<br />
'''Status:''' Added mode cursors and regexp ranges, added folding commands, improved the search code, improved the "%" motion, improved the ":sort", ":buffer", ":edit" and ":write" commands, added the ":ls", ":bdelete", ":tabclose", ":tabedit", ":tabnew", ":tabnext", ":tabprevious", ":tabfirst" and ":tablast" commands, and refactored the command code. Currently working on the repeat system.<br />
<br />
'''IRC Nick:''' epsil<br />
<br />
'''IRC Channels:''' #kate, #kde-soc<br />
<br />
== Lucas Lira Gomes ==<br />
<br />
'''Project Name:''' Social Music - Tomahawk features in Amarok <br />
<br />
'''A _Brief_ Description''' Basically, I'll have to integrate Tomahawk player social features with Amarok. This will be done through the creation of a new Amarok service by making the use of some Tomahawk code. This service would make possible to share user’s music files with online friends, thereby allowing them to listen to one another’s tracks.<br />
<br />
''' Status: ''' Actually, Amarok is already capable to listen to other peers' tracks, but keep in mind that it still has performance issues. From now on, I intend to improve its performance while I provide support for tomahawk playlists.<br />
<br />
''' IRC Nick: ''' MaskMaster<br />
<br />
''' IRC Channels: ''' #amarok #amarok.dev #kde #kde-devel #kde-brasil #tomahawk<br />
<br />
'''Blog: ''' http://lucasrefuge.blogspot.com/<br />
<br />
== Percy Camilo Triveño Aucahuasi ==<br />
<br />
'''Project Name:''' Replacement for KmPlot <br />
<br />
''' A Brief Description''' This GSoC I'm working in two projects. The first is a library for draw mathematical functions, this library is hosted inside analitza (KAlgebra parser), and is called analitzaplot. analitzaplot uses the power for symbolic calculation of analitza and perform numerical analysis to build the geometry for functions. <br />
<br />
The other project (that uses analitzaplot) is a new application called Khipu (currently in playground) The key idea behind Khipu is to let the user manage and save their work with mathematical functions. Current goal of Khipu is to replace KmPlot, however in the future it will have more features. Finally, the main benefit of analitzaplot is that not only Khipu will improve, also KAlgebra will use analitzaplot for plotting.<br />
<br />
''' Status: ''' <br />
analitzaplot core - complete<br />
analitzaplot test - complete<br />
analitzaplot basic backends - complete <br />
analitzaplot widgets - complete<br />
khipu main window - almost ready<br />
khipu workflow - work in progress<br />
khipu artwork (icons,etc) - WIP<br />
<br />
''' Screenshot: ''' <br />
<br />
[[File:Khipu-preview-powered-by-analitzaplot.png|128px|thumb|left|Khipu]]<br />
<br />
''' IRC Nick: ''' aucahuasi<br />
<br />
''' IRC Channels: ''' #kde-devel #kde-edu<br />
<br />
'''Blog: ''' http://aucahuasi.blogspot.com/<br />
<br />
''' This is awesome about GSoC: ''' see avobe :)<br />
<br />
== Arthur Ribeiro ==<br />
<br />
'''Project Name:''' QML Plasmoid for Plasma NetworkManagement<br />
<br />
'''A _Brief_ Description''' Create a new shiny plasmoid for Plasma NM using QML technology. The backends will remain in C++, just the user interface will be ported to QML. This new plasmoid will make the code simpler and improve its readability and maintainability. Also, QML can support more graphical artifacts than the C++ one.<br />
<br />
''' Status: ''' <br />
Connections List Model - complete<br />
Interfaces List Model - complete<br />
Filter Connection by Type - complete<br />
Connect and disconnect from networks - complete<br />
Show settings widget - complete<br />
Interface details widget - pending<br />
Network Interface interactions in GUI - pending<br />
<br />
<br />
''' Screenshot: '''<br />
<br />
''' IRC Nick: ''' arthursribeiro<br />
<br />
''' IRC Channels: ''' #plasma, #solid, #active<br />
<br />
'''Blog: ''' http://arthursribeiro.blogspot.com<br />
<br />
''' This is awesome about GSoC: ''' Learn different technologies and improve interaction with other people<br />
<br />
''' This is what I learned during GSoC: ''' Using QML to create User Interfaces and how to create interactions between this kind of code and C++<br />
<br />
== Martin Klapetek ==<br />
<br />
'''Project Name:''' Social feed<br />
<br />
'''A _Brief_ Description:''' Social feed brings together streams from your social networks using Akonadi as a storage backend and Plasma as a user frontend<br />
<br />
''' Status: ''' <br />
Add posts to Facebook Akonadi resource - done<br />
Refactor/Rewrite Microblog Akonadi resource - 95% done<br />
Use common OAuth library - 75% done<br />
Create a social feed model - done<br />
Integrate it with Plasma Microblog implementation - pending<br />
<br />
<br />
''' Screenshot: '''<br />
<br />
''' IRC Nick: ''' mck182<br />
<br />
''' IRC Channels: ''' #kde-telepathy, #kde-devel, #kde (and others)<br />
<br />
'''Blog: ''' http://martys.typepad.com<br />
<br />
''' This is awesome about GSoC: ''' Working on KDE projects full time<br />
<br />
''' This is what I learned during GSoC: ''' Akonadi stuff, QML basics and social networks interaction (including OAuth)<br />
<br />
== Victor Dodon ==<br />
<br />
'''Project Name:''' Porting libkipi and kipi-plugin to KDE-XML GUI<br />
<br />
'''A _Brief_ Description:''' Patch libkipi, kipi-plugins and kipi host applications to support new KDE-XML gui technology, and then kipi-plugins can be added to the application toolbar.<br />
<br />
''' Status: ''' <br />
patch libkipi: 90% done<br />
patch digikam kipi interface: 90% done<br />
patch kipi-plugins: 95% done<br />
patch other kipi host applications: pending<br />
<br />
''' Screenshot: '''<br />
<br />
''' IRC Nick: ''' printesoi<br />
<br />
''' IRC Channels: ''' #digikam<br />
<br />
'''Blog: '''<br />
<br />
''' This is awesome about GSoC: ''' Having great mentors, work on the KDE program you like.<br />
<br />
''' This is what I learned during GSoC: ''' The KDE XML GUI api.<br />
<br />
== Shivaraman Aiyer ==<br />
<br />
'''Project Name:''' Perspective Drawing in Krita<br />
<br />
'''A _Brief_ Description:''' Incorporate in Krita, the use of blender meshes in the same way as the Assistants, making it easier for the user to draw 3-D drawings.<br />
<br />
''' Status: ''' <br />
Saving of the Assistants in .kra file : done<br />
Importing the features of the Perspective Grid into the Perspective Assistant: 95% done.<br />
Import of the blender meshes: done<br />
Showing of blender meshes on the canvas : working<br />
Using of the blender meshes like the assistants: to be started after the above step is complete.<br />
<br />
<br />
''' Screenshot: '''<br />
<br />
''' IRC Nick: ''' sraman<br />
<br />
''' IRC Channels: ''' #calligra, #krita, #kde-in (and others)<br />
<br />
'''Blog: ''' http://shivaramanaiyer.wordpress,com<br />
<br />
''' This is awesome about GSoC: ''' Working on a project that has vast impact on many people's lives and also being able to interact with a lot of great programmers and other great people from the community<br />
<br />
''' This is what I learned during GSoC: ''' I learnt how great Krita actually is. How to work on a such a big project that already is functioning so greatly.<br />
<br />
== Dominic Lyons ==<br />
<br />
'''Project Name: ''' Improve integration of Photivo into digiKam<br />
<br />
'''A _Brief_ Description: ''' digikam and Photivo are perfect complements: digiKam is the best photo management software I have ever known. The raw file developing tool Photivo offers a remarkable feature set, high quality of processing and an optimized workflow. My motivation is to make digiKam and Photivo nicely integrate into each other in order to combine the best out of both applications. <br />
<br />
''' Status: ''' <br />
'''digiKam/KIPI-plugins'''<br />
* Read XMP (embedded and sidecar) - done<br />
* Interpret XmpMM - 80% (complete for necessary tags, some "informal" tags are outstanding)<br />
* Map ID in derived document to the "real" origin file - done (but only roughly tested for complex cases like derivations of a derivation)<br />
* Detection of .pts-sidecars (Photivo settings) - pending<br />
* GUI - done (but can be improved)<br />
* Apply the settings of an output file on other raw files - pending<br />
* Pipe images from Photivo to digikams editor - pending<br />
'''Photivo'''<br />
* Read and write XMP (embedded and sidecar) - done<br />
* Interpret XmpMM and add new information - done<br />
* Keep track of existing IDs add new ones if necessary - done<br />
* Save a list of IDs and file mappings so that the KIPI plugin can access it - 90% (complete, but maybe some file locking is necessary?)<br />
* Include Photivo settings into XMP - 50% (not essential for this GSoC project; not all settings are included yet, therefore this is currently deactivated)<br />
* Pipe images from Photivo to digikams editor - pending<br />
* Config option the deactivate XmpMM and ID mapping list - pending<br />
<br />
''' Screenshot: '''<br />
<br />
''' IRC Nick: ''' peex<br />
<br />
''' IRC Channels: ''' #digikam, #kde-soc, #gsoc-de<br />
<br />
'''Wiki: ''' http://community.kde.org/Digikam/GSoC2012/PhotivoIntegration<br />
<br />
''' This is awesome about GSoC: ''' I enjoyed it to get an insight into an open source community project - and I am motivated to become a part of it!<br />
<br />
''' This is what I learned during GSoC: ''' How to set up a build environment for a complex project and also I learned a lot about KDE and Qt and could practise C++.<br />
<br />
== Claudio Desideri ==<br />
<br />
'''Project Name:''' Website design and implementation for GamingFreedom/Gluon<br />
<br />
'''A _Brief_ Description''' Gluon aims to be a wonderful game engine, game creator and distribution system. I'm focusing on the distribution system, especially the website (www.gamingfreedom.org), which is being designed and created with the spreading of Gluon games in mind. A little more in depth, we decided to use an OCS (http://freedesktop.org/wiki/Specifications/open-collaboration-services/) server to store all the information which is very accessible from any kind of client due to its REST interface. We started a new project and built a new Simple OCS Server which is complete and working now (little bugs may appear however). The website is, in fact a simple web site acting as a client of the OCS Gluon server. As a web framework we're using http://www.gfx3.org .<br />
<br />
''' Status: ''' OCS Server is written, tested and set up. I'm working on the gamingfreedom.org website template and then a bit of logic will be requested. <br />
<br />
''' IRC Nick: ''' snizzo<br />
<br />
''' IRC Channels: ''' #kde-devel,#gluon<br />
<br />
''' This is awesome about GSoC: ''' Actually I couldn't believe how much I created and learned how to manage and write an average big project from design to code. I think I broke my limits. <br />
<br />
== Antonis Tsiapaliokas ==<br />
<br />
'''Project Name:''' Integrate kwin with Plasmate SDK<br />
<br />
'''A _Brief_ Description''' Right now Plasmate SDK doesn't provide any kind of support for KWin. The goal of my project is to add KWin support inside the Plasmate SDK. <br />
<br />
''' Status: ''' Window Switcher, KWin Scripts and KWin Effects support has been added. The only thing that it has been left is to add the Window Decoration Support <br />
<br />
''' IRC Nick: ''' kokeroulis<br />
<br />
''' IRC Channels: ''' #kde-devel,#plasma,#kwin<br />
<br />
''' This is awesome about GSoC: ''' The best part of the GSoC is that i can work together with my mentor. Because i am able to learn new staff and tricks :) <br />
Also it has more fun to code and not being alone.<br />
<br />
== Giorgos Tsiapaliokas ==<br />
<br />
'''Project Name:''' Make Plasmate ready for release<br />
<br />
'''A _Brief_ Description:''' Plasmate needs some basic features before we release it. My project is to add those. <br />
<br />
''' Status: ''' I have some pending reviews in the reviewboard and in order to finish my gsoc I have to move kde-workspace/plasma/generic/tools into plasmate<br />
add to make the necessary adaptions. <br />
<br />
''' IRC Nick: ''' terietor<br />
<br />
''' IRC Channels: ''' #kde-devel,#plasma<br />
<br />
''' This is awesome about GSoC: ''' Honestly the best thing in the GSoC is that I came closer with my mentor and of course that we are ready to release plasmate<br />
after so much efford<br />
<br />
== Cezar Mocan ==<br />
<br />
'''Project Name:''' Natural Earth Vector Map in Marble<br />
<br />
'''A _Brief_ Description:''' The current "Atlas" map is based on a really old dataset and there are many hardcoded features in the implementation. My purpose is to replace the dataset with a new one and make the implementation more general. <br />
<br />
''' Status: ''' The new map is functional, with a few bugs, and the new dataset is working at a reasonable performance. <br />
<br />
''' IRC Nick: ''' cezar / CezarMocan<br />
<br />
''' IRC Channels: ''' #marble<br />
<br />
''' Blog: ''' http://cezarmocan.wordpress.com<br />
<br />
''' This is awesome about GSoC: ''' I came in contact with gorgeous mentors and a great team, who taught me tricks, or even better, made me discover them by myself. Now I feel like part of the Marble family. <br />
<br />
''' This is what I learned during GSoC: ''' The Qt Framework is so complex and can be used in so many ways! Love it!<br />
<br />
== Ander Pijoan ==<br />
<br />
'''Project Name:''' OpenStreetMap vector rendering on Marble <br />
<br />
'''A _Brief_ Description''' Improve Marble's OpenStreetMap data support by making it able to read from a vector data tile server. Mostly all the maps displayed by Marble are based on bitmap texture data and some of them consist of multiple texture layers. On top of these texture layers further content is displayed like placemarks and simple geometries (like GPX, KML or OSM data). This GSoC has created a new layer that downloads, manages and renders vector data tiles. There's another GSoC in progress at OpenStreetMap for setting up a JSON vector tile server but it isn't still online. Meanwhile we used JSON tiles created at Osmosnimki.ru for OSM data. This tiles have a very similar format to the one the OpenStreetMap's data server is going to have. However, the new vector tile layer will be able to open vector tiles with all file formats that can be opened with Marble such as GPX or KML.<br />
<br />
''' Status: ''' <br />
*Create a parser for JSON format. ✔<br />
*Create a new dgml tag <vectortile> and its GeoScene. ✔<br />
*Separate the code between ImageTiles and VectorTiles by creating abstract Tile class and inheritance. ✔<br />
*Create a new layer that downloads and manages vector data tiles. ✔<br />
*Debug some code parts and separate even more the logic for VectorTiles from ImageTiles.<br />
<br />
''' IRC Nick: ''' ander<br />
<br />
''' IRC Channels: ''' #marble<br />
<br />
'''Blog: ''' http://blogs.deusto.es/gsoc-deustotech/<br />
<br />
''' This is awesome about GSoC: ''' Working with new people, getting in touch with my mentor and the community and having to research about new problems and the way to solve them.<br />
<br />
''' This is what I learned during GSoC: ''' I learned a lot about how Qt and Marble work. Even if I knew C++, Qt brings new possibilities and different ways for implementation which are really interesting. My mentor, all Marble's community and the other GSoC students have made a great job and we worked really good in a very friendly atmosphere.<br />
<br />
<br />
== A Janardhan Reddy ==<br />
<br />
'''Project Name:''' Video SlideShow Generator for digikam<br />
<br />
'''A _Brief_ Description''' People wish to have a tool to export images as video slideshow. This is what tools like man2dvd,imagination, image2mpeg does, or we can use command line tools of imageMagick and gstreamer to export images as video slideshow with required transitions. However the powerfullness of these tools come at a price: complexity. The goal of this project is a develop a kipi frontend tool using these tools(imageMagick and gstreamer) to export images as videoslideshow. This will be able to do authoring with image contents, for example to change order of images, slide time pause, add transition effects, add audio files as a background. This tool will be able to export to video files, as MPEG, AVI DIVX, or to video media, as CD and DVD video. The tool is portable under Linux, MacOSX and windows.<br />
<br />
''' Status: ''' The slideshow is almost complete. Transitions, image effects and ability to do authoring with image contents have been implemented using ImageMagick Library. Encoding of generated ppm stream to various video formats is in progress( and muxing with audio). <br />
<br />
''' IRC Nick: ''' janardhan<br />
<br />
''' IRC Channels: ''' #digikam #kde-in<br />
<br />
== Anant Kamath ==<br />
<br />
'''Project Name:''' Implementing S.M.A.R.T. and improving ISO file management features in KDE <br />
<br />
'''A _Brief_ Description''' To create a library exposing SMART HDD health data as a part of kdelibs with multiple backends. Then create a KDE application for viewing SMART hard disk health status, viewing relevant data and for running self tests,etc.. . A streamlined application for burning ISOs in as few clicks as possible, will be created and integrated with other parts of KDE. Mounting and creation of ISOs too will be implemented as simple tasks run from within dolphin. <br />
<br />
''' Status: ''' SMART library is complete, as is the application (KSmart). SMART Plasmoid - > done. Mounting ISOs from dolphin -> done. Burning ISOs -> done.<br />
<br />
''' IRC Nick: ''' flak37<br />
<br />
''' Blog: ''' http://hashpling.wordpress.com <br />
<br />
''' IRC Channels: ''' #kde-devel #solid<br />
<br />
== Miquel Sabaté ==<br />
<br />
'''Project Name:''' Improve KDevelop Ruby Support<br />
<br />
'''A Brief Description''' Work on the experimental Ruby language support, offer basic navigation, code completion and DUChain integration features.<br />
<br />
''' Status: ''' Most of my efforts have focused on the DUChain, so the builders have an entirely new face and I've created more declaration classes, types, etc. The navigation has also been improved and now it works as expected. Moreover, I've added navigation for module mixins. Code completion now works. And, last but not least, lots of bugs have been fixed.<br />
<br />
''' IRC Nick: ''' mssola<br />
<br />
''' Blog: ''' http://www.mssola.com <br />
<br />
''' IRC Channels: ''' #kde-devel #kdevelop<br />
<br />
== Mailson D. Lira Menezes ==<br />
<br />
'''Project Name:''' Tile based rendering in Okular page view<br />
<br />
'''A _Brief_ Description''': To display a document, Okular currently renders the entire page at once even when only a section of the page is required. This can lead to a lot of memory consumption specially at high zoom levels. The goal on thie project is to develop a tile based rendering for Okular page view so only those tiles needed will be rendered and shown.<br />
<br />
''' Status: ''' <br />
Simple tile rendering - done<br />
Zoom - done<br />
Panning - done<br />
Pre-render tiles around the viewport - in progress<br />
Remove unused tiles - TO DO<br />
<br />
''' IRC Nick: ''' mailson<br />
<br />
''' IRC Channels: ''' #okular, #kde-devel, #kde-brasil<br />
<br />
'''Blog: ''' http://blog.mailson.org/<br />
<br />
== Miha Čančula ==<br />
<br />
'''Project Name:''' Template system for KDevelop<br />
<br />
'''A _Brief_ Description''' Add features to KDevPlatform for generating source code files from templates with some user-provided data. This includes the existing project templates (shipped with either KDevelop or KAppTemplate), as well as templates for classes and unit tests. All these templates can be shared and downloaded using KNewStuff. <br />
<br />
''' Status: ''' <br />
* Sharing and downloading project templates ✔<br />
* Creating a new class from a template using an assistant dialog ✔<br />
* Creating a new test from a template using the same dialog ✔<br />
* Sharing class and test templates - the code is in place, but the category on kde-files.org is not. <br />
* Techbase tutorials for creating new templates ✔<br />
* Userbase manual entries for using the new functionality ✔<br />
* Add additional project, class and unit test templates ✔<br />
<br />
<br />
''' IRC Nick: ''' Noughmad<br />
<br />
''' IRC Channels: ''' #kdevelop<br />
<br />
'''Blog: ''' http://noughmad.com<br />
<br />
''' This is awesome about GSoC: ''' I was able to work on KDevelop, the program I use every day for most of my programming. I think that being able to write your own tool is a great benefit, both because I know what I want from it and because it gives me a great deal of motivation. <br />
<br />
''' This is what I learned during GSoC: ''' That I can commit to one project for a relatively long time and still enjoy it. I have already programmed with Qt and KDE, and was even familiar with some of KDevPlatform code, so I didn't have to learn much code-wise, but still I got an appreciation for just how well-structured KDev* code is, with all the plugins and interfaces.<br />
<br />
== Eli MacKenzie ==<br />
<br />
'''Project Name''': Modularized, server-aware IRC protocol handling for Konversation.<br />
<br />
'''A _Brief_ Description''': Rewrite Konversation IRC's protocol handling to be plugin-based for greater extensibility and intelligent runtime adaptation to different server implementations.<br />
<br />
'''Status''': QStateMachine was abandoned as it was too inflexible. The handwritten dispatcher has been implemented and works. Porting the rest of Konversation is in progress. The automatic request system rewrite has been deferred as its worthy of its own project and the current implementation doesn't hinder anything - its just ugly.<br />
<br />
'''IRC Nick''': argonel<br />
<br />
'''IRC Channels''': #konversation and lots of others with a #kde prefix<br />
<br />
== Lasath Fernando ==<br />
<br />
'''Project Name''': Message Filtering Plugin System<br />
<br />
'''A _Brief_ Description''': Create a completely asynchronous modular and extensible system that enriches messages before they're dispalyed to the user. These includes embedding images and videos from links, Translating messages, (re)-formatting them nicely, reading out loud etc.<br />
<br />
'''Status''': Nearing completion. The infrastructure is built, and the more difficult plugins have already been implemented. I just need to quickly write a few of the easier ones - mostly web scrapers.<br />
<br />
'''IRC Nick''': shocklateboy92 / lyfe227<br />
<br />
'''IRC Channels''': #kde-telepathy<br />
<br />
== Bernhard Beschow ==<br />
<br />
'''Project Name:''' An OpenGL mode for Marble<br />
<br />
'''A _Brief_ Description''' Marble currently performs all rendering in software. This works reasonably fast on most devices, but compromises must be made with respect to the map quality. OpenGL, however, offers higher-quality results, is more state-of-the-art and perhaps helps to reduce power consumption on mobile devices. It therefore makes sense to introduce an OpenGL mode in addition to the sotware rendering mode in Marble (the user should be able to choose between software rendering or OpenGL).<br />
The main task is to refactor the Marble codebase such that both the software rendering and the future OpenGL code share as much code as possible. In particular, visibility control (which objects should be rendered according to the current view parameters) should be factored out into separate classes, such that they can be reused in the OpenGL mode.<br />
<br />
''' Status: ''' <br />
* Render textures with OpenGL. ✔<br />
* Render placemarks with OpenGL. ✔<br />
* Render geometries with OpenGL. ✔<br />
* Refactor AbstractFloatItems and AbstractDataPluginItems to be real 2D objects, which is a prerequisite for caching them in OpenGL textures. ✔<br />
* Merge refactorings back into the master branch. ✔<br />
<br />
''' IRC Nick: ''' shentey<br />
<br />
''' IRC Channels: ''' #marble<br />
<br />
'''Blog: ''' http://shentey.wordpress.com/<br />
<br />
''' This is awesome about GSoC: ''' As a member of the Marble team, it was a great experience to work full-time on Marble and to focus on one particular feature. The Marble team is always there when needed.<br />
<br />
''' This is what I learned during GSoC: ''' I learned a lot about OpenGL. In particular, I learned to search for "introduction to ''modern'' OpenGL" since "introduction to OpenGL" retuns heavily outdated results. In addition, I found my new "bible": [http://www.virtualglobebook.com/ 3D Engine Design for Virtual Globes]. I learned how it feels like to be a GSoC participant, and I want to become a mentor next year. Last but not least, I should blog more often.<br />
<br />
<br />
<br />
= SoK =<br />
<br />
== Harsh Sharma ==<br />
<br />
'''Project Name:''' Kalgebra/Analitza add features in it like UnitConversion. <br />
<br />
'''A _Brief_ Description''' KAlgebra is a mathematical calculator based on the content markup MathML language. It is capable of doing simple MathML operations (arithmetic and logical) and represent 2D and 3D graphs.My task is to add more functionality like UnitConversion. Unlike other UnitConversion tools we are not going to add a specific UI in KAlgebra for this.We don't want to make it a confused mixture as the best part of KAgebra is the smoothness. <br />
<br />
''' IRC Nick: ''' wooo<br />
<br />
''' Screenshot: ''' <br />
<br />
''' IRC Channels: ''' #kde-soc , #kde-edu, #kde-devel<br />
<br />
''' Google+: ''' [https://plus.google.com/111339076062208872589 harsh]<br />
<br />
'''Blog: ''' [http://openharsh.blogspot.in/ openharsh]<br />
<br />
''' This is awesome about SoK: ''' As this is my first time I am contributing in any open source community,here I am getting full liberty to work on my own pace.<br />
<br />
''' This is what I learned during SoK: ''' I not only learned about my project in SoK , but also I made me Comfortable in all parts of it.This is surely going to help me as I am going to continue contributing in KDE. <br />
<br />
<br />
== Heena ==<br />
<br />
'''Project Name:''' To develop the KDE game pairs and to work as a theme editor for this game. <br />
<br />
'''A _Brief_ Description''' In the next KDE release the game Pairs will make its first public appearance.<br />
It is designed to increase the logic and foster the IQ skills of children.<br />
<br />
<br />
''' IRC Nick: ''' stack3457<br />
<br />
''' Screenshot: ''' Coming soon<br />
<br />
''' IRC Channels: ''' #kdegames , #kde-edu<br />
<br />
''' Google+: ''' [https://plus.google.com/u/0/me/posts heena]<br />
<br />
'''Blog: ''' [http://heenamahour.blogspot.in/ my_blog]<br />
<br />
''' Status of pairs ''' [http://kde.org/announcements/4.9/] Complete ,released and my themes are also available as add-on <br />
<br />
''' Looking forword to work with Kde ahead ''' <br />
<br />
''' KDE summer of code is great platform foster the programming skills. '''<br />
<br />
''' I get to learn more about the kde applications and significance.'''<br />
<br />
== Sharad Dixit ==<br />
<br />
'''Project Name:''' Implementation of Variable thickness lines in Calligra Karbon <br />
<br />
'''A _Brief_ Description''' One of the most fundamental basics of drawing is varying the width of your lines to show shape, form and perspective. Almost every line tapers at either end, and often gets thicker and thinner in different places as needed. For purely technical and histrorical reasons though, every vector program (Illustrator, Inkscape, Karbon etc) make curves all one hard width. Task is to create a variable width path shape / tool, much like the path tool, would allow drawing curves, but where each node could have its width set so that the line width changed smoothly from node to node. As Karbon is part of the Calligra suite, this would be beneficial to apps such as Krita,also.[http://community.kde.org/Calligra/Karbon karbon] <br />
<br />
''' Screenshot: ''' [http://bugsfiles.kde.org/attachment.cgi?id=56995 Here]<br />
<br />
''' IRC Nick: ''' illumiknight<br />
<br />
''' IRC Channels: ''' #calligra<br />
<br />
''' Google+: ''' [https://plus.google.com/u/1/114564598758277630384 sharad]<br />
<br />
'''Blog: ''' [http://karbonsummerofkde12.wordpress.com/ Here]<br />
<br />
''' This is awesome about KDE Summer of code: '''<br />
<br />
''' This is what I learned during KDE Soc: '''<br />
<br />
== Utku Aydın ==<br />
<br />
'''Project Name:''' Port Marble to Plasma Active platform<br />
<br />
'''A Brief Description:''' Project's aim is a nicely polished, end-user ready Marble Touch for Plasma Active. That will enable users to use their favorite Virtual Globe on their Plasma Active powered tablets.<br />
<br />
<br />
''' Status: ''' Creating a Foursquare online service, a plugin that shows venues on the map<br />
<br />
''' Screenshot: ''' http://ompldr.org/vZTVmNA (Latest status of Foursquare plugin)<br />
<br />
''' IRC Nick: ''' utku<br />
<br />
''' IRC Channels: ''' #marble<br />
<br />
'''Blog: ''' http://utkuaydin.wordpress.com (nothing related to SoK yet)<br />
<br />
''' This is awesome about SoK: ''' Like my previous Google Code-in experience, I get a chance to work with talented people in a more organized process.<br />
<br />
''' This is what I learned during SoK: ''' QML is awesome.<br />
<br />
== Jasneet Singh Bhatti ==<br />
<br />
'''Project Name:''' Improvement of the current Amarok Unit Testing scenario<br />
<br />
'''A Brief Description''' This project aims at creating useful comprehensive unit tests that will provide coverage for the core components of the Amarok source, along with high quality documentation that will make it easier for other developers to write tests for the features they implement and hopefully for those of others too<br />
<br />
''' Status: ''' Almost finished writing tests for core/meta<br />
<br />
''' IRC Nick: ''' jasneet<br />
<br />
''' IRC Channels: ''' #amarok, #amarok-dev<br />
<br />
'''Blog: ''' http://jascmevirtually.tumblr.com/ Will be updated regularly with the project progress<br />
<br />
''' This is awesome about SoK: ''' The opportunity to interact and learn from highly skilled and experienced developers and make a significant contribution to the open source community<br />
<br />
''' This is what I am learning during SoK: ''' Understanding workflows, better coding conventions, design, testing and much more<br />
<br />
== David Yang ==<br />
<br />
'''Project Name:''' Developing and improving the pairs game from KDE-edu.<br />
<br />
'''A _Brief_ Description''' Making the first release of pairs a good one. Pairs is an educational game designed to exercise the memory skills of small children. Multiplayer coming soon!<br />
<br />
''' Status: ''' Will start when school gets out of my way.<br />
<br />
''' Screenshot: '''<br />
<br />
''' IRC Nick: ''' DavidYang<br />
<br />
''' IRC Channels: ''' #kde-edu #kde-games<br />
<br />
'''Blog: ''' davidosyang.wordpress.com. Completly empty for now.<br />
<br />
''' This is awesome about SoK: ''' That I can get a mentor to help me get into contributing to an open source project.<br />
<br />
''' This is what I learned during SoK: ''' Yeah, I know how to answer this before I've started my project. Want me to grab a copy of kde 5.3 from 2015 while I'm at it?<br />
<br />
== Garima Joshi ==<br />
<br />
'''Project Name:''' Grammar Checking in Calligra.<br />
<br />
'''A Brief Description''' This project aims to add support for grammar checking in Calligra. For this purpose we have decided to use the link-grammar parser. Besides the actual checking visualisation with some underline (needs to be integreted with the red underline of spellchecking) and some dialogs to control the behaviors need to be added also.<br />
<br />
''' Status: ''' Currently redoing the whole undelining framework for both spell and grammar checking.<br />
<br />
''' IRC Nick: ''' garima_<br />
<br />
''' IRC Channels: ''' #calligra<br />
<br />
'''Blog: ''' http://garimajoshi.blogspot.in<br />
<br />
''' This is awesome about SoK: ''' Getting a chance to work with an awesome mentor and a great community and getting a first hand experience in software development.<br />
<br />
''' This is what I learned during SoK: ''' To work on real world software problems and a huge codebase. Coding conventions and development workflow.<br />
<br />
== Varun Herale ==<br />
<br />
'''Project Name:''' Wallpaper Kipi-Plugin<br />
<br />
'''A Brief Description''' This project aims to make the wallpaper plugin work in KDE4 which uses Plasma desktop and D-Bus IPC.<br />
<br />
''' Status: ''' Coding done and waiting to push a patch to plasma after feature freeze ends.<br />
<br />
''' IRC Nick: ''' varun_herale<br />
<br />
''' IRC Channels: ''' #digikam<br />
<br />
'''Blog: ''' <br />
<br />
''' This is awesome about SoK: ''' Getting a chance to work with a mentor and community on something that I use a lot, and also the experience gained in software development.<br />
<br />
''' This is what I learned during SoK: ''' More about KDE projects, coding conventions, testing, and development workflow!<br />
<br />
<br />
== Raghavendra R M ==<br />
<br />
'''Project Name:''' Sky guides feature in KStars<br />
<br />
'''A _Brief_ Description''' KStars is a wonderful FOSS utility packed with various powerful astronomical tools.This project adds another new feature to it.<br />
Sky guides feature is targeted particularly at beginners in the field of amateur astronomy. The idea is to create XML file format that will enable anybody to create guides which can be then published in the same way as custom star catalogs are. It will enable creation and editing of such guides directly from KStars (without the need to manually edit XML files). <br />
<br />
''' Status: ''' XML file format for sky guides and classes that represent guides, slides etc. are finished.Model view architecture to display the guides is mostly done.Currently working on importing new guides. <br />
<br />
''' IRC Nick: ''' rmr<br />
<br />
''' IRC Channels: ''' #kde-kstars,#kde-in, #pes-os<br />
<br />
''' This is awesome about SoK: ''' Learning new things is what I enjoy the most.And this is a wonderful opportunity for it ! <br />
<br />
''' This is what I learned during SoK: '''I have learnt a lot of things working on this project.XML format,the awesome model/view architecture,integrating Qt and QML,wonderful Git architecture....the list is growing day by day.<br />
<br />
== Akshay Ratan ==<br />
<br />
'''Project Name:''' Improved KMouseTool and other ScreenReader<br />
Accessibility Improvement<br />
<br />
'''A _Brief_ Description''' KMouseTool can eliminate the pain caused by clicking the mouse, and helps many people to use the<br />
computer without pain. KMouseTool clicks the mouse whenever the mouse cursor pauses briefly. It<br />
was designed to help those with repetitive strain injuries, for whom pressing buttons hurts.<br />
Now, KmouseTool application has got many appreciations as well as praise for its utilities, but the<br />
users have found many bugs in it also. My aim for this project is to remove those and make<br />
KmouseTool an improved application. Since this should not take much of the time, hopefully after the<br />
successful completion of the primary aim, I should be able to work on some more Accessibility features.<br />
<br />
''' IRC Nick: ''' akshayratan<br />
<br />
''' IRC Channels: ''' #kde,#kde-in, #kde-devel, #kde-accessibility, #qt<br />
<br />
''' This is awesome about SoK: '''Great learning opportunities, awesome platform to work with KDE professionals in the beginning of Open-source career and software developing ! <br />
<br />
''' This is what I learned during SoK: '''I learned many many new things during my project such as working with Qt, Git, Open-source repositories, KDE coding conventions, about different KDE projects and KDE application developement !</div>Shantanu Tusharhttps://community.kde.org/index.php?title=Plasma/Plasma_Media_Center/Akademy2012&diff=23527Plasma/Plasma Media Center/Akademy20122012-08-12T13:26:16Z<p>Shantanu Tushar: </p>
<hr />
<div>==Improvements discussed at PMC BoF at Akademy 2012==<br />
* Have thumbnails for home screen items, remove recently played list from homescreen - '''Shaan7'''<br />
* <strike>Add spacing between progress and volume sliders</strike><br />
* No browsing backends on plasma active<br />
* Unhide the browser when playlist reaches the end<br />
* <strike>Show a toggleable current/remaining time next to the sliders</strike><br />
* <strike>Add Places items to browsing backends</strike><br />
* <strike>Busy loading indicators whereever required</strike><br />
* Video view is too crowded, show lesser videos on the screen. Also, give an option for list of videos rather than a grid to show full title<br />
* Handle keyboard/remote navigation as items are on screen. For example, pressing down button while at the bottom most media in the grid should switch to the Search panel<br />
* <strike>The new border shown in the Media Browser is ugly, remove it</strike><br />
* <strike>Don't use bold or italic on text</strike><br />
* Remove margins from where not needed/they dont look good<br />
* <strike>Move the back button to the controller</strike><br />
* Let the user drag-n-drop to the playlist - '''ksinny'''<br />
* Make the browser titles be vertically aligned with each other so they look consistent<br />
* <strike>Elide text in the middle rather than the ends</strike><br />
* <strike>In Picture Strip, try to focus on the middle item</strike><br />
* Instead of typing out tags, its easier to select from a list<br />
* <strike>Make item highlight bigger than the item</strike><br />
* Resume video from where the user left off<br />
* Auto hide cursor while video plays<br />
* <strike>Categorize the welcome screen (as the mockup on the drawing board)</strike><br />
<br />
<br />
[[File:Pmc-akademy2012-whiteboard.jpg|800px|thumb|center]]</div>Shantanu Tusharhttps://community.kde.org/index.php?title=Plasma/Plasma_Media_Center/Akademy2012&diff=23523Plasma/Plasma Media Center/Akademy20122012-08-11T09:39:36Z<p>Shantanu Tushar: update assignees, strike out completed stuff</p>
<hr />
<div>==Improvements discussed at PMC BoF at Akademy 2012==<br />
* Have thumbnails for home screen items, remove recently played list from homescreen - '''Shaan7'''<br />
* <strike>Add spacing between progress and volume sliders</strike><br />
* No browsing backends on plasma active<br />
* Unhide the browser when playlist reaches the end<br />
* <strike>Show a toggleable current/remaining time next to the sliders</strike><br />
* Add Places items to browsing backends - '''ksinny'''<br />
* <strike>Busy loading indicators whereever required</strike><br />
* Video view is too crowded, show lesser videos on the screen. Also, give an option for list of videos rather than a grid to show full title<br />
* Handle keyboard/remote navigation as items are on screen. For example, pressing down button while at the bottom most media in the grid should switch to the Search panel<br />
* <strike>The new border shown in the Media Browser is ugly, remove it</strike><br />
* <strike>Don't use bold or italic on text</strike><br />
* Remove margins from where not needed/they dont look good<br />
* <strike>Move the back button to the controller</strike><br />
* Let the user drag-n-drop to the playlist - '''ksinny'''<br />
* Make the browser titles be vertically aligned with each other so they look consistent<br />
* <strike>Elide text in the middle rather than the ends</strike><br />
* <strike>In Picture Strip, try to focus on the middle item</strike><br />
* Instead of typing out tags, its easier to select from a list<br />
* <strike>Make item highlight bigger than the item</strike><br />
* Resume video from where the user left off<br />
* Auto hide cursor while video plays<br />
* <strike>Categorize the welcome screen (as the mockup on the drawing board)</strike><br />
<br />
<br />
[[File:Pmc-akademy2012-whiteboard.jpg|800px|thumb|center]]</div>Shantanu Tusharhttps://community.kde.org/index.php?title=Akademy/2012/QtQuick&diff=21687Akademy/2012/QtQuick2012-06-13T12:30:05Z<p>Shantanu Tushar: </p>
<hr />
<div>'''Qt Quick 2 Training on Monday, 2 July 2012'''<br />
<br />
Qt 5 is coming, and one of its most outstanding features will be Qt Quick 2. <br />
During Akademy, a training will be held covering the basic concepts of Qt Quick 2, how to make your own GUI with a specific emphasis on user interaction, animations and transitions between states. Last but not least, will be presented how to use the Qt C++ API to extend the Qt Quick 2 runtime.<br />
<br />
KDAB will be conducting this training, which is sponsored by Nokia in addition to their Platinum sponsorship. Nokia and KDAB are committed to Qt and KDE, and are offering this training to support that commitment. <br />
<br />
Coaches: Volker Krause and Kévin Ottens<br />
<br />
Preliminary schedule:<br />
<br />
09:30 - 11:00 Concepts and composing user interfaces<br />
<br />
11:00 - 11:15 Break<br />
<br />
11:15 - 12:45 User interaction<br />
<br />
12:45 - 13:45 Lunch Break<br />
<br />
13:45 - 15:15 Animations, states and transitions<br />
<br />
15:15 - 15:30 Break<br />
<br />
15:30 - 17:00 C++ Integration<br />
<br />
<br />
----<br />
<br />
'''Registration is required.'''<br />
<br />
The workshop is suitable for beginners and advanced developers. Please add your name and information below if you want to attend.<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Number<br />
! Name/IRC nick/email<br />
! Level of Qt expertise<br />
|-<br />
| width="10%" | 1<br />
| width="45%" | Ima Hotshot<br />
| width="45%" | I can do cute with one hand behind my back.<br />
|-<br />
| 2<br />
| Helio Chissini de Castro<br />
| Some Qt but need learn new tricks<br />
|-<br />
| 3<br />
| Lauri Võsandi<br />
| Always ready to learn new stuff!<br />
|-<br />
| 4<br />
| Sune Vuorela<br />
| c++ champion, haven't yet succeeded hello world in qtquick<br />
|-<br />
| 5<br />
| Luciano Montanaro<br />
| Good Qt knowledge, some Qt Quick 1<br />
|-<br />
| 6<br />
| Sinny Kumari (ksinny)<br />
| Intermediate Qt and QtQuick 1<br />
|-<br />
| 7<br />
| Shantanu Tushar (shaan7)<br />
| Advanced Qt and QtQuick 1<br />
|-<br />
| 8<br />
| Christoph Cullmann (cullmann)<br />
| Qt ok, Qt Quick never tried<br />
|-<br />
| 9<br />
| Dominik Haumann (dhaumann)<br />
| Qt, Qt Quick never tried<br />
|-<br />
| 10<br />
| Pradeepto Bhattacharya (pradeepto) <br />
| Qt <br />
|-<br />
| 11<br />
| Martin Gräßlin (mgraesslin)<br />
| Good Qt knowledge, knows the annoying parts of transiting ot QtQuick 1<br />
|-<br />
| 12<br />
| José Millán Soto (fid_jose)<br />
| Experience with Qt, but I've never tried QtQuick<br />
|-<br />
| 13<br />
| <br />
| <br />
|-<br />
| 14<br />
| <br />
| <br />
|-<br />
| 15<br />
| <br />
| <br />
|-<br />
| 16<br />
| <br />
| <br />
|-<br />
| 17<br />
| <br />
| <br />
|-<br />
| 18<br />
| <br />
| <br />
|-<br />
| 19<br />
| <br />
| <br />
|-<br />
| 20<br />
| <br />
| <br />
|-<br />
| 21<br />
| <br />
| <br />
|-<br />
| 22<br />
| <br />
| <br />
|-<br />
| 23<br />
| <br />
| <br />
|-<br />
| 24<br />
| <br />
| <br />
|-<br />
| 25<br />
| <br />
| <br />
|-<br />
| 26<br />
| <br />
| <br />
|-<br />
| 27<br />
| <br />
| <br />
|-<br />
| 28<br />
| <br />
| <br />
|-<br />
| 29<br />
| <br />
| <br />
|-<br />
| 30<br />
| <br />
|<br />
|-<br />
| 31<br />
| <br />
| <br />
|-<br />
| 32<br />
| <br />
| <br />
|-<br />
| 33<br />
| <br />
| <br />
|-<br />
| 34<br />
| <br />
| <br />
|-<br />
| 35<br />
| <br />
| <br />
|-<br />
| 36<br />
| <br />
| <br />
|-<br />
| 37<br />
| <br />
| <br />
|-<br />
| 38<br />
| <br />
| <br />
|-<br />
| 39<br />
| <br />
| <br />
|-<br />
| 40<br />
| <br />
| <br />
|}</div>Shantanu Tusharhttps://community.kde.org/index.php?title=Plasma/Plasma_Media_Center&diff=21630Plasma/Plasma Media Center2012-06-12T19:01:16Z<p>Shantanu Tushar: </p>
<hr />
<div>This page describes the goals for Plasma Media Center (PMC), explains the design choices being made and details the outstanding tasks remaining. <br />
<br />
== Use Cases ==<br />
<br />
=== Viewing Media On The Go With a Laptop ===<br />
<br />
Joe is on a train / airplane travelling between two cities. The trip is long enough to watch the latest episode of his favourite T.V. show which he downloaded the night before from his PVR at home. Joe pops open his laptop, clicks on the Desktop Toolbox and selects "Media Center". PMC loads and he selects "Video", which presents a list of videos on his internal hard drive. <br />
<br />
=== Viewing Media At Home, Laptop -&gt; T.V. ===<br />
<br />
Jane is at home and wants to show her dinner guests pictures from the recent weekend trip she went on. Jane plugs her laptop into the living room television, opens the application launcher (Kickoff, Lancelot) and selects "Media Center". PMC starts up and she selects "Photos" which shows various sets of photo albums. After going through the "Weekend Ski Trip" photos, she goes back and selects Videos -&gt; Youtube and loads a Youtube playlist of top 40 music videos to play in the background while they visit. <br />
<br />
=== A PVR Style Experience ===<br />
<br />
Jaqueline sits down on the couch with her husband Jack and they turn on the television and their Plasma Media Center set top box. They grab the remote control and check the videos that they had recorded / downloaded but haven't watched yet. They select an episode of House and another of Fawlty Towers and press "Play".<br />
<br />
=== Media Center for Plasma Active ===<br />
<br />
PMC now works well with Plama Active. Small video showing PMC running on ExoPC at http://www.youtube.com/watch?v=B8yV2NKiADM .<br />
<br />
== Design Decisions ==<br />
<br />
=== Architecture ===<br />
<br />
On a very high level, PMC is composed of QML components for different parts of the MediaCenter.<br />
<br />
==== Components ====<br />
<br />
<br />
* Media Welcome<br />
It is a QML componnet which hosts the welcome screen which is presented to the user when PMC starts up.<br />
<br />
* Media Browser<br />
It is a QML component which allows user to browse through the media from a backend and to select the desired media to play or view.<br />
<br />
* Media Player<br />
It is a QML component that uses Phonon QML to play Audio/Video and show Images.<br />
<br />
* Media Controller<br />
It is QML component that allows user to control currently playing media status like play/pause, seek, volume.<br />
<br />
* Media Infobar<br />
It is a QML component which shows information about the current media to the user.<br />
<br />
*RuntimeData<br />
It is a QML component which handles various media information that is needed when PMC is running.<br />
<br />
==== Browsing Backends ====<br />
<br />
Another very important component of PMC, browsing backends support PMC to have different sources for media to be used. Backends are plguins so one can, for example, write a plugin to show all images from a image sharing website<br />
<br />
* Local files<br />
<br />
This backend collection allows the user to browse her local filesystem for media. It exposes three backends-<br />
<br />
** Local pictures<br />
** Local music<br />
** Local videos<br />
<br />
* Metadata<br />
<br />
This backend collection uses Plasma Active's metadata model to fetch media from Nepomuk. This should allow us to create groupings based on media tags (such as artist, album etc). Similar to local, this contains three backends-<br />
<br />
** Metadata pictures<br />
** Metadata music<br />
** Metadata videos<br />
<br />
* Flickr<br />
<br />
This backend fetches images related to the given search string from flickr.<br />
<br />
==== Libs ====<br />
<br />
This has core MediaCenter classes to help in functionality.<br />
<br />
==== Shells ====<br />
<br />
This has the actual PMC shell which loads all the components and specifies the positioning of different components within shell. It also provides interconnection between various components.<br />
<br />
=== Mockups ===<br />
<br />
Here are three early Mockups by [http://pinheiro-kde.blogspot.com/ Nuno Pinheiro] (with permission). The top/bottom panel idea has been taken from here (higher resolutions of these on svn)<br> <br />
<br />
[[Image:Nuno albums.JPG|301x189px|Albums]] <br />
<br />
[[Image:Nuno pics.JPG|301x188px]] <br />
<br />
[[Image:Nuno playlist.JPG|303x189px]]<br />
<br />
'''These are from the very early ideas, for current screenshots, see the Status Reports section at the bottom of this page'''<br />
<br />
=== Navigation within PMC ===<br />
<br />
*Wiimote (thanks Sebastian for the initial work on this)<br />
*Keyboard<br />
*Mouse<br />
*Touch<br />
*Remote control<br />
<br />
== TODO ==<br />
<br />
=== Support for playlist ===<br />
Right now users can select a media and play it, however a playlist concept is missing<br />
<br />
=== Accessibility ===<br />
Make sure that the following input methods work-<br />
*Keyboard<br />
*Touch Gestures (pinch, swipe etc)<br />
*TV Remote (wiimote etc)<br />
<br />
=== Port dataengines (youtube, picasa etc) to new plugins architecture ===<br />
'''hayri?'''<br />
<br />
=== Support for grouping by tag, artists, album etc in Music Plugin ===<br />
'''hayri?'''<br />
<br />
=== Adding DVD/CD play support ===<br />
<br />
=== In general add support for removable devices ===<br />
<br />
=== Documentation ===<br />
<br />
=== Visualizations for music ===<br />
<br />
<br />
== Current contributors ==<br />
<br />
'''Marco Martin''' - notmart on freenode<br />
<br />
'''Shantanu Tushar''' - Shaan7 on freenode<br />
<br />
'''Sinny Kumari''' - ksinny on freenode<br />
<br />
<br />
== Past contributors ==<br />
<br />
'''Christophe Olinger''' - binarylooks on freenode, olingerc on gitorious.org<br> <br />
<br />
'''Sebastian''' - sebas on freenode <br />
<br />
'''Alessandro''' - alediaferia on freenode<br />
<br />
'''Christopher Blauvelt''' - cblauvelt on freenode <br />
<br />
'''Lukas Appelhans'''<br />
<br />
'''Onur-Hayri Bakici'''<br />
<br />
... add your name if you have contributed and its missing<br />
<br />
== Plasma Media Center IRC&nbsp;Channel on Freenode ==<br />
<br />
* #plasma-mediacenter on irc.freenode.net<br><br />
<br />
== Repository ==<br />
<br />
Code is browsable at [https://projects.kde.org/projects/playground/multimedia/plasma-mediacenter/repository PMC @ kde git]<br />
<br />
=== Status Reports ===<br />
<br />
'''2012''' [http://sinny.in/node/17] [http://sinny.in/node/18]<br />
<br />
'''2011''' [http://sinny.in/node/12] [http://sinny.in/node/13] [http://sinny.in/node/14] [http://sinny.in/node/15]<br />
<br />
'''2010''' [http://alediaferia.blogspot.com/2010/03/call-for-devs-part-i.html] [http://alediaferia.blogspot.com/2010/04/welcome-to-my-gsoc-student-personal.html] [http://blog.binarylooks.com/2010/05/plasma-media-center-status-report-and-introduction/] <br />
<br />
'''2009''' [http://alediaferia.wordpress.com/2009/04/22/smells-like-summer-of-code/] [http://alediaferia.wordpress.com/2009/04/28/adventures-in-mediacenter-land/] [http://alediaferia.wordpress.com/2009/04/28/get-your-cover/] [http://alediaferia.wordpress.com/2009/05/27/plasmatube/] [http://alediaferia.wordpress.com/2009/06/11/browsing-your-medias/] [http://alediaferia.wordpress.com/2009/06/17/rating-your-medias/] [http://alediaferia.wordpress.com/2009/06/24/media-center-quick-update/] [http://alediaferia.wordpress.com/2009/07/11/still-alive/] [http://alediaferia.wordpress.com/2009/08/08/mediacenter-again/] [http://alediaferia.blogspot.com/2009/08/gsoc-ends-mediacenter-continues.html] [http://alediaferia.blogspot.com/2009/09/plug-your-model-in-mediacenter.html]<br />
<br />
----<br />
<br />
Find the older design and discussions here [[/History]]</div>Shantanu Tushar