Sunday, August 25, 2013

Collaborative text editing in KTextEditor and kde-telepathy: Preview release

We have decided that kte-collaborative (the "Collaborative text editing in KTextEditor via kde-telepathy" project -- see previous) is ready for a first release! This release is explicitly flagged as "preview" and might not be suitable for daily use just yet. There are still some known problems; the release is meant as an invitation to curious users to test the program and tell us about any problems they encounter.

Release tarballs:
You might want to use the heads of the 0.5 and 0.1 git branches of libqinfinity and kte-collaborative instead to profit from the latest fixes made after the release tagging.

Intention of the release

The goal of this release is getting interested users to test the program, in order to get some feedback on what areas work well already, and what areas we need to concentrate on improving next. There are almost four weeks left of the time intended for working on GSoC projects -- well enough to do all the polishing and bug fixing tasks which will surely come up.

What works

  • You can open documents from an existing infinote server and edit them, in at least kate, kwrite, kile, and KDevelop.
  • You can browse documents in dolphin and also copy one or more documents to the server there.
  • You can save any document to the server to have it shared in the same way.
  • You can select Jabber contacts which have the program installed too and edit documents with them without any (network) setup required, except for having your Jabber account set up in Telepathy.
  • This also works for Jabber chatrooms.
  • Such a connection, once established, can be used to share an arbitrary amount of documents, simply by using Collaborative -- Share document, and selecting the existing connection.
Sharing a document with a contact will automatically ask that contact what to do, after he approved the request.

Known issues

The following issues are known and you don't need to report them as bugs or wishes.
  • Wide unicode characters are not supported. It's an easy fix but I didn't yet get around to do it.
  • Gabble (the library dealing with Jabber in the background) sometimes hits some very high timeout values when establishing connections. This means that randomly, it might take several minutes to connect. This will have to be fixed in Gabble.
  • In case the data is proxied over the jabber server (in-band bytestream), as it is currently frequently the case unless you're using the program in a local network, there might be constraints on how many messages you're allowed to send in a certain time interval. Unfortunately, against the recommendation in the in-band bytestream XEP, gabble will disconnect the bytestream when you hit that limit (instead of waiting a moment and trying again). Thus, typing quickly for a while can disconnect you and you'll have to manually reconnect.
  • There is no automatic reloading of folder views when files are added by other users. You'll have to press F5 to reload the view.
  • For the same reason, once a connection is established there are no notifications to a remote user that further documents have been added.

Installation Instructions

To get this cool stuff running on your computer, you might do the following:
  • Install kde-telepathy from your distribution's repositories and configure your Jabber account, if you haven't done so already. There's usually a package called kde-telepathy-meta or similar.
  • Install libinfinity and infinoted, if the latter is a separate package in your distribution
  • Get and install (please with -DCMAKE_BUILD_TYPE=debug!) libqinfinity from: git clone git://anongit.kde.org/libqinfinity; git checkout 0.5
  • Get and install (please with -DCMAKE_BUILD_TYPE=debug!) kte-collaborative from git clone git://anongit.kde.org/kte-collaborative; git checkout 0.1
  • Run kbuildsycoca, and restart mission-control-5, telepathy-gabble, dbus, and kate (if running). The easier and more reliable way is to restart your computer.
  • In any application using XMLGUI and katepart, e.g. kate or KDevelop, you should now have a "Collaborative" menu with various useful actions.

Troubleshooting

  • There is no "Collaborative" menu. The KTextEditor plugin is not loaded. Go to Settings -- Configure Editor -- Extensions, and verify that "Collaborative text editing" is listed and checked.
  • The "Share with contact" dialog lists none of my Jabber contacts. The application can determine in advance which of your contacts support the collaborative editing service, so we only list those which claim to support it. The dialog being empty means none of your contacts has the program installed -- get someone to install it!
  • The program crashes. That's a bug. Please report it here. Potentially useful information to attach to bug reports: Full backtrace in case of crashes, debug output from the editor (enable all collaborative-related debug areas in kdebugdialog), relevant parts of the contents in the "Gabble" tab in ktp-debugger.

6 comments:

  1. First of all thanks for keeping us users posted about your work. And for greatly improving the experience of end-users of course.

    I'd recommend though, to add more context into questions in dialog boxes. If we take your screenshot for example, 5 options are presented but it is not possible to judge the effect of choosing a certain option. In addition to the program names, a sentence should be added that explains when an option is desirable. Personally, I've never heard of Gobby so I had no idea what happens when I opt for it.
    It would be great too, to explain where the default can be edited after closing the popup as it seems a global setting will be stored.

    ReplyDelete
    Replies
    1. Hmm, yes, that might be a good idea. The intention is that the user just selects the application he knows, or just clicks continue, and forgets about it. The option can easily be changed in the really tiny settings module we have, which is accessible from the menu.

      Thanks for the tip!

      Delete
  2. Now, it would be nice to fix libqinfinity master (didn't check if these issues are also in the released tarball yet). the opensuse code checker doesn't like a couple things:

    [ 102s] I: Program is using uninitialized variables.
    [ 102s] Note the difference between "is used" and "may be used"
    [ 102s] W: libqinfinity3 uninitialized-variable /home/abuild/rpmbuild/BUILD/libqinfinity-0.5git.1377197067/libqinfinity/qtio.cpp:359
    [ 102s]
    [ 102s] I: Program returns random data in a function
    [ 102s] E: libqinfinity3 no-return-in-nonvoid-function /home/abuild/rpmbuild/BUILD/libqinfinity-0.5git.1377197067/libqinfinity/browsermodel.cpp:371

    ReplyDelete
    Replies
    1. Wow, the first one is a good find! That is really total nonsense code and might be related to crashes I have experienced there. Thanks!

      Delete
  3. Hi, I'm also having trouble compiling libqinfinity in Mint with some of its variables. I don't know if any extra package is needed or why can this happen:

    -------

    -- Could NOT find GLIB2 (missing: GLIB2_LIBRARIES GLIB2_MAIN_INCLUDE_DIR)
    -- Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE)
    -- Could NOT find GObject
    -- Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE)
    -- Could NOT find GSASL
    -- Found Qt-Version 4.8.3 (using /usr/bin/qmake)
    CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
    Please set them or make sure they are set and tested correctly in the CMake files:
    GLIB2_MAIN_INCLUDE_DIR
    used as include directory in directory /home/ander/workspace/libqinfinity/libqinfinity
    GOBJECT_INCLUDE_DIR (ADVANCED)
    used as include directory in directory /home/ander/workspace/libqinfinity/libqinfinity
    GSASL_INCLUDE_DIR (ADVANCED)
    used as include directory in directory /home/ander/workspace/libqinfinity/libqinfinity
    LIBINFINITY_INCLUDES
    used as include directory in directory /home/ander/workspace/libqinfinity/libqinfinity
    LIBINFINITY_LIBRARY
    linked by target "qinfinity" in directory /home/ander/workspace/libqinfinity/libqinfinity
    LIBINFTEXT_INCLUDES
    used as include directory in directory /home/ander/workspace/libqinfinity/libqinfinity
    LIBINFTEXT_LIBRARY
    linked by target "qinfinity" in directory /home/ander/workspace/libqinfinity/libqinfinity
    LIBXML2_INCLUDE_DIR
    used as include directory in directory /home/ander/workspace/libqinfinity/libqinfinity
    LIBXML2_LIBRARY
    linked by target "qinfinity" in directory /home/ander/workspace/libqinfinity/libqinfinity
    _GLibs (ADVANCED)
    linked by target "qinfinity" in directory /home/ander/workspace/libqinfinity/libqinfinity
    _GModuleLibs (ADVANCED)
    linked by target "qinfinity" in directory /home/ander/workspace/libqinfinity/libqinfinity
    _GObjectLibs (ADVANCED)
    linked by target "qinfinity" in directory /home/ander/workspace/libqinfinity/libqinfinity
    _GSASLLibs (ADVANCED)
    linked by target "qinfinity" in directory /home/ander/workspace/libqinfinity/libqinfinity
    _GThreadLibs (ADVANCED)
    linked by target "qinfinity" in directory /home/ander/workspace/libqinfinity/libqinfinity

    -- Configuring incomplete, errors occurred!

    -------

    Does anybody know how to fix this problem?

    ReplyDelete
    Replies
    1. This sounds like missing packages.
      Look for packages like
      libinfinity-dev
      glib-dev
      gsasl-dev
      or similar, maybe without the -dev.

      Greetings,
      Sven

      Delete