Plasma/Active/Development/Tasks: Difference between revisions

From KDE Community Wiki
No edit summary
No edit summary
Line 1: Line 1:
= Contributing =
= Contributing =
If you would like to support and become part of the [[Plasma/Active|Plasma Active]] team, you can use the following list of open tasks as inspiration. Please pick one of these tasks, for questions, you can always [[Plasma/Active/Info#Contact|get in touch with us]].
If you would like to support and become part of the [[Plasma/Active|Plasma Active]] team, you can use the following list of open tasks as inspiration. Please pick one of these tasks, for questions, you can always [[Plasma/Active/Info#Contact|get in touch with us]].
To add a new task, please email the mailing list (active at kde.org) with a subject starting with "Task Proposal:" and which includes a User Story, Why This Is Important, Proposed Implementation and Task Details section as used on this page for tasks. After discussion on the mailing list, it can be moved here. The unclaimed tasks section is a great place to start looking for inspiration.
If you start working on of the tasks below, please let the rest of the team know by email or on irc so that we may coordinate. While each task has an "owner" everyone is welcome and encouraged to participate in the development of solutions for the task.


= On Screen Keyboard =
= On Screen Keyboard =
== Status: 0% ==
== Status: 0% complete ==


Not started.
Not started.


==User Story==
==User Story==
When there is a text edit area on screen, it should be possible to enter new  
When there is a text edit area on screen, it should be possible to enter new text and edit the text that is there using the on screen keyboard. Touching a text edit area brings up the keyboard. It should be possible to use multiple keyboard layouts; access numbers, symbols and accented letters; avoid covering the editing area, etc.
text and edit the text that is there using the on screen keyboard. Touching a  
text edit area brings up the keyboard. It should be possible to use multiple  
keyboard layouts; access numbers, symbols and accented letters; avoid covering  
the editing area, etc.


==Why this is important==
==Why this is important==
Without a keyboard, text input is impossible; the better the keyboard is, the  
Without a keyboard, text input is impossible; the better the keyboard is, the better the text input experience will be and given that this is an extremely common use case is an important item.
better the text input experience will be and given that this is an extremely  
common use case is an important item.


==Proposed implementation==
==Proposed implementation==
1) Write a keyboard layout description file to QML converter which would, using  
* Write a keyboard layout description file to QML converter which would, using the Maliit keyboard layout descriptions and the C++ library to access them the Maliit project has written. This would give us a set of QML files that can be loaded directly into a keyboard shell, and this QML should use Plasma Qt Components
the Maliit keyboard layout descriptions and the C++ library to access them the  
* Write a Maliit plugin that loads these QML files and provides integration with things such as switching layouts, etc.
Maliit project has written. This would give us a set of QML files that can be  
loaded directly into a keyboard shell, and this QML should use Plasma Qt  
Components


2) Write a Maliit plugin that loads these QML files and provides integration
This will get us support for non-Qt apps, edit area avoidance, ability for apps to request specific layout types and other advanced features for "free". It will add a Maliit dependency, however. The Maliit developers have been extremely supportive and open so far, and we are holding monthly meetings with them.
with things such as switching layouts, etc.
 
This will get us support for non-Qt apps, edit area avoidance, ability for  
apps to request specific layout types and other advanced features for "free".  
It will add a Maliit dependency, however. The Maliit developers have been  
extremely supportive and open so far, and we are holding monthly meetings with  
them.


==Task Details==
==Task Details==
Line 41: Line 29:


= Unify suspend and shutdown with lock screen =
= Unify suspend and shutdown with lock screen =
== Status: 90% ==
== Status: 90% complete ==
Implementation complete and working. Needs improved artwork for widgets on lock screen, power button applet on panel should be removed and screenlocker branch needs merging into master of kde-workspace.
Implementation complete and working. Needs improved artwork for widgets on lock screen, power button applet on panel should be removed and screenlocker branch needs merging into master of kde-workspace.


== User Story ==
== User Story ==


When finished using the device (which may have been 5 minutes or hours of  
When finished using the device (which may have been 5 minutes or hours of usage), it is desirable to put the device to sleep to save the battery. In certain cases, such as when a download or other background process is ongoing and / or the time between usage is expected to be short, then it is desirable to just lock device rather than sleep it. If usage is not expected for quite some time (e.g. overnight or longer) where charging will not be possible, it can be more desirable to actually turn the device off altogether and so a shutdown option is required. A single, elegant interface for these functions will be provided.
usage), it is desirable to put the device to sleep to save the battery. In  
certain cases, such as when a download or other background process is ongoing  
and / or the time between usage is expected to be short, then it is desirable  
to just lock device rather than sleep it. If usage is not expected for quite  
some time (e.g. overnight or longer) where charging will not be possible, it  
can be more desirable to actually turn the device off altogether and so a  
shutdown option is required. A single, elegant interface for these functions  
will be provided.


==Why this is important==
==Why this is important==
Lock, sleep and shutdown are critical end-of-usage modes that people in  
 
different scenarios will need. Making these features easy to get to and easy to  
Lock, sleep and shutdown are critical end-of-usage modes that people in different scenarios will need. Making these features easy to get to and easy to understand and use will make every end-of-use experience more pleasant.
understand and use will make every end-of-use experience more pleasant.


==Proposed implementation==
==Proposed implementation==
* On the QML based, lock screen add two sliders: one for Sleep and one for  
* <s>On the QML based, lock screen add two sliders: one for Sleep and one for Shutdown. The sleep slider will appear in the top left and shutdown in the top right, aligned vertically with the clock.</s>
Shutdown. The sleep slider will appear in the top left and shutdown in the top  
right, aligned vertically with the clock.


* Upon locking, the sleep slider will start moving slowly on its own towards  
* <s>Upon locking, the sleep slider will start moving slowly on its own towards the "activate" position. User intervention will stop the slider, thereby cancelling the automatic sleep. This also gives the user feedback as to how long until the device actually sleeps when it locks (e.g. automatically after lack of usage)</s>
the "activate" position. User intervention will stop the slider, thereby  
cancelling the automatic sleep. This also gives the user feedback as to how  
long until the device actually sleeps when it locks (e.g. automatically after  
lack of usage)


* The Shutdown slider will only trigger if the user actually interacts with  
* <s>The Shutdown slider will only trigger if the user actually interacts with it. If the user starts sliding it, the auto-sleep will be cancelled.</s>
it. If the user starts sliding it, the auto-sleep will be cancelled.


* This would also be a good opportunity to move the lock screen into ksmserver  
* This would also be a good opportunity to move the lock screen into ksmserver itself, getting rid of the separate daemon that exists only for locking.
itself, getting rid of the separate daemon that exists only for locking.


==Task Details==
==Task Details==
Line 82: Line 53:
Effort Estimation: 2
Effort Estimation: 2
Task dependencies: None.
Task dependencies: None.
=Centralized account management=
==Status: 0% complete==
Not started.
==User Story==
A big portion of the user life on the tablet is about interacting with online services, being sharing photos on flickr, twitter or syncing the contents of his activities, files and contacts to an owncloud instance.
==Why this is important==
Many different applications will need access to the same services, so a separate user authentication is not acceptable, a centralized framework is needed.
==Proposed implementation==
* Write a generic framework to load authentication plugins to web services. it will need to be able to load a library for authentication, either c++ or js and a qml file for the authentication form, integrate with the systemsettings app
* Write a couple of modules for at least owncloud and a couple of other services such as twitter or flickr
* Write a couple of SLC plugins at least for sharing photos and text* document the process for third party developers to add other services in the supported ones
This will get support for a central authentication system, shared between any app that needs to connect to a service, slc, owncloud
==Task Details==
Owned by: Marco Martin
Effort Estimation: 4
Task dependencies: None, some other tasks depend from this one.
=eBook Reader=
==Status: 0% Completed==
==User Story==
Jimmi has a number of eBooks in PDF and ePub format on his Plasma Active device. He opens the eBook reader which presents a list of books on the system. Selecting on the books, he can then start reading, starting from where
he last left off. An elegant touch UI for navigating between pages, jumping chapters, jumping back to the collection, etc. is offered.
==Why this is important==
Reading on a tablet is a key activity. Aside from web content, eBooks are very popular. It is the primary use of many tablets on the market right now, in fact. Okular is a good reader, but the UI is really clumsy for a touch device.
==Proposed implementation==
A QML UI for Okular which takes the core display and reader of Okular and adds a Nepomuk backed collection browser along with a touch-appropriate UI for reading: swipe to change pages and a menu button to bring up additional options such as "return to collection" or "go to table of contents".
==Task Details==
Owned by: Aaron Seigo
Effort Estimation: 5
Task dependencies: None.
=Files handling,browsing,tagging=
==Status: 25% completed==
File browser application has been written and is working.
User Story
=======
The user will use a centralized application (with some pieces of it available also as a component, in order to have it embedded in other apps) when he want to tag, move,delete, copy to usb a large group of files, regardless of the file type
Why this is important
=============
Right now Plasma active doesn't have a file manager, is possible to access only to images or arbitrary files by adding them to the current activity, not possible to delete them or copy to/from an usb drive
==Proposed implementation==
* Finish eventual missing points of the nepomuk data models
* export a public component for filesystem browsing (will be used only for removable drives)
* write a simple application to control the metadata model, to do queries (facet style browsing) by:
** date
** name
** rating
** associated activity
* functions to individually or mass-tagging, rating,deleting
* simple explorer of removable drives, in the same app, same (even tough limited, partially disabled) ui
* when browsing the local storage a "send to removable drive" option will be there, maybe with slc, when browsing a removable drive there will be an option to send to local storage, both either individually or en mass
* move parts worth to be shared in an import to be able to include parts of it in other applications (ie semantic file selection dialog)
==Task Details==
Owned by: Marco Martin
Effort Estimation: 5
Task dependencies: to Authentication framework for SLC aspects.





Revision as of 13:21, 2 February 2012

Contributing

If you would like to support and become part of the Plasma Active team, you can use the following list of open tasks as inspiration. Please pick one of these tasks, for questions, you can always get in touch with us.

To add a new task, please email the mailing list (active at kde.org) with a subject starting with "Task Proposal:" and which includes a User Story, Why This Is Important, Proposed Implementation and Task Details section as used on this page for tasks. After discussion on the mailing list, it can be moved here. The unclaimed tasks section is a great place to start looking for inspiration.

If you start working on of the tasks below, please let the rest of the team know by email or on irc so that we may coordinate. While each task has an "owner" everyone is welcome and encouraged to participate in the development of solutions for the task.

On Screen Keyboard

Status: 0% complete

Not started.

User Story

When there is a text edit area on screen, it should be possible to enter new text and edit the text that is there using the on screen keyboard. Touching a text edit area brings up the keyboard. It should be possible to use multiple keyboard layouts; access numbers, symbols and accented letters; avoid covering the editing area, etc.

Why this is important

Without a keyboard, text input is impossible; the better the keyboard is, the better the text input experience will be and given that this is an extremely common use case is an important item.

Proposed implementation

  • Write a keyboard layout description file to QML converter which would, using the Maliit keyboard layout descriptions and the C++ library to access them the Maliit project has written. This would give us a set of QML files that can be loaded directly into a keyboard shell, and this QML should use Plasma Qt Components
  • Write a Maliit plugin that loads these QML files and provides integration with things such as switching layouts, etc.

This will get us support for non-Qt apps, edit area avoidance, ability for apps to request specific layout types and other advanced features for "free". It will add a Maliit dependency, however. The Maliit developers have been extremely supportive and open so far, and we are holding monthly meetings with them.

Task Details

Owned by: Aaron Seigo Effort Estimation: 4 Task dependencies: None.

Unify suspend and shutdown with lock screen

Status: 90% complete

Implementation complete and working. Needs improved artwork for widgets on lock screen, power button applet on panel should be removed and screenlocker branch needs merging into master of kde-workspace.

User Story

When finished using the device (which may have been 5 minutes or hours of usage), it is desirable to put the device to sleep to save the battery. In certain cases, such as when a download or other background process is ongoing and / or the time between usage is expected to be short, then it is desirable to just lock device rather than sleep it. If usage is not expected for quite some time (e.g. overnight or longer) where charging will not be possible, it can be more desirable to actually turn the device off altogether and so a shutdown option is required. A single, elegant interface for these functions will be provided.

Why this is important

Lock, sleep and shutdown are critical end-of-usage modes that people in different scenarios will need. Making these features easy to get to and easy to understand and use will make every end-of-use experience more pleasant.

Proposed implementation

  • On the QML based, lock screen add two sliders: one for Sleep and one for Shutdown. The sleep slider will appear in the top left and shutdown in the top right, aligned vertically with the clock.
  • Upon locking, the sleep slider will start moving slowly on its own towards the "activate" position. User intervention will stop the slider, thereby cancelling the automatic sleep. This also gives the user feedback as to how long until the device actually sleeps when it locks (e.g. automatically after lack of usage)
  • The Shutdown slider will only trigger if the user actually interacts with it. If the user starts sliding it, the auto-sleep will be cancelled.
  • This would also be a good opportunity to move the lock screen into ksmserver itself, getting rid of the separate daemon that exists only for locking.

Task Details

Owned by: Aaron Seigo Effort Estimation: 2 Task dependencies: None.

Centralized account management

Status: 0% complete

Not started.

User Story

A big portion of the user life on the tablet is about interacting with online services, being sharing photos on flickr, twitter or syncing the contents of his activities, files and contacts to an owncloud instance.

Why this is important

Many different applications will need access to the same services, so a separate user authentication is not acceptable, a centralized framework is needed.

Proposed implementation

  • Write a generic framework to load authentication plugins to web services. it will need to be able to load a library for authentication, either c++ or js and a qml file for the authentication form, integrate with the systemsettings app
  • Write a couple of modules for at least owncloud and a couple of other services such as twitter or flickr
  • Write a couple of SLC plugins at least for sharing photos and text* document the process for third party developers to add other services in the supported ones

This will get support for a central authentication system, shared between any app that needs to connect to a service, slc, owncloud

Task Details

Owned by: Marco Martin Effort Estimation: 4 Task dependencies: None, some other tasks depend from this one.

eBook Reader

Status: 0% Completed

User Story

Jimmi has a number of eBooks in PDF and ePub format on his Plasma Active device. He opens the eBook reader which presents a list of books on the system. Selecting on the books, he can then start reading, starting from where he last left off. An elegant touch UI for navigating between pages, jumping chapters, jumping back to the collection, etc. is offered.

Why this is important

Reading on a tablet is a key activity. Aside from web content, eBooks are very popular. It is the primary use of many tablets on the market right now, in fact. Okular is a good reader, but the UI is really clumsy for a touch device.

Proposed implementation

A QML UI for Okular which takes the core display and reader of Okular and adds a Nepomuk backed collection browser along with a touch-appropriate UI for reading: swipe to change pages and a menu button to bring up additional options such as "return to collection" or "go to table of contents".

Task Details

Owned by: Aaron Seigo Effort Estimation: 5 Task dependencies: None.

Files handling,browsing,tagging

Status: 25% completed

File browser application has been written and is working.

User Story

=

The user will use a centralized application (with some pieces of it available also as a component, in order to have it embedded in other apps) when he want to tag, move,delete, copy to usb a large group of files, regardless of the file type


Why this is important

=

Right now Plasma active doesn't have a file manager, is possible to access only to images or arbitrary files by adding them to the current activity, not possible to delete them or copy to/from an usb drive

Proposed implementation

  • Finish eventual missing points of the nepomuk data models
  • export a public component for filesystem browsing (will be used only for removable drives)
  • write a simple application to control the metadata model, to do queries (facet style browsing) by:
    • date
    • name
    • rating
    • associated activity
  • functions to individually or mass-tagging, rating,deleting
  • simple explorer of removable drives, in the same app, same (even tough limited, partially disabled) ui
  • when browsing the local storage a "send to removable drive" option will be there, maybe with slc, when browsing a removable drive there will be an option to send to local storage, both either individually or en mass
  • move parts worth to be shared in an import to be able to include parts of it in other applications (ie semantic file selection dialog)


Task Details

Owned by: Marco Martin Effort Estimation: 5 Task dependencies: to Authentication framework for SLC aspects.


Unclaimed

Unexplored

Default Configuration

  • KWallet configuation -> passwordless and no questions for access

Activity screen

  • Custom titles for widgets, and a way for applets to set custom titles

Panel

  • Put application systray icons after status icons

Panel

  • hardcoded positions of containments (panel containment)
  • hardcoded positions of slc and clock (systray)

Javascript Setup

  • Ability to load initial widgets positions with a Javascript (ala Plasma Desktop Scripting)

Launcher

  • Show most used / favorites as first line on first page

Braindumps

SLC

  • Better artwork: connect icon is very odd
  • Not matter what is touched, Connect is always shown: probable touch screen bug: the touch event arrives always in the same coordinates unless a connected usb mouse is moved-> actually old qgraphicsview bug: occurs also in the desktop taskbar group menus, partially fixed
  • Bigger target invoking popup, and implement dragable
  • Show title of URI to be operated on in the context menu

Window Management

  • OpenGL ES on MeeGO

Application workflow

  • Not obvious where apps are
  • Visual feedback between time when activity is selected and when the activity appears (so we know something is actually happening)

Window Strip

  • Window sorting
    • find solution to get at methods Martin added to kdelibs/*/kworkspace MRU
    • Put new windows after the current window
  • Show windows from current activity only
  • Sticky windows and moving windows across activities (SLC?)

Active Browser

  • search in page
  • save-as menus (e.g. for images)
  • "back" repositions page to last viewed position
  • plugin support -> 100% depends from qtwebkit i.e. flash tries to work, but doesn't really ;)
  • display ssl status
  • accepting non-verifiable SSL certs
  • connect downloaded files to the activity (nepomuk bug)

Image viewer

  • nicer ui
  • possibility to browse sd cards/download/upload images
  • search ui
  • albums?

Multimedia

  • Create multimedia activity
  • Good touch volume applet
  • Mediaplayer (minitube? bangarang? tomahawk? Plasma Mediacenter components?)
  • Webcam (kamoso?)

Social Networks

  • touch-friendly configuration for PIM (email, contacts, events.)
  • touch-friendly setup of Facebook via Akonadi
  • touch-friendly setup of Google via Akonadi
  • Akonadi model for QML plasmoids
  • Plasma QML widgets for
    • Contacts
    • Messages
    • Events

Workspace

  • Dynamic switching of Plasma workspace types, eg from the display manager, or due to hardware events such as docking?

KDM

  • Touch friendly login screen for eg touchscreen all-in-one PCs to use (low priority; we have auto-login)

Tools

  • Make Plasmate release-ready
    • Improve editor for QML
    • Implement scripting console
    • Fix sizing problems in previewer

Artwork

Documentation

  • Improve installation docs
  • Create user docs (pending UI freeze)

Support and Testing

Goals and Larger Ideas for Future Releases

  • Geolocation
    • Document and complete API
    • Use geolocation in more widgets
    • Cache geolocation
  • libplasma2 & QSceneGraph port
  • test GLES backend for kwin
  • DBusmenu implementation in QML
  • KToolBar replacement in QML (using a KActionCollection)
  • KXmlGui actions access in QML
  • KConfig integration with ownCloud
  • Continue/finish porting KDE applications to the mobile build profile (mostly removing deprecated calls)