Jump to content

KTp: Difference between revisions

From KDE Community Wiki
Drdanz (talk | contribs)
No edit summary
Pmello (talk | contribs)
Update page to transclude sections from subpages rather than simple link to them
 
(28 intermediate revisions by 8 users not shown)
Line 1: Line 1:
==Introduction==
{{Note|This page has old content. See page history.}}


Real time Communication has traditionally been a detatched feature of Desktop Computing, provided via stand-alone Instant Messaging clients with poor integration into the desktop experience. One of the primary goals of the KDE 4 series is to tighten integration between different components of the environment. The Realtime Communication and Collaboration (RTCC) project aims to tackle just this.
= KDE Telepathy - Real-Time Communication and Collaboration =
{{:KTp/Header}}


Our aims are:
== Getting Involved ==
* To integrate Real Time Communication deeply into the KDE Workspaces and Applications
{{:KTp/Getting Involved}}
* To provide a infrastructure to aid development of Collaborative features for KDE applications.


If you find these goals appealing, why not consider [[#Getting_Involved|getting involved]]. C++ programming is *not* a necessity.
== Development ==
{{:KTp/Developers}}


==Technical Information==
== Testing  ==
{{:KTp/Testers}}


* The RTCC project uses the cross-desktop [http://telepathy.freedesktop.org Telepathy Framework] as the basis for our work.
== Packaging ==
* We should try and reuse code from Kopete/other already existing code wherever possibly. However, this should be balanced with the need to refactor/rewrite where appropriate to keep the new code true to Telepathy idioms.
{{:KTp/Packaging_Guide}}


==Frequently Asked Questions==
== See also ==
 
[http://community.kde.org/index.php?title=Special%3APrefixIndex&prefix=KTp&namespace=0 Index of KDE Community Wiki pages about Telepathy]
You can find a list of answers to frequently asked questions here: [[Real-Time_Communication_and_Collaboration/FAQ|FAQ]].
 
See also https://gkiagia.wordpress.com/2010/09/20/what-is-telepathy-kde/
 
==Getting Started==
Before you start playing with/hacking on the Telepathy integration stuff, you need to get it all compiled: [[Real-Time_Communication_and_Collaboration/Getting_Set_Up|Instructions]]
 
We are currently in the process of porting all our work from telepathy-qt4 0.3/0.4 to version 0.5 (which is binary incompatible with 0.3 and 0.4). [[Real-Time_Communication_and_Collaboration/Current_State|This page]] shows the progress with this task.
 
==The Plan==
1) Build components equivalent to a traditional IM application, using Kopete code as much as possible, and integrating with other Pillars of KDE where appropriate.
 
2) Add advanced Telepathy features such as voice/video.
 
3) Build components and Convenience classes to enable real-time communication and collaboration features in any KDE SC app that wants them.
 
==The Work==
 
What we need to get done. This is divided into two sections:
* [[#Phase_1|Phase 1]] contains the tasks which *must* be completed in order for us to make a first preview release.
* [[#Phase_2|Phase 2]] contains other speculative major features that we will probably implement once [[#Phase_1|Phase 1]] is complete.
 
=== Phase 1 ===
 
These are the essential tasks which must be completed before we can make a first release. Adding or removing tasks from this list requires a consensus on the kde-telepathy mailing list first. Click on a task title for further information about that task.
 
{| border="1"
! Status !! Task!! Developers !! Source Code
|-
| IN PROGRESS || [[Real-Time_Communication_and_Collaboration/Components/Account_Management_GUI|Account Management GUI]] || George Goldberg <grundleborg googlemail com> || [[Real-Time_Communication_and_Collaboration/Getting_Set_Up#Telepathy_Accounts_KCM|See here]]
|-
| IN PROGRESS || [[Real-Time_Communication_and_Collaboration/Components/Chat_Window|Chat Window App/Lib]] || David Edmundson <kde davidedmundson co uk> || [[Real-Time_Communication_and_Collaboration/Getting_Set_Up#Chat_window_App|See here]]
|-
| IN PROGRESS || [[Real-Time_Communication_and_Collaboration/Components/Buddy_List|Buddy List App]] || George Goldberg <grundleborg googlemail com> Dario Freddi <drf kde org> Help much appreciated || [[Real-Time_Communication_and_Collaboration/Getting_Set_Up#Contact_List_App|See here]]
|-
| IN PROGRESS || [[Real-Time_Communication_and_Collaboration/Components/Desktop-wide_Approver|Desktop Wide Tp::Approver]] || George Kiagiadakis <kiagiadakis.george gmail com> ||  |
|-
| IN PROGRESS || [[Real-Time_Communication_and_Collaboration/Components/Integration_Daemon|Telepathy Integration Daemon]] || George Goldberg <grundleborg googlemail com> Dario Freddi <drf kde org> Help much appreciated || [[Real-Time_Communication_and_Collaboration/Getting_Set_Up#Integration_Daemon|See here]]
|-
| IN PROGRESS || [[Real-Time_Communication_and_Collaboration/Components/Presence_Plasmoid|Presence Plasmoid]] || Dario Freddi <drf kde org> || [[Real-Time_Communication_and_Collaboration/Getting_Set_Up#Presence_Plasmoid_and_Dataengine|See here]]
|-
|}
 
=== Phase 2 ===
 
This section contains features that will *probably* be implemented once the first preview release has been made.
 
{| border="1"
! Status !! Task!! Developers !! Source Code
|-
| NOT STARTED || [[Real-Time_Communication_and_Collaboration/Components/Logger|Logger Application]] ||  ||  |
|-
| IN PROGRESS || [[Real-Time_Communication_and_Collaboration/Components/Call_UI|Call UI]] || George Kiagiadakis <kiagiadakis.george gmail com> || [[Real-Time_Communication_and_Collaboration/Getting_Set_Up#Call_window_App|See here]]
|}
 
==Getting Involved==
At this stage, the best way to get involved is to contact the existing team, either on IRC (#kde-telepathy channel on irc.freenode.net) or on our [https://mail.kde.org/mailman/listinfo/kde-telepathy mailing list].
 
===Tasks===
Here is a list of tasks that you could get involved with at this moment. Please get in contact with us before writing anything, though. You can find some more details in the work section above.
 
* Fix bugs in the accounts KCM.
* Write account plugins for the accounts KCM.
* Complete some missing bits from the nepomuk integration service.
* (Re-)write the contact list UI.
* (Re-)write the call UI (just the UI, not the actual call mechanism).
* Investigate how to implement the logger and then implement it.
* Integrate telepathy into some kde application, doing something fancy and innovative (use your fantasy here).
* Write a runner (or extend the existing nepomuk runner) for krunner that searches for contacts in nepomuk and allows you to start a chat with them.
* Port something to tp-qt4 0.5. See [[Real-Time_Communication_and_Collaboration/Current_State|here]] for details.
 
===Workflow===
If you want to work on a feature, clone the git repository on the server side and then clone your personal clone on your local machine. Make a new git branch and start working there. Try to keep commits small and meaningful. Once you are finished, push the branch on your server-side clone and ask someone of the team to review it. Once it is reviewed, you can merge it on the master repository (or ask someone else to merge it).
 
==Events==
* [[Telepathy/Events/TelepathySprint1|Telepathy sprint - September 2010]]

Latest revision as of 22:28, 26 February 2024

Note

This page has old content. See page history.


KDE Telepathy - Real-Time Communication and Collaboration

Project logo Welcome to the
KDE Telepathy Development Wiki
Current Version: 23.07.70

Open Hub project report for KDE Telepathy

Getting Involved

Who can be a contributor?

This project needs coders, designers, artists, testers, documentation writers. To help out, get in touch, tell us how you're interested in helping.

Contacting the developers

IRC

Email

Setup

Main page: Instructions

Before you start playing with/hacking on the Telepathy integration stuff, you need to have the latest version compiled and working.

First steps

The best way to get involved is to start working on some "junior jobs". These are small bugs or features that exist in our applications that are a good way to get to learn the code, and learn our workflow process.

A list of junior jobs can be found here.

If you want to work on any of those, get in touch!

Recommended Reading

Workflow

If you want to work on a feature, start by cloning the git repository from the KDE Invent server. Then create a new branch in the cloned directory and start working there. Try to keep your commits atomic (small and meaningful). Once you are finished working on a single bug or feature, push the branch in your cloned repository back to the KDE Invent server (under your own account) and then use the web interface to create a Merge Request back to the official repository before asking someone on the developer team to review it. Once it is reviewed, you may be asked to make further changes, but once all concerns are addressed it will be merged into the codebase.

External links

Development

Introduction

Real-time communication has traditionally been a detached feature of desktop computing, provided via standalone instant messaging clients with poor integration into the desktop experience. One of the primary goals of the KDE 4 series is to tighten integration between different components of the environment. The KDE Telepathy (hereafter "KTp") project aims to tackle just this.

Our aims are:

  • To integrate real-time communication deeply into the KDE workspaces and applications
  • To provide an infrastructure to aid development of collaborative features for KDE applications.

If you find these goals appealing, why not consider getting involved? C++ programming is not a requirement.

Technical information

  • The RTCC project uses the cross-desktop Telepathy Framework as the basis for our work.
  • We should try and reuse code from Kopete and other existing code wherever possible. However, this should be balanced with the need to refactor/rewrite where appropriate, to keep the new code true to Telepathy idioms.

Frequently asked questions

See also: Gkiagia’s Blog: What is Telepathy-KDE?

You can find a list of answers to frequently asked questions here: FAQ.

The plan

  1. Build components equivalent to a traditional IM application, using Kopete code as much as possible, and integrating with other pillars of KDE, where appropriate.
  2. Add advanced Telepathy features such as voice/video.
  3. Build components and convenience classes to enable real-time communication and collaboration features in any KDE SC app that wants them.

Current ongoing large tasks

Workflow

Main page: Getting involved § Workflow

Use of milestones

We're trialing a clever use of milestones suggested by Jeroen van Meeuwen.

How it works

All bugs by default have the milestone future to indicate that "we'll do it at some point." If we have no intention of doing it, it should not be in Bugzilla.

For each (upcoming) release there is a version-next, such as 0.4-next. This contains everything we want fixed in the 0.4.x series.

As we approach each release, we create a milestone for its version number (following the example above, the milestone would be 0.4.0). Any bug we really want fixed before we can finalize that release then has its milestone changed from 0.4-next to 0.4.0. Any bug that we are happy to release 0.4.0 with, but still want fixed within the lifespan of the 0.4.x series remains in 0.4-next. This process then gets repeated for every release.

Summary
  • 0.5.0 = really aiming to fix this in 0.5.0
  • 0.5.1 = really aiming to fix this 0.5.1
  • 0.5-next = aim to fix this at some point in the 0.5 series.

What should have a milestone

Bugs that we know how to fix, have a solid plan for resolving and have the resources to execute. Assigning everything to "0.4.0" when there's no way we can get it done will help no one.

It should remain a small list of high-priority tasks, such that developers can see what is important.

What bugs should I prioritize working on?

Anything tagged for the next release. In the case of the 0.4.0 milestone, then anything in 0.4-next, and finally anything in future.

Obviously, being free software, you're free to work on whatever the hell you want.

Naming policy

Main page: Naming Policy

Events

Testing

Getting started

Main page: KTp: Getting started

Before you start playing with or testing the latest KDE Telepathy, you need to have the latest version compiled and working.

Common questions

Main page: KTp FAQ

Reporting bugs

Report bugs at Bugzilla.

Packaging

Packaging KDE-Telepathy is complicated for two reasons:

  1. Due to the modular nature of Telepathy, there are several distinct components, each in separate Git repositories.
  2. There are large numbers of runtime inter-dependencies to worry about.

This page attempts to ease packaging KDE-Telepathy in a useful way by explaining these issues.

Upstream packages

Several upstream packages are essential for KDE-Telepathy to work. These are the ones encountered as dependencies in a normal compilation:

The IM networks that KDE-Telepathy can connect to are determined by which Telepathy Connection Managers are installed. These are runtime-only dependencies, but which ones are installed will decide what IM networks KDE-Telepathy supports. The following are the ones we recommend—whether they are installed optionally or required is, of course, up to you.

  • telepathy-gabble >= 0.13.7 (currently 0.18.4), for Jabber/XMPP support, including Google Talk and Facebook, might very probably crash with earlier versions
  • telepathy-haze for all the other protocols, as supported by libpurple
  • telepathy-farstream should be compiled before telepathy-qt for compilation of ktp-call-ui to proceed

KDE-Telepathy packages

The different components of KDE-Telepathy are housed in separate Git repositories on KDE Invent's Network group. Some of these components are currently recommended to use, while others are not yet ready to be installed by users.

Ready components

These components have reached a level of maturity where they are interesting to users. We recommend providing these components at the current time.

Name Description Dependencies
ktp-common-internals Internal library telepathy-qt
ktp-accounts-kcm Account management KCM ktp-common-internals
ktp-approver KDED module that shows a notification when somebody starts a chat with you ktp-common-internals
ktp-text-ui Text chat application ktp-common-internals
ktp-contact-list Contact list application – also provides icons and other data files that are shared among the other applications ktp-common-internals
ktp-kded-module Workspace integration module – provides several plugins like auto-away, the infamous 'Now listening to...' and also an error handler (important!!) ktp-common-internals
ktp-desktop-applets Plasma widgets – provides a presence applet which acts as the central system tray icon of traditional IM clients, a simplified contact list, an applet which represents a single contact and can be used to trigger actions like 'Send mail' and 'Initiate conversation', … ktp-common-internals
ktp-filetransfer-handler Background application for handling file transfers ktp-common-internals
ktp-auth-handler Background application for handling passwords and SSL/TLS certificates ktp-common-internals
ktp-send-file Dolphin/Konqueror context menu plugin for easily sending files to contacts ktp-common-internals
ktp-filetransfer-handler (at runtime)
ktp-call-ui Voice and video chat with contacts ktp-common-internals
ktp-contact-runner Show contacts in KRunner ktp-common-internals
telepathy-logger-qt Provides support for loading saved message logs ktp-common-internals
telepathy-logger
QtGLib (from QtGStreamer)

Experimental components

Several other components are under development, however unless they are listed above, we do not recommend packaging them yet. This is because they are subject to major changes/removal at any time, and are not ready for end users.

Note about accounts-kcm-plugins

Our 0.1.0 release had an extra package called telepathy-kde-accounts-kcm-plugins. These plugins have now been merged into the main telepathy-kde-accounts-kcm package and are no longer shipped separately.

Release tarballs

The latest release is 0.9.0. Tarballs can be found at the KDE FTP mirrors.

Distributions

Here is a list of known packaging efforts for various distributions. If you are also doing packages for a distribution, please add your information here.

Distro Packager Links
Debian George Kiagiadakis https://salsa.debian.org/qt-kde-team/kde/meta-kde-telepathy
Ubuntu Michał Zając Source: https://code.launchpad.net/ubuntu/+source/meta-kde-telepathy

Binaries (stable): https://launchpad.net/~telepathy-kde/+archive/ubuntu/ppa
Binaries (latest): https://launchpad.net/~telepathy-kde/+archive/ubuntu/daily-builds

openSUSE The openSUSE Community https://en.opensuse.org/KDE_Telepathy
Arch Linux Andrea Scarpino (ilpianista) https://archlinux.org/packages/?q=telepathy
Gentoo KDE Project https://packages.gentoo.org/packages/kde-apps/plasma-telepathy-meta
FreeBSD Alberto Villa (avilla) https://www.freshports.org/net-im/kde-telepathy/
Fedora Jan Grulich (jgrulich) https://src.fedoraproject.org/rpms/telepathy-accounts-signon

See also

Index of KDE Community Wiki pages about Telepathy