close
  • chevron_right

    Adrien Plazas: My Name is Handy, Lib Handy

    debacle – 3 days ago - 11:16

Btw. libhandy is also used by chatty, the Librem 5 SMS & XMPP application.


  • share chevron-right

    Adrien Plazas: My Name is Handy, Lib Handy

    Libhandy 0.0.7 just got released! I didn't blog about this mobile and adaptive oriented GTK widget library since the release of its 0.0.4 version three months ago, so let's catch up on what has been added since. List Rows A common pattern in GNOME applications is lists, which are typically implemented via GtkListBox. More specific patterns arose, where rows have a title at the start, an optional subtitle below it, actions at the end and an icon or some other widget like a radio button as a prefix. These rows can also be expanded to reveal nested rows or anything else that fits the need. So far every application using these patterns implemented the rows by hand for each and every row. It made using these a bit cumbersome and it led to inconsistencies in sizing, even inside a single application. To make these patterns easier to use, we implemented HdyActionRow, HdyComboRow and HdyExpanderRow. HdyActionRow The action row is a simple and flexible row, it lets you give it a title, a subtitle, an icon name, action widgets at its end, prefix widgets at its start and other widgets below it. It takes care of the base layout of the row while giving you control over what to do with it. HdyComboRow The combo row lets the user pick a single value from a list model, it is quite convenient to use as you can even set it for an enumeration GType. HdyExpanderRow The expander row allows you to reveal a widget below the row, like a nested list of options. It lets you optionnaly have a switch triggering whether it is possible to expand the row to access the nested widget or not. Adaptive Dialog HdyDialog is a dialog which behaves like a regular GtkDialog on normal conditions, but which automatically adapt its size to the one of its parent window and replace its window decorations by a back button if that parent window is small, e.g. if it is used on a phone. This will mean that HdyDialog will act like a regular dialog on form factors like a desktop, a laptop or a tablet, but it will act like another view of the main window if it is used on a phone or on a really narrow window. HdyDialog has been written by Zander Brown, thanks a lot! Adaptive Search Bar HdySearchBar is a reimplementation of GtkSearchBar that allows the search entry to be expanded to take all the available space up. This allows for an expanded HdyColumn between the search entry and the search bar, allowing to automatically adapt the width allocated to the search entry to the one allocated to the bar. GtkSearchBar from GTK 4 already handles that correctly so HdySearchBar will not be ported to GTK 4. Internationalization Libhandy now supports internationalization, there are no end-user-facing strings but developer-facing strings like property descriptions can now be localized. Initialization The `hdy_init()` function has been added, it will initialize the internationalization, the types, and the resources, ensuring Libhandy will work in any context. Annotation of Symbols Introduction We started annotating when symbols were added to the API, which will better explain to you via the documentation what is available with your current Libhandy version and which version of Libhandy you should require to use a specific feature. glade_catalog and introspection Options The glade_catalog and introspection options have been turned from booleans into features, that means that we broke the build system's interface as true and false are not valid values anymore and should be replaced by enabled, disabled or auto. Their default value is auto which means that if you don't care about the availability of these features, you don't have to care about these options anymore. Making Libhandy Static The static boolean option have been added to allow Libhandy to be built as a static library. Note that the introspection and the Glade catalog can't be built when building Libhandy as a static library. Bundle Libhandy in a Flatpak Manifest To bundle the master version of Libhandy in your Flatpak manifest, simply add the following module: { "name" : "libhandy", "buildsystem" : "meson", "builddir" : true, "config-opts": [ "-Dexamples=false", "-Dtests=false" ], "sources" : [ { "type" : "git", "url" : "https://source.puri.sm/Librem5/libhandy.git" } ]} Bundle Libhandy as a Meson Subproject To use Libhandy 0.0.7 as a Meson subproject, first add Libhandy as a git submodule: git submodule add https://source.puri.sm/Librem5/libhandy.git subprojects/libhandycd subprojects/libhandygit checkout v0.0.7 # Or any version of your choice.cd ../..git add subprojects/libhandy Then add this to your Meson build system (adapt the package sub-directory name to your needs): libhandy_dep = dependency('libhandy-0.0', version: '>= 0.0.7', required: false)if not libhandy_dep.found() libhandy = subproject( 'libhandy', install: false, default_options: [ 'examples=false', 'package_subdir=my-project-name', 'tests=false', ] ) libhandy_dep = libhandy.get_variable('libhandy_dep')endif If you don't require introspection and you don't care about localization, you can alternatively build it as a static library: libhandy_dep = dependency('libhandy-0.0', version: '>= 0.0.7', required: false)if not libhandy_dep.found() libhandy = subproject( 'libhandy', install: false, default_options: [ 'examples=false', 'static=true', 'tests=false', ] ) libhandy_dep = libhandy.get_variable('libhandy_dep')endif Librem 5 DevKits As a sidenote: the Librem 5 devkits shipped at the very end of 2018, here are photos of mine! I'm eager to play with Libhandy on it.

    group_work PlanetGnome 4 days ago - 22:30

  • chevron_right

    Dennis Schubert: ActivityPub - Final thoughts, one year later.

    debacle – Sunday, 13 January - 22:46 edit

Dennis Schubert: ActivityPub - Final thoughts, one year later.

Maybe Diaspora could be re-implemented using XMPP? :-)

I would like to hold XMPP up as an example, here. If you do not know XMPP, it is short for Extensible Messaging and Presence Protocol, a protocol for building distributed instant messaging applications. While extensibility was so important they even made it part of the protocol’s name, they did not want to end up with a runaway specification that depends on having implementers talk to each other to be working reliably.

Instead, they wrote a very strict base set of the absolute minimums required to build on XMPP, and pushed that through the IETF’s standards track, ending up with what is now RFC 6120. Acknowledging that they can never address all needs in such a strict specification document, they opened themselves for more flexibility:

This document specifies how clients connect to servers and specifies the basic semantics of XML stanzas. However, this document does not define the “payloads” of the XML stanzas that might be exchanged once a connection is successfully established; instead, those payloads are defined by various XMPP extensions. For example, [XMPP-IM] defines extensions for basic instant messaging and presence functionality. In addition, various specifications produced in the XSF’s XEP series [XEP-0001] define extensions for a wide range of applications.

They introduced XEPs, XMPP Extensions Protocols. The very first XEP ever published, XEP-0001, describes the process of getting a new XEP published to the world, and that process of that is not very hard to understand or tricky to follow. Everyone is invited to submit a proposal, you do not have to be a member of any organization, and in fact, you do not even need to maintain your own implementation. As long as your proposal follows the rules and matches the required format, it will be taken into consideration. After a proposal has been made, there is a specific chain of events, but it boils down to an open discussion on those proposals, and if there are no more doubts or things to improve, and if people agree that the proposal would be a useful thing to standardize, the proposal will eventually end up as an actual XEP.

At the time of writing, there are 151 active, draft, experimental, final, or proposed XEPs, and all of them can be found on the XMPP Standards Foundation’s website. Everyone interested in reading up on those topics, for example because they want to implement a client or a server, can find those documents there, and there is also a central infrastructure for asking questions and proposing improvements, which is open to everyone. This way, the XSF has ensured XMPP can be extended to all imaginable use cases, without ending up with watered-down or vague specifications.

If, for example, I wanted to implement an XMPP server or a client4, I could read the relevant RFCs as well as the XEPs that are relevant to my project. Some documents, like XEP-0387 for example, would even help me out deciding which XEPs are essential, by listing the things that are important when building a web client, or an advanced desktop client, or a mobile application, … There would be no need for me to talk to other XMPP server or client implementers for my implementation to work, and I could be very comfortable about the interoperability of my systems if I built them in accordance to the specifications. That is what specifications are meant to be.

#activitypub #diaspora #standards #xmpp #movim #salutatoi #xep

  • favorite

    1 Like

    Timothée Jaussoin

  • chevron_right

    Constanze Kurz: "Professionell haben die nicht agiert"

    debacle – Friday, 4 January - 23:29

Constanze Kurz: "Professionell haben die nicht agiert"

Frau Kurz, was bedeutet dieser Angriff, dieser Cyberangriff für die Gesellschaft?Constanze Kurz: Ich glaube, man muss nicht unbedingt von einem Hack reden. Ich würde nicht davon ausgehen, dass wir es hier mit professionellen Hacker-Truppen zu tun haben. Hier hat jemand über eine längere Zeit Daten zusammengeklaubt und versucht, Passwörter zu erbeuten.

Bitte auch den Rest lesen. Lohnt sich.

#ccc #rbb #constanzekurz #chaoscomputerclub #politik #security #deutscherbundestag #cybercrime #gamergate #afd #netzpolitik

  • chevron_right

    Happy Birthday, XMPP! 20th Anniversary of 1st Jabber Server

    debacle – Thursday, 3 January - 21:37 edit

XMPP a.k.a. Jabber, a communication protocol for message-oriented middleware is probably the most mature technology for free and federated instant messaging. (IRC is far older, of course.) On 2019-01-04 we can celebrate the 20th anniversary of the first XMPP server release:

Jeremie Miller began working on the Jabber technology in 1998 and released the first version of the jabberd server on January 4, 1999.

In the last twenty years, we have seen protocols and services come and go, but XMPP, an IETF standard, is here to stay. It is backed by an international community of developers, does not depend on a single company, and is enhanced continuously by the XSF. Btw.: XMPP is not only used for chatting, but also for IoT, WebRTC, micro-blogging and social networks!

#xmpp #jabber #birthday #anniversary #jeremiemiller #federation

PS: ‎Ge0rG‎ pointed to the link to the original announcement on Slashdot. It reads:

Jeremie writes

"Jabber is a new project I recently started to create a complete open-source platform for Instant Messaging with transparent communication to other IM systems(ICQ, AIM, etc). Most of the initial design and protocol work is done, as well as a working server and a few test clients."

  • favorite

    3 Like

    Simon Pepping , Timothée Jaussoin , Dominik George

  • chevron_right

    Happy Public Domain Day 2019!

    debacle – Tuesday, 1 January - 15:39 edit

Happy Public Domain Day 2019!

For the first time in over 20 years, on January 1, 2019, published works will enter the US public domain. Works from 1923 will be free for all to use and build upon, without permission or fee. They include dramatic films such as The Ten Commandments, and comedies featuring Charlie Chaplin, Buster Keaton, and Harold Lloyd. There are literary works by Robert Frost, Aldous Huxley, and Edith Wharton, the “Charleston” song, and more. And remember, this has not happened for over 20 years. Why? Works from 1923 were set to go into the public domain in 1999, after a 75-year copyright term. But in 1998 Congress hit a two-decade pause button and extended their copyright term for 20 years, giving works published between 1923 and 1977 an expanded term of 95 years.

But now the drought is over. How will people celebrate this trove of cultural material? Google Books will offer the full text of books from that year, instead of showing only snippet views or authorized previews. The Internet Archive will add books, movies, music, and more to its online library. Community theaters are planning screenings of the films. Students will be free to adapt and publicly perform the music. Because these works are in the public domain, anyone can make them available, where you can rediscover and enjoy them. (Empirical studies have shown that public domain books are less expensive, available in more editions and formats, and more likely to be in print—see here, here, and here.) In addition, the expiration of copyright means that you’re free to use these materials, for education, for research, or for creative endeavors—whether it’s translating the books, making your own versions of the films, or building new music based on old classics.

Here are some of the works that will be entering the public domain in 2019. A fuller (but still partial) listing of over a thousand works that we have researched can be found here.

#publicdomain #publicdomainday #freeculture #cspd

  • favorite

    2 Like

    error , Simon Pepping

  • chevron_right

    Movim 0.14 now in Debian unstable

    debacle – Sunday, 2 December - 17:09

How cool is that?

Now there is a very good chance, that Movim will be part of the next release, Debian 10 "buster".

Thanks, Dominik, Edhelas and everybody else working on this!

#debian #movim #xmpp #federation #freesoftware

  • favorite

    4 Like

    Timothée Jaussoin , Dominik George , error , Thomas

  • chevron_right

    Things I don't like with OMEMO as it is today

    debacle – Tuesday, 13 November - 19:21 edit

I use OMEMO every day, because I prefer end-to-end encrypted messaging for many purposes. OMEMO is much better than OTR, and it works well enough to be useful. But OMEMO has a number of usability issues, that should be addressed by the IM and XMPP community at some point.

  1. It relates to devices instead of users. I don't want to know, whether my contacts own a new device, nor should they care when I do.
  2. Forward secrecy is a good thing for TLS. But when used for messaging, I cannot decrypt my old messages stored on the server in all cases. Also, it makes key escrow impossible, which is a killer for using it in business.
  3. Deniability. I want verifiable signatures instead. Maybe I want to conclude a contract via XMPP? For deniability I would use an anonymous account in the first place.
  4. OMEMO does not encrypt the complete stanza, but only the textual part of a message.
  5. It does not work with local, serverless messaging. I don't use this feature a lot, but still, encryption should work with it, too.
  6. OMEMO seems to be pretty complex, which makes implementation relatively hard. In fact, bugs related to OMEMO are still frequent in some clients.
  7. I already have an OpenPGP key, that is trusted (and occasionally signed) by many. Why not re-use it for IM purposes?

Some of the points can be addressed in later OMEMO versions, but some points seem to be woven into the fabric. Fortunately, I see the light at the end of the tunnel (and I hope it is not the oncoming train): OX or "OpenPGP for XMPP". I hope, that it will heal all my OMEMO aches:

https://xmpp.org/extensions/xep-0373.html

https://xmpp.org/extensions/xep-0374.html

The only thing, I do not like is synchronising of encrypted private keys using PEP, which involves storing it on the server, only secured by the PGP passphrase and the "backup code", generated by the device. But nobody forces me to use the backup feature and I assume, that it can be blocked by admins who feel uneasy about it. Also, OpenPGP seems to have a higher per message overhead than OMEMO. This is probably unavoidable.

Edit: Correction about OX private key encryption, thanks to lovetox!

Edit: Add point about OMEMO complexity and errors, thanks to Holger!

#omemo #xmpp #im #ox #openpgp #e2ee

  • favorite

    1 Like

    Timothée Jaussoin