Skip to content

Tuesday, 14 June 2022

Featured image of post Kalendar Contact Book - Current Progress

During my long train trip to the Linux App Summit 2022, I started working on a contact book feature in Kalendar. There was already a small contact integration in the event editor to select attendees for an event and I wanted to extend it with a simple contact info viewer and editor.

When I started it, I was full of hope that this would be a simple task and would be easy to finish. Unfortunately more than one month later, it’s not finished but there is a lot of progress that I can already show off.

The Contact View

The contact view is the most immediate visual change that users will notice when starting Kalendar. It’s a new view available in the sidebar and it will display all your contacts synchornized with Kalendar. It’s also feature a search field, to easily find a contact very helpful when you have many hundreds contats.

The contact view showing a few contacts
The contact view showing a few contacts

Currently not all the properties that an vcard can contains are displayed, but it is easy to add more of them later on.

Internally, the contact view uses an Akonadi::ItemMonitor so that the changes to the contact are immediately reflected in the view, even if the changes happened in KAddressBook or were synced in the background from an online service.

Contact Book Settings

Kalendar has access to the same sources as KAddressBook with for example WebDav (e.g. Nextcloud), Etesync, Microsoft Exchange Server and local vCard files.

The Google contact provider is still broken due to a massive API change in Google API. It’s a good reminder that open standards are better for the users and the developers sanity.

Contact book source settings
Contact book source settings

QR Code Sharing

From the contact view, it is also possible generate a QR code. This makes it easy to share one contact to your phone. If you want to shares and synchronize multiples contacts, it’s better to use a CardDav-based solution like Nextcloud.

QR code sharing
QR code sharing

Plasma Applet

After implementing the contact view, with Claudio we decided to try to keep the codebase for the calendar and contact support mostly seperated from each others. To to so we created a QML plugin that contains all the contact utility and that can simply be imported with import org.kde.kalendar.contact 1.0.

This code seperation helped us develop a Plasma applet integrated inside the system try for the contact book.

The applet provides an easy way to search for a contact and send them an email or start a call using KDE Connect.

Searching in the Plasma applet
Searching in the Plasma applet

An contact book Plasma applet
An contact book Plasma applet

It’s also possible to share with a QR code directly from the Plasma applet.

Contact Editor

The contact editor turned out more complicated than planned and is still missing a lot of features.

The contact editor
The contact editor

Currently, it only allows to edit the name, the phone numbers and emails of a contact. When editing the name you also have the choice to set each components of the name separately.

Advanced name options
Advanced name options

There is also handling for the case there the contact was edited in another Akonadi-powered editor (like KAddressBook), asking the user what to do when detecting multiple concurrent editing of the same contact.

Change detection
Change detection

Contact Group

Kalendar also has support for contact groups. This allows to create a group of contacts with an associated email address. It’s quite helpful when you want to often send mails to a group of contact.

Contact Group
Contact Group

You can also edit them, add more contacts and concurrent editing detection is also built-in the contact group editor.

Contact Group editing
Contact Group editing

Future

There is still a lot of features missings left to implement. For example, contact deletion, moving/copying a contact to another contact book but also a lot of contact properties need to be implemented in the contact book.

These features are relatively straigh forward to implement now that the base is here and if you want to help with the implementation, join our Matrix room. We would be happy to guide you.

Hopefully this will all be ready before the 22.08 release.

The Kalendar team is also working on another big component for Kalendar, stay tunned.

Hello, reader! I am Suhaas Joshi, a 20-year-old 3rd-year student at CHRIST University, India. I have been selected to GSoC 2022 as a mentee in KDE. This blog will track my KDE development work during, and after, GSoC coding period.

About the Project:

Flatpak and Snap applications run inside sandboxes, isolated from the rest of the system, and do not have access to many critical resources. As a result, they often cannot do much, and must seek permission to access the resources they require. Flatpaks access these permissions through “portals”, and Snaps do it via “interfaces”. At installation time, these permissions are usually granted by default. Presently, KDE lacks a home-grown mechanism to edit these permissions.

My SoK 2022 Project had two parts: the first was to display these permissions on Discover’s interface, and the second to develop a mechanism (through a KCM module, it was decided) to let users change these permissions. The first segment of the project was accomplished, but the second was leftover.

This GSoC project involves creating the KCM module for Flatpak, and also showing Snap permissions on Discover’s interface in the same way as Flatpaks, as well as creating KCM modules for Snaps.

So far, I have created the repository for Flatpak KCM here.

About Me:

I am a 20-year-old from India, currently pursuing a BTech at Computer Science and Engineering. I have been programming for about 2 years, chiefly in C++, C and Python. I use Fedora KDE as my daily driver, and have been a KDE user for a year. In my free time, I read books on history and politics, and have been getting into Chess lately.

Feel free to contact me if you have any suggestions!

Friday, 10 June 2022

Blog: 1 Week 0

“I can accept failure, everyone fails at something. But I can’t accept not trying.” ~Michael Jordan

Square One

There are so many things that we aspire to achieve in life, and when we do not get them, we are absolutely dejected. A person can take two paths as a consequence of failure; either to quit or, instead of getting disheartened, push harder.

When FOSS Overflow by IIT Bhilai, a nationwide open-source program in India, was about to end in January 2022, I was seeking new avenues in the world of Open Source just like a child mesmerized by some newly discovered activity. I googled “Open Source Programs” and the name of Season of KDE by KDE was amongst the top programs on Geeks for Geeks. I instantly tapped on the link, and the biggest glimmer of hope was that the applications for SOK 2022 were open. 

It was not the first time that I was endeavoring to create a proposal and I was confident because the rookie that I was, did not realize that it is not just the content of the proposal but also community engagement and past contributions that the organizations seek in an ideal

candidate.

Discovering GCompris

In the meantime, I also discovered that all the projects under SOK were absolutely challenging for me to begin with at that moment, yet I mustered the strength to at least make a submission. It has been my typical nature to be pushy. It was an “aha” moment when I read the description under the title “GCompris”. This is where the story begins. 

The process of first installing the application wised me up to believe that if I somehow learn how to develop these activities, I can definitely think of something interesting that can be incorporated into this product. It was like a whim, just as I mentioned, a childish fantasy, and it has been grooving me on since that day. 

The obstacles

However, building the project on my IDE took me over two weeks. It was the first task, and I was already feeling a little jittery. It felt like a setback in the beginning, but I was still determined to just make a submission. 

I always reaffirmed to myself that I can learn things here and that GCompris is worth the shot. I could build the project, but it took me so much time to just build the project that I was again doomed to self-doubt. Nonetheless, I continued.

I finally made a submission. suggested a few ideas and their chimerical implementation plans.

Fast forwarding the tidbit to the results day, I got a rejection mail from the community. It wasn’t very surprising to me, but it’s human nature to be crestfallen at such an edict. 

My learning

I got detailed feedback from the mentors, which helped me to realise my weaknesses. The biggest mistakes were that I was too hesitant and I didn’t reach out to the community mentors. The next important lesson was that it is important to discuss the plan of action before the real engineering jobs.

Gloom before the glow

I decided to continue to learn to contribute to GCompris irrespective of any program because I was confident that I could learn and make a significant contribution. I started again in March, and proposed my first activity called “The Comparator Activity” and I was not even looking to apply for GSoC because it is one of the most prestigious open source programs, and I used to think it would be some great deal of time before I would be able to make a proposal for GSoC competent enough to make it through the application process. My motivation was to learn, not to participate in GSoC. It spontaneously became a part of my contribution journey with GCompris.

The Community Support

After having done some parts of the activity with the help of my amazing mentors- Johnny, Allon, Harsh, and Deepak-I started enjoying contributing here. It impelled me to visualize my approach to implementation, the art of writing clean code, and the knack for writing modular code. One of the major reasons why I gravitated towards the GCompris community is that they support the contributors by helping us to build the intuition that helps us to become a good developer. I gradually started deriving inspiration from the mentors and emulating their approach in my actions.

 Summer of 2022 with KDE and Google

When the proposal submission deadline was coming closer, I realized that my end-of-semester examinations was overlapping, which made things slightly strenuous for me. However, by God’s grace, I prepared a decent proposal in a few weeks’ time and it got accepted.

What follows

I will be completing my Comparator Activity by adding new modes to it and starting the Programming Tux and Guess 24 from scratch. 

This journey has taught me so much and is going to be a once-in-a-lifetime experience that I’ll treasure forever. Thus, I am documenting my experience here. It may be still in its infancy, but it will grow and become something I will be proud of. I look forward to engaging with a global audience in the near future.

In the following blogs, I will provide an update on the design and implementation plans for the same. Stay tuned for more!

In case you missed it, Akademy is happening this year in Barcelona (and online) in October! That’s so soon!

Do you know what’s even sooner? Closing time for the Call for Participation!

Konqi giving a lecture on Akademy.

If you’re interested in sharing an interesting topic with the community, you still have until 12th of June 2022 23:59 UTC to submit your proposal.

As a hybrid event, this year’s Akademy will accept remote talks, but in person ones are preferred.

Don’t wait, check out the CfP page, and see you at Akademy!

Let’s go for my web review for the week 2022-23.


Why Complex Systems Collapse Faster - Tablet Magazine

Tags: complexity, philosophy, economics, politics, ecology, commons

An excellent piece about the links between collapse and complexity. Obviously focuses more on socio-economics systems. Still some of it applies to other fields.

https://www.tabletmag.com/sections/science/articles/why-complex-systems-collapse-faster


The collapse of complex software | Read the Tea Leaves

Tags: tech, architecture, complexity

Interesting view on the state of our industry regarding complexity. Don’t despair!

https://nolanlawson.com/2022/06/09/the-collapse-of-complex-software/


Fallacies of Distributed Systems

Tags: tech, architecture, microservices, networking, complexity

The current microservices obsession not only invite undue complexity in systems, it also bring unprepared developers into network related traps. This is a nice summary of the common misconceptions around this.

https://architecturenotes.co/fallacies-of-distributed-systems/


A New Definition of HTTP

Tags: tech, http

This is a good thing that the corresponding RFCs keeps being updated.

https://www.mnot.net/blog/2022/06/06/http-core


Introduction | sake

Tags: tech, self-hosting

Looks like an interesting tool to simply manage personal servers.

https://sakecli.com/


#NoEstimates (Allen Holub) - YouTube

Tags: tech, agile, estimates

Old video. A bit preachy, especially in the beginning, but then covers well the arguments of why counting stories is likely better than estimating them. In my opinion there’s a catch that is not covered here though: the quality and granularity of the stories matter.

https://m.youtube.com/watch?v=QVBlnCTu9Ms


Help Geeks Feel Safe In The World: My Personal Mission

Tags: work, life

Yet another inspiring piece by Kent Beck. I like his blunt honesty and self-reflection.

https://medium.com/@kentbeck_7670/help-geeks-feel-safe-in-the-world-my-personal-mission-a3968a94dff5


Lift Energy Storage System: Turning skyscrapers into gravity batteries

Tags: energy, gravity, physics, surprising

OK, this is clever and surprising. Still it is an interesting prospect. We’ll see how far this goes.

https://newatlas.com/energy/lift-energy-skyscraper-batteries/



Bye for now!

Welcome to the final instalment of the KDE Goals retrospective interviews.

Check out my interview with Aleix where we talk about the “KDE is All About the Apps” Goal and generally about the KDE Goals initiative. See it here:

Thank you Aleix for the interview, and also thank you Jonathan - the initial Goal Champion for the goal! You can follow Aleix on his twitter, also his website.

If you haven’t seen them yet, the previous two interviews available: Consistency and Wayland.

Next week: the process of submitting the Goals begins! Be sure to check back to learn all about it!

Hi!

This is my second post during Google Summer of Code 2022.

GSoC community bonding period ends tomorrow.

During this time, I have tried playing around with LibQuotient by writing simple C++ apps to show details from a user's account. (joined rooms, filtering out spaces etc)

On NeoChat, I tried adding UI element to show user's spaces, which certainly didn't go well. The ListView would not show a scroll bar, no matter what. I faced another setback when I realized the code didn't use setContext to control UI (thats the way I'm accustomed to doing it).

This week, Tobias helped me out with these technical things over a call. I'm trying to implement them.

With the actual coding period starting in 2 days, I hope to show up tangible work.

Sunday, 5 June 2022

Yesterday, the signing key of my OBS repositories has expired (I didn’t know they do). I have the validity extended now.

To fix errors with access to the repos, please download the updated key from OBS or direct from my website.

Friday, 3 June 2022

Let’s go for my web review for the week 2022-22.


8 reasons to ditch Chrome and switch to Firefox | PCWorld

Tags: tech, browser, privacy

Despite some flaws, I agree it remains the superior alternative.

https://www.pcworld.com/article/704687/8-reasons-to-ditch-chrome-and-switch-to-firefox.html


Programming in the Apocalypse

Tags: tech, programming, culture, low-tech

Good exercise of prospective for our field. I don’t subscribe to all the analyses in there but the value is in at least starting the conversation about it.

https://matduggan.com/programming-in-the/


Expert Talk: Managing Complexity in Software • Hadi Hariri & Kevlin Henney • GOTO 2022 - YouTube

Tags: tech, architecture, complexity

Interesting conversation around complexity in code bases. I especially like the point about imagination getting out of control and getting us into speculation. This is indeed often a reason for unwarranted complexity. That’s why you need to always keep the context in mind to make your choices. Also indeed fascinating to me is our ability to forget and reinvent something which was already there years ago. We really need more frameworks where we understand what’s going on all the way through…

https://www.youtube.com/watch?v=P7CfWtR-ECk&list=PLEx5khR4g7PJozVmHNpQTVrk1QRC7YaJu


How fast are Linux pipes anyway?

Tags: tech, linux, memory, optimization, performance, unix, system

Excellent deepdive about pipes, on the path to optimization we see how perf is used, how memory is managed by the kernel etc. Very thorough.

https://mazzo.li/posts/fast-pipes.html


Today’s Javascript, from an outsider’s perspective – Lea Verou

Tags: tech, javascript

Everyone loves a good rant about the Javascript ecosystem I guess.

https://lea.verou.me/2020/05/todays-javascript-from-an-outsiders-perspective/


What the f*ck Python? 😱

Tags: tech, python, programming, surprising

Excellent collection of surprising behaviors in Python. If stuck or wondering why something works in a surprising way to you, it’s a good place to look.

https://github.com/satwikkansal/wtfpython#section-strain-your-brain


systemfontstack

Tags: tech, web, fonts, css

Good list of system fonts to use in your CSS.

https://systemfontstack.com/


My Mistakes

Tags: tech, craftsmanship, tdd, refactoring

Excellent answer, really loves how humble Ron Jeffries writings usually are. I like how he doesn’t prescribe what to do, but instead describes what happens to him when he does something he shouldn’t (or doesn’t do something he should). He’s definitely human and slips like us all.

https://ronjeffries.com/articles/-z022/0222ff/my-mistakes/


Mob programming deep dive with Woody Zuill (The Changelog #488) |> Changelog

Tags: tech, mob-programming, craftsmanship, programming

Interesting interview which explores quite a bit mob programming, where it’s coming from, why Woody Zuill pushed for it, how it is done, etc. I didn’t expect his opinion on why he thinks the name being controversial actually helped spark the conversation around the practice… Very inspiring how he practiced for years to feel comfortable being on stage. I also love at how humble this person is through and through.

https://changelog.com/podcast/488


Asynchronous Communication is the Great Leveler in Engineering — Culture (2022)

Tags: tech, management, remote-working, asynchronous

Nice piece on how to handle asynchronous communication in a remote work setup.

https://shopify.engineering/asynchronous-communication-shopify-engineering


Tags: management, decision-making, community

To me that sounds an awful like the “lazy consensus” often applied in communities. Still this is indeed a good approach.

https://jchyip.medium.com/guiding-principle-consent-over-consensus-8aee08540d62


Has “Nudge” tempted us away from systemic solutions? | Tim Harford

Tags: psychology, science, politics

Good points of the problem with nudge backed “policies”… they’re pretty completely avoiding to address the difficult political questions.

https://timharford.com/2022/06/has-nudge-tempted-us-away-from-systemic-solutions/


Knots 3D

Tags: culture

Looks like a nice reference of knots for most occasions.

https://knots3d.com/



Bye for now!

Hi!

This is my first post during Google Summer of Code 2022.

I will be working on adding Spaces support to NeoChat. My mentors for the project are Carl Schwan and Tobias Fella. I have had two calls with them already, and gotten clarity on how I can get started with the work.

I will be posting blogs regularly on my website. To follow my progress, see my posts on my blog.