Re: [Ubuntu-phone] LP: #1260712 post-mortem and improving our processes

2013-12-14 Thread Kevin Krammer
On Saturday, 2013-12-14, 08:24:03, Thomas Voß wrote:
 On Sat, Dec 14, 2013 at 12:05 AM, Dimitri John Ledkov x...@ubuntu.com 
wrote:
  On 13 December 2013 22:25, Barry Warsaw ba...@ubuntu.com wrote:
  So, what steps can be taken to avoid such problems in the future, and
  what
  lessons were learned that might be of use across the project?
  
  dbus apis are hard, hence a few dbus apis are provided as
  shared-libraries (essentially generate client code and compile it into
  shared library).
  When looking at dbus api, as if it's a compiled generated shared
  library the ABI/API break is obvious and one typically renames the
  library package as per Debian policy.
 
 Seconded. Treating DBus as an implementation detail and not leaking it
 to customers of your service helps a lot in versioning access to your
 API/service. In addition, our tooling and packaging supports
 versioning on a library/symbol level quite nicely.

While it is of course nice to delegate version handling to the linker, it also 
makes writing those interface libraries the difficult task.

A client library like that needs to either hide the asynchronous nature of its 
D-Bus communication by providing a blocking interface or provide an 
asynchronous interface itself.

The former means that developers either have the choice of risking blocking 
their main thread or use a secondardy thread. Also makes it necessary to wait 
for the full roundtrip. See Xlib.

The second option splits into either using threads internally in the library, 
or providing hooks that the library user can call to drive the asynchronous 
IO.
Both make it non-trivial to use the library.

In the case of interal threads the developer needs to deal with getting 
callbacks in a different thread context.
In the case of hooks they need to find a way to either call them regularily or 
attach them to their event loop system.

libdbus is an example for the latter. A library that can be shared across 
different technology stacks but is also considered to complicated to be used 
by application developers directly.

In contrast, a D-Bus API is fully technology stack agnostic, mainly because it 
is a well defined protocol over socket.

Any client developer can use the most appropriate [1] integration technique 
for their chosen technology stack, e.g. event loop integrated (GDBus on GLib, 
QtDBus on Qt), threading (Java D-Bus bindings IIRC).

I am not involved in the development efforts here but having done lots of D-
Bus, application and bindings level, clients and services, my recommendation 
would be to discard the advantage of freedom of technology choice.

It might not be necessary right now, but given Ubuntu's recent change in main 
technology from GLib to Qt you can most likely appreciate not having to build 
wrappers upon wrappers but using native integration capabilities instead.

Cheers,
Kevin

[1] and usually most efficient, since data doesn't have to be transformed and 
copied that often. E.g. Mono and Java implement the wire protocol themselves 
to avoid coping into C types first and then again into their respective native 
types.
-- 
Kevin Krammer, KDE developer, xdg-utils developer
KDE user support, developer mentoring


signature.asc
Description: This is a digitally signed message part.
-- 
Mailing list: https://launchpad.net/~ubuntu-phone
Post to : ubuntu-phone@lists.launchpad.net
Unsubscribe : https://launchpad.net/~ubuntu-phone
More help   : https://help.launchpad.net/ListHelp


Re: [Ubuntu-phone] A video from the app purchase kickoff sprint

2013-12-06 Thread Kevin Krammer
On Friday, 2013-12-06, 17:27:31, Martin Albisetti wrote:
 On Fri, Dec 6, 2013 at 4:10 PM, Зонов Роман roman2...@yandex.ru wrote:
  Firstly, I think, that we must stop use WebView when we buy an
  application. We must have fully native interface. I'm talking about
  desktop too.
 Very dynamic pieces of the system like payments and authentication are
 going to move over to be webviews, because there is going to be a lot
 of changes in currencies, payment methods, authentication layers (2
 factor authentication, captchas, etc), and experience has shown us
 that shipping that UI in the client as native is always inadequate in
 the short term.

Well, that would only be the case if the native UI was fixed at build time or 
needed to be installed.
Assuming native UI here still means QML then there is no such restriction. 

The choice to go with an HTML based interface instead was most likely made to 
also allow purchase through normal web browsers.

A valid reason, but has nothing to do with dynamic UI :)

Cheers,
Kevin

-- 
Kevin Krammer, KDE developer, xdg-utils developer
KDE user support, developer mentoring


signature.asc
Description: This is a digitally signed message part.
-- 
Mailing list: https://launchpad.net/~ubuntu-phone
Post to : ubuntu-phone@lists.launchpad.net
Unsubscribe : https://launchpad.net/~ubuntu-phone
More help   : https://help.launchpad.net/ListHelp


Re: [Ubuntu-phone] QProcess, and a QML/JavaScript only alternative?

2013-11-30 Thread Kevin Krammer
On Tuesday, 2013-11-26, 07:11:17, Israel wrote:
 On 11/26/2013 02:50 AM, Michael Zanetti wrote:
  On Monday 25 November 2013 18:58:45 Israel wrote:
  Is there work going on to integrate something like QProcess into
  QML/JavaScript.  I'd really like to run some external programs (festival
  for one, and to make a few nice configuration programs for the
  in-process LXQt version of Lubuntu) as I'd rather the program be
  smaller, as both phone and Lubuntu generally want smaller programs,
  rather than full-on C++ code (if avoidable)
  
  I don't think that's true.
 
 Not sure what you mean with that?  Are you saying you don't think
 QML/JavaScript is lighter?  If so I understand, C++ probably compiles to
 be lighter, but my thinking is that JavaScript runs in a browser, so if
 I can make my code one line, instead of including main.cpp, qprocess.cpp
 qprocess.h it will be lighter (smaller?).  I suppose this is not
 accurate, just seems like it would be slightly smaller.

In neither case you would include qprocess.cpp in your program, it's code is 
already part of libQtCore.

In both cases you have an application that links with Qt, perhaps loading 
parts of it as plugins.

Naturally using QML, in this case for UI, will have additional overhead, at 
least memory wise.
If the UI component technology used with QML is QtQuick2 then this is the only 
option [1] so also no difference.

A package containing just QML and script code might be smaller in download/on-
disk size though, assuming the runtime and all plugins are already present.

Cheers,
Kevin

[1] QtQuick2 cannot be used without QML. Other UI component technologies,  
e.g. QtWidgets or BB10/Cascades, can be used with C++ or QML.
-- 
Kevin Krammer, KDE developer, xdg-utils developer
KDE user support, developer mentoring


signature.asc
Description: This is a digitally signed message part.
-- 
Mailing list: https://launchpad.net/~ubuntu-phone
Post to : ubuntu-phone@lists.launchpad.net
Unsubscribe : https://launchpad.net/~ubuntu-phone
More help   : https://help.launchpad.net/ListHelp


Re: [Ubuntu-phone] Ebook reader?

2013-05-21 Thread Kevin Krammer
On Monday, 2013-05-20, Stuart Langridge wrote:
 On Sat 18 May 2013 18:41:34 BST, Kevin Krammer wrote:
  On Friday, 2013-05-17, Stuart Langridge wrote:
  It is somewhere in between impossible and very nearly impossible to
  write a book reader in pure QML for Ubuntu Touch right now, sadly.
  
  Well, QtQuick (assuming you wanted to refer to that UI framework when you
  wrote QML) is a UI framework, not a data processing or application
  framework. Those pieces are supplied by C++ code just like QtQuick
  itself being implemented in C++.
 
 Speaking purely for myself here, I don't agree with this. I know that a
 lot of experienced long-time Qt programmers think that apps should be
 written in C++ with Qt Quick solely as a presentation layer, but I
 personally believe that the more it can be possible to write apps using
 QML and JavaScript alone, with no compilation step or C++ requires, the
 more it becomes possible to engage developers in building for the
 platform.

I see your point but I was specifically addressing QtQuick which is solely a 
presentation layer, not QML generically.
However, QtQuick as one of the available type sets for QML shows that certain 
things are best implemented in C++, exposed to the QML scene as ready-to-use 
building blocks.

The more type sets you have available as part of the platform, the less often 
application developers will have to create their own. In this case my 
impression was that there are currently not components for rendering certain 
type of documents, neither into a QtQuick element nor into a buffer.

One important thing to keep in mind is that the JavaScript parts of QML is not 
the same thing as JavaScript for Qt scripting, i.e. focused on the needs of 
QML. While it is currently using V8, a very capable and extensive engine, 
there are considerations to create a custom egine, codenamed V4, that is 
reduced to work for the QML use case but does not incur the problems V8 and 
other full engines have, e.g. not allowed on restricted platforms like iOS.

 I certainly acknowledge that that's not entirely possible
 right now, that there will always be a space for C++ plugins, and that
 the platform should probably not grow to encompass all things! However,
 I'd like to see Qt Quick, and the Ubuntu SDK, extend more capability
 than it currently does to JavaScript programmers. The web is working
 out the same way: using HTML and JavaScript as a presentation layer
 only certainly works, but more and more capability is extended to
 programmers in those environments without having to fall back on a more
 capable environment server-side.

True, but in the case of HTML/JavaScript the browsers provide a closed system 
that is not really expandable by anyone than the browser vendor so they need 
to provide the option of adding functionality otherwise. Henvce their strive 
to provide better and better JS engines, even if that means not being able to 
provide the browser for certain locked down platforms.

Qt, as a framework that others build upon cannot as easily afford to pass on 
those platforms but since it provides other means of extending the provided 
features set it can compromise in scripting capability and there have been 
hints that they are at least investigating into that direction.

 like that with Qt Quick; what's preventing that is not a large
 technical chasm between the two, but a few trivial items such as QML's
 XMLHttpRequest not supporting some of the XMLHttpRequest v2 API that
 deals with binary data. As Kevin says here, one way to do this is to
 put most of the logic of an ebook app in C++ and compile for each
 platform, and that's indeed what I suggested in my original mail... but
 I'd love to see the final few tweaks happen to allow an app such as an
 ebook reader to be writeable without compiling anything, in the same
 way that a good proportion of the already existing Ubuntu Touch apps
 are also pure Qt Quick.

Sure, the very core concept of QML is to be agnostic of where the types 
developer can use come from. Whether the types are registered by the 
application startup code, by the application package or the platform doesn't 
matter.

So if registered by the application startup code is undesired, i.e. the 
application should be started by a generic runner, then this still leaves 
the last two options.

Cheers,
Kevin
-- 
Kevin Krammer, KDE developer, xdg-utils developer
KDE user support, developer mentoring


signature.asc
Description: This is a digitally signed message part.
-- 
Mailing list: https://launchpad.net/~ubuntu-phone
Post to : ubuntu-phone@lists.launchpad.net
Unsubscribe : https://launchpad.net/~ubuntu-phone
More help   : https://help.launchpad.net/ListHelp


Re: [Ubuntu-phone] shared library packages and dependencies on mobile

2013-05-16 Thread Kevin Krammer
On Tuesday, 2013-05-14, Ted Gould wrote:
 We expect that applications that need sophisticated dependency schemes
 will include those dependencies in their own packages.  There will be a
 base image that everyone can depend on, but beyond that, you'll need to
 BYOD (bring your own dependency).

Will there be any support for vendors with more than one application?
E.g. vendors that have application suites and want to be able to share the 
components between the suites applications?

Cheers,
Kevin
-- 
Kevin Krammer, KDE developer, xdg-utils developer
KDE user support, developer mentoring


signature.asc
Description: This is a digitally signed message part.
-- 
Mailing list: https://launchpad.net/~ubuntu-phone
Post to : ubuntu-phone@lists.launchpad.net
Unsubscribe : https://launchpad.net/~ubuntu-phone
More help   : https://help.launchpad.net/ListHelp


[Ubuntu-phone] Some info regarding Akonadi

2013-03-22 Thread Kevin Krammer
Hi folks!

A friend pointed me to your recent discussion on Akonadi and I thought you 
would like to have some contact who you could ask any questions you might 
have.

Since I have just subscribed I cannot direclty reply to the original mail.

Client libraries:
Currenly the only actively used client library for Akonadi is the one 
developed by the KDE PIM project developers.

One of those developers, Stephen Kelly, has created a Pyton based 
implementation to demonstrate the technologies viability across software 
stacks:

git://gitorious.org/python-twisted-akonadi/python-twisted-akonadi.git
http://steveire.wordpress.com/2009/10/13/cross-platform-akonadi-video/

Basically the only requirement is to be able to handle a Unix domain socket.
I have a proof of concept implementation in Vala lying around on my harddisk 
somewhere and recently for fun experimented doing it with NodeJS.

The KDE based stack consists of several libraries, some of which contain low 
level code, some containing widgets or model/view classes, some for generic 
data, some for specialized data (such as contacts, calendar, email).

Some protocol bits are shared with the server side implementation and have no 
dependency on any other library developed by KDE.

KDE contact aggregation:
similar to Folks the metacontact libs are primarily driven by people from the 
instant messaging community.
The respective project is called KPeople.:
http://www.mail-archive.com/kde-telepathy@kde.org/msg06970.html

If you have any further questions just let me know. If I don't know the 
answers myself I will find people who do :)

Cheers,
Kevin
-- 
Kevin Krammer, KDE developer, xdg-utils developer
KDE user support, developer mentoring


signature.asc
Description: This is a digitally signed message part.
-- 
Mailing list: https://launchpad.net/~ubuntu-phone
Post to : ubuntu-phone@lists.launchpad.net
Unsubscribe : https://launchpad.net/~ubuntu-phone
More help   : https://help.launchpad.net/ListHelp