Skip to content

Thursday, 25 May 2023

Overview

If you’ve been following my previous blog posts, you may recall that I’ve been working on enhancing the user interface of the Bundle Creator in Krita. The new Bundle Creator is to be designed similar to an installation wizard. By compartmentalizing the functionality into four separate sections, users can effortlessly navigate through the various aspects of bundle creation process.

My Progess so far…

I spent the last two weeks working on the Resource Chooser section. The Resource Chooser page allows users to users to handpick the resource items they wish to include in their new bundle. The most notable enhancement is the transition from a traditional list view to a more intuitive grid view for the list of available resources, similar to the Resource Manager layout.

In the previous version, users were required to individually select each resource item and use the > key to add them to the list of selected resources. However, now users can simply click on resource items directly to add them to the selected list. This seamless integration of the grid view and the ability to click-to-select greatly streamlines the workflow, especially benefiting tablet users of Krita.

One can also filter resources by tag or name before choosing resource items to be added to the selected list. This allows users to swiftly select resource items that serve a similar purpose when creating a new bundle. Gone are the days of scrolling through the entire list of available items; now, users can easily narrow down their options through efficient filtering.

And finally, to remove a single resource item, users can now simply select it by clicking on it. Similarly, for removing multiple items, users can hold down the Ctrl key and select multiple items imultaneously.Once the desired resource items are selected, users can easily remove them by clicking on the Remove Resources button .

Demo

Merge Request

You can view my merge request here.

Plans ahead

In the upcoming weeks, I would be working on the Choose Tags section. This requires some UI related feedback, and if you’re interested to help out, please feel free to drop a comment on this post I created on Krita Artists Forum!


My Painting

And just to add a splash of colour to my blogpost, this is just a very quick artwork which I made using Ramon’s impressionism brush bundle. It’s super easy to use, do check it out! :D

MauiKit: A Toolkit for Multi Adaptable User Interfaces.

Today, we bring you a new report on the Maui Project’s progress.

We are excited to announce the latest release of MauiKit version 3.0.0, our comprehensive user interface toolkit specifically designed for convergent interfaces.

Built on the foundations of Qt Quick Controls and QML, MauiKit empowers developers to create adaptable and seamless user interfaces across a range of devices.

Community

To follow the Maui Project’s development or say hi, you can join us on Telegram: https://t.me/mauiproject.

We are present on Twitter and Mastodon:

Thanks to the KDE contributors who have helped translate the Maui Apps!

Downloads

You can get the stable release packages [APKs, AppImage, TARs] directly from the KDE downloads server at https://download.kde.org/stable/maui/

And if you are feeling a bit curious about the Maui DE, you can download a new Manjaro-based image for **testing** the project’s current state.

https://sourceforge.net/projects/nulogicos/files/maui-shell/ISO/manjaro-maui-shell-23.0.0-minimal-230606-linux515.iso/download

Note: Please be aware that this is an ISO image from a third party.

What’s new?

In this update, we have focused on enhancing MauiKit’s capabilities to support convergent interfaces. With improved components, added features, and bug fixes, MauiKit enables developers to build interfaces that seamlessly adapt and respond to different screen sizes, resolutions, and device form factors.

In addition to the enhancements made to MauiKit, this release also includes updates to the Maui App stack. The Maui App stack consists of a suite of applications developed using MauiKit, designed to provide a consistent and cohesive user experience across different devices. These updates further strengthen the stack, ensuring a smooth and integrated workflow for developers and a delightful user experience for end-users.

With the convergence capabilities of MauiKit, applications built using the stack can seamlessly transition between desktop and mobile interfaces, providing a unified experience across different environments.

Check out the previous progress report blog for more details on what has been cooking for this new release:

Maui Report 22

Now, let’s delve into the details of the new release of MauiKit, exploring its enhanced features for building convergent interfaces. We will also showcase the updates to the Maui App stack, demonstrating how developers can leverage its capabilities to create compelling cross-platform applications.

Join us on this journey as we unveil the potential of MauiKit for building convergent interfaces and discover the possibilities offered by the enhanced Maui App stack.

​​​

A script element has been removed to ensure Planet works properly. Please find it in the original post.

MauiKit Frameworks

At the core of the Maui Project lies its foundational framework, MauiKit Controls, which provides a comprehensive set of template controls for creating user interfaces. In this latest release, we have made significant improvements to MauiKit Controls, focusing on enhancing its configurability and overall consistent user experience.

One of the notable advancements is the increased configurability of MauiKit Controls, allowing developers to adapt the interface to user preferences more effectively. For example, new color styles have been introduced specifically tailored for E-Ink and AMOLED displays, ensuring optimal readability and energy efficiency on these screen types. This level of customization empowers developers to create interfaces that cater to the unique needs of users and their device preferences.

Furthermore, we have worked to establish a more consistent look and feel across all graphical elements within MauiKit Controls. This coherence ensures a seamless user experience, where controls harmoniously blend together, providing a polished and professional interface. Users will appreciate the enhanced visual consistency and intuitiveness of the controls, resulting in a more satisfying and engaging interaction.

Controls & Style – [3.0.0]

  • Make the ToolActions have a uniform height for all the children.
  • Style fixes to the ComboBox and SpinBox.
  • In the Handy object check the clipboard for an image.
  • Allow opening ContextualMenu and the cursor position.
  • New control TextFieldPopup: a text field that expands to a popover for listing elements; a use case is for presenting inline searches and filtering.
  • Fixes to the minimum ApplicationWindow size constraints on mobile.
  • Tweaks to the TabView tabs, supporting now color and icon. Fixes the interactive property for touch-swiping gestures.
  • Fix padding of elements such as custom CSD buttons, FloatingButton, SelectionBar, and others.
  • Refactor the ToolActions control, no longer based on indexes, but rather relies on the Action children for setting the states.
  • Fixed the crashing issue on Wayland when performing a DND action.
  • The ListBrowserDelegate and GridBrowserDelegate now expose the autoExclusive property for such usage.
  • Start using the new MauiMan Accessibility module properties for the scrollBarPolicy and playSounds preferences.
  • Style the CheckBoxItem control for better contrast and consistency with the rest of the elements.
  • Fix binding loops on some controls, such as ToolBar.
  • Added a constrained width for the SideBarView sidebar to never exceed the width of the available screen width.

 

A script element has been removed to ensure Planet works properly. Please find it in the original post.

FileBrowser, TextEditor, ImageTools, and Accounts – [3.0.0]

MauiKit FileBrowsing, has also received refinements in this release. The dialogs within MauiKit FileBrowsing have been redesigned to be more compact and visually pleasing, providing a cleaner and more user-friendly interface for managing files. Drag and drop operations have been fine-tuned to ensure smoother file manipulation, simplifying the organization and transfer of files.

 

A script element has been removed to ensure Planet works properly. Please find it in the original post.

 

Additionally, the API of MauiKit FileBrowsing has been cleaned up, resulting in a more consistent and developer-friendly experience. These improvements streamline the integration of MauiKit FileBrowsing into applications, allowing developers to leverage its power more efficiently.

The frameworks received the necessary fixes for supporting translations via KI18n and the KDE’s infrastructure.

  • Check if the clipboard has any content that can be pasted into the FileBrowser.
  • Allow pasting images and text streams into a new file in the FileBrowser.
  • Added a readOnly property to the FileBrowser to avoid performing modifying actions, such as deleting, creating, or moving.
  • Allow selecting large amounts of files – still not good [TODO]
  • Do not count “.” and “..” entries in the directory count info.

Documents & Calendar – [1.1.0]

Updated to the latest MauiKit Controls changes. MauiKit Calendar has been updated to the latest changes in the Akonadi Frameworks.

Terminal – [1.1.0]

MauiKit Terminal serves as a terminal emulator control, powering the MauiKit Station app. In this new release, MauiKit Terminal has gained several exciting features to improve its functionality and usability. Users can now easily search through their command history, making it more convenient to reference past commands and outputs. Additionally, notifications for finished processes ensure users stay informed about completed tasks, enhancing multitasking capabilities.

To prevent accidental closures, MauiKit Terminal now includes alarms that warn users before closing any running processes. This helps avoid unintended disruptions and gives users the opportunity to save their work or take necessary actions. Furthermore, the adaptive color scheme of MauiKit Terminal has been refined for better readability and visual comfort, catering to various devices and screen types. The improved touchscreen support makes it even more intuitive for users to interact with the terminal using touch-based gestures.

  • Do not trigger a signal for the process name if it has not changed.
  • Refine Adaptive color scheme references.

 

MauiMan

Configuring Maui

A script element has been removed to ensure Planet works properly. Please find it in the original post.

 

Maui Apps

The Maui Apps cover a wide range of essential functionalities, including a file browser, music player, text editor, image viewer, notes taker, video player, web browser, and calendar. In this latest release, our focus has been on expanding and refining the app stack, ensuring consistency, and bringing newer apps up to par with the established ones.

Among the recent additions, we have introduced an archive manager, providing efficient handling of compressed files. A GIT version control manager has also been included, streamlining collaborative software development. The new colors utility app helps users manage and explore color palettes effectively, while the camera app offers a convenient solution for capturing and managing photos.

It’s worth noting that some of these Maui Apps are also available on Android, making them accessible across multiple platforms. Furthermore, these apps are designed to work flawlessly on Linux phones, tablets, and desktop computers, ensuring a consistent and seamless user experience regardless of the device being used.

Index & Nota

  • Index PathBar delegates now mask the content item to the arrow shape for more precise clicks.
  • Index now allows pasting raw image and text buffers into a new file.
  • The main context menu now pops up on the cursor position if triggered with a right-click on the desktop.
  • Check if there are items in the clipboard that can be pasted.

Fiery & Vvave

  • Fiery now can download files and notify about them.
  • Fiery has a more compact look with merged tabs and toolbars.
  • Fiery has a more adaptive interface on mobile mode.
  • Vvave now has preference properties for toggling album titles.

A script element has been removed to ensure Planet works properly. Please find it in the original post.

 

Buho & Pix

Bonsai & Clip

  • Bonsai refactored with a new backend for performing GIT actions.

Arca & Station

  • Arca can now create new compressed archives.
  • Correctly prevent closing active processes and correctly accept to stop them.
  • Station now has a new shortcut bar for signals.
  • Station now checks the current program being executed and sets the best-fitted shortcuts bar, for example for Nano the nano bar.

A script element has been removed to ensure Planet works properly. Please find it in the original post.

Agenda & Strike

  • Updated to the latest MauiKit changes,
  • Updated to the latest Akonadi library changes.

Booth & Shelf – Communicator & Paleta

All are updated to the latest MauiKit changes.

Maui Shell & Maui Settings

 

 

 

 

Cask

  • Fix bugs on dragging around CSD surfaces.
  • Now uses the new MauiMan InputDevices keymap properties.
  • Now uses the new QPA Theme and set the right env var to make use of it.
  • Other Qt applications now look better with the new Maui QPA Theme.
  • Tweaked the padding of the Chrome title bars.

 

Maui Settings

  • The Theme module view has been refactored and split into subpages for better readability.
  • Added a new sub-page to support picking custom color schemes.
  • New QPA Theme plugin.
  • Added a new Fonts subpage in Theme.
  • Added entry to pick a custom wallpaper source directory in the Background module view.
  • Organize the sidebar modules by categories.
  • Can now filter the sidebar categories with keywords.
  • Display an error message when a module could not be loaded correctly.
  • Added the new InputDevices modules view with initial support for keyboard keymap options.
  • Tweaked the About module view.
  • Added a filter field for the Icons subpage.

Maui Core & Maui Wallpapers

A script element has been removed to ensure Planet works properly. Please find it in the original post.

That’s it for now.

 

To follow the Maui Project’s development or say hi, you can join us on Telegram: https://t.me/mauiproject.

We are present on Twitter and Mastodon:

New release schedule

 

 

Signing Keys


```
stable/maui/agenda/0.5.0/ c75197601b15d7816153027ea3b4d090816365d7c6c9f6ed2c8011a31a3b68aa agenda-0.5.0.tar.xz
stable/maui/agenda/0.5.0/ cddbf790d71712e1389caac49a794f2b1c2c96bd4df1166d383e36717949abea agenda-0.5.0.tar.xz.sig
```

```
stable/maui/arca/0.5.0/ 131a0e55834ac9d764cca4451aa5d18ac6fafe9fd5cf60e4b23807d85b997889 arca-0.5.0.tar.xz
stable/maui/arca/0.5.0/ 9d7dcbf34598aecd192307b294445d2376de3c7a2a80ee31188d647c8389aceb arca-0.5.0.tar.xz.sig
```

```
stable/maui/bonsai/1.1.0/ 5ba6178b4267f8d263d7cc97ee5dd5085bdfde92a2176874521321835fb2a995 bonsai-1.1.0.tar.xz
stable/maui/bonsai/1.1.0/ 4297606dddcc18f6c00f78b4ecf8b263f2800e07ee1a7f0c14da2c96c2603178 bonsai-1.1.0.tar.xz.sig
```

```
stable/maui/booth/1.1.0/ ec594127fac21cee8e10921a47002297cb526f411d64bdb1375f8646bc886558 booth-1.1.0-signed.apk
stable/maui/booth/1.1.0/ 384cbfa64ee0abedb4c62d224959801eb7619a05661a9f04d4166f1a148c25cb booth-1.1.0.tar.xz
stable/maui/booth/1.1.0/ 1c825949e760747ce26a577c46befd61b78c15771b555f3f68ed31b3dfed870f booth-1.1.0.tar.xz.sig
```

```
stable/maui/buho/3.0.0/ c4034244e57273fa0d7bbb86616500973fde7276cefc9379e37a18a7e2095453 buho-3.0.0-signed.apk
stable/maui/buho/3.0.0/ 07145d1581b49aaee450df96dccac7f735d2d2868c42e55fff195194795a4690 buho-3.0.0.tar.xz
stable/maui/buho/3.0.0/ 08dbfe1df8e20d792812930af5179a230c4e0bd4963164a060c08440e607da23 buho-3.0.0.tar.xz.sig
```

```
stable/maui/clip/3.0.0/ ebb49d2ae2225d8c091d1441ebd797eaf21416d5fe13d4857f4a409c653d917c clip-3.0.0-signed.apk
stable/maui/clip/3.0.0/ 93e52de3473b15a8054f5a4f193a34ade3b59702ae9d716ff1758e9b0b24df28 clip-3.0.0.tar.xz
stable/maui/clip/3.0.0/ 16d93db2184428263e92ccda7d77950f587e2f92212d42c5c01c792d55fbee8a clip-3.0.0.tar.xz.sig
```

```
stable/maui/communicator/3.0.0/ 8ffce2e2e8b2bc0ea3a9c0a90fd9c8b4376ef745996d2b4b9061ec4b45f32eb6 communicator-3.0.0-signed.apk
stable/maui/communicator/3.0.0/ 206e4129029024a91eee59d2819ed7e2a67fafa16d0494ac4674742573c40f07 communicator-3.0.0.tar.xz
stable/maui/communicator/3.0.0/ 017f83366c8ac9d8518417a91c6411e77b44f26f6f69c17f7194a5cdf5cfc61f communicator-3.0.0.tar.xz.sig
```

```
stable/maui/fiery/1.1.0/ fd9215a225a75975bd71515c3dfe90606ceaf48a27e9d411132bffce9f897c9a fiery-1.1.0.tar.xz
stable/maui/fiery/1.1.0/ f7fc6c416a4c215b2dd65c080eb82908687dbbd4c9c655ff01c1f422c9bc93e6 fiery-1.1.0.tar.xz.sig
```

```
stable/maui/index/3.0.0/ 5beccbb39f0ef00ca7bb3dc0cc0e23b738e408a4b3d6d790d460343c8345506b index-3.0.0-signed.apk
stable/maui/index/3.0.0/ 1ca0ed4b4af6bfe6bbdd8165872756ff9774c682185d004642c36f7f2c6f2ef1 index-fm-3.0.0.tar.xz
stable/maui/index/3.0.0/ 324995147d2c18c8dd5e7e263e98fc088347e5581f7dab6d14bc1d50e02bac26 index-fm-3.0.0.tar.xz.sig
```

```
stable/maui/mauikit/3.0.0/ de7381e957d61f6e81bca1349f12f4a992ded3010083c4aa4b35a9f6387325d9 mauikit-3.0.0.tar.xz
stable/maui/mauikit/3.0.0/ d864414f58a060141238640a9d813a2f4ae584b8ab7f474cac0df8add19b0d5f mauikit-3.0.0.tar.xz.sig
```

```
stable/maui/mauikit-accounts/3.0.0/ fb39a0ae0ac89e991ef952299a13a0bdd1fef6f8abdce516b7da61b869fec739 mauikit-accounts-3.0.0.tar.xz
stable/maui/mauikit-accounts/3.0.0/ c80d030b7d41012d9431d3eb736f8407e53789e4aa3eb084e4f3d5a6852f6472 mauikit-accounts-3.0.0.tar.xz.sig
```

```
stable/maui/mauikit-calendar/1.1.0/ fdd57eee74a67859756182acd306a89f350f269ce5c2fe03d75128c37bb36294 mauikit-calendar-1.1.0.tar.xz
stable/maui/mauikit-calendar/1.1.0/ 160d68cd9bbad197e6a07a16bfc4f568d52567772e17cb2374cc2a605b5cfb8b mauikit-calendar-1.1.0.tar.xz.sig
```

```
stable/maui/mauikit-documents/1.1.0/ 3af374204aa86225c3289cbf37a76f281707d4305fae071a4c3ee79a8193251b mauikit-documents-1.1.0.tar.xz
stable/maui/mauikit-documents/1.1.0/ 1a17541156f502591127551b0d498fb1d17305d3b43750c508ce2cb2e0aad921 mauikit-documents-1.1.0.tar.xz.sig
```

```
stable/maui/mauikit-filebrowsing/3.0.0/ d3df8154a156d14f83367d609eafd5cf0f57cb06ef57e8348bd7c046388f0d0f mauikit-filebrowsing-3.0.0.tar.xz
stable/maui/mauikit-filebrowsing/3.0.0/ 7d43f85f78ff461c8c28f19cfc912a8d16259039d43173a3ce806ec24d3fc420 mauikit-filebrowsing-3.0.0.tar.xz.sig
```

```
stable/maui/mauikit-imagetools/3.0.0/ 2d3b7ad6a611c03a29db0d20515294bb5cc0dbc6104ac1181f3e7674a6694852 mauikit-imagetools-3.0.0.tar.xz
stable/maui/mauikit-imagetools/3.0.0/ 875eb5ba66227495ea1d40226bcda4b3d3d27e63ebc817216519bac8e7a07879 mauikit-imagetools-3.0.0.tar.xz.sig
```

```
stable/maui/mauikit-terminal/1.1.0/ ca18baf4ca158d856179659f86cb0497ead1e8f7af55b307b64c789f4635712a mauikit-terminal-1.1.0.tar.xz
stable/maui/mauikit-terminal/1.1.0/ 66fb8e0d8cd6385f51f86c786418e167f18eaa0989ee0f78e6241ff134c1a436 mauikit-terminal-1.1.0.tar.xz.sig
```

```
stable/maui/mauikit-texteditor/3.0.0/ ee6902ce23fa7f25ba1503a5330f8824e9399ed59fee1e6adacf8574b37e8bba mauikit-texteditor-3.0.0.tar.xz
stable/maui/mauikit-texteditor/3.0.0/ 67fa61e504ae2e7d5dd1f19fa643d8537516e154013a003f2efd6ef6d85146ef mauikit-texteditor-3.0.0.tar.xz.sig
```

```
stable/maui/mauiman/1.1.0/ 6523705d9d48dec4bd4cf005d2b18371e2a4a0d774415205dff11378eee6468f mauiman-1.1.0.tar.xz
stable/maui/mauiman/1.1.0/ c84083254f5fcceba2529aa111d47f39bcb87e958d6de79057c24fb3c8ab801c mauiman-1.1.0.tar.xz.sig
```

```
stable/maui/nota/3.0.0/ 3f6533194fcf732677251b19f898d791e1c4072c108898960c0dfd289dc26d30 nota-3.0.0-signed.apk
stable/maui/nota/3.0.0/ 31b8ee1b703d9329e30c99a9ad9886074468ef16b9926a2f29d674363b46614a nota-3.0.0.tar.xz
stable/maui/nota/3.0.0/ 9cff3b22653b4457c209e9bfe603d10527b5f5177034bc127721eb87b420e989 nota-3.0.0.tar.xz.sig
```

```
stable/maui/pix/3.0.0/ 41efab544465f584c0cabcd77ecea6e058f0007f7d79e279070f63fff7faca95 pix-3.0.0-signed.apk
stable/maui/pix/3.0.0/ d186edc1d993922398510b4595d5efeb6d1b532b58d5e04a8c43871bfb6002c1 pix-3.0.0.tar.xz
stable/maui/pix/3.0.0/ 545d26cd625a2ec19d17cbd1031db9d2e530cd47f1dd2d13df4a752a86aaf43a pix-3.0.0.tar.xz.sig
```

```
stable/maui/shelf/3.0.0/ c97f2379be4f83c41dbb789f534bea7f77b552cb2a42008bd98b273dbdc8a2ad shelf-3.0.0-signed.apk
stable/maui/shelf/3.0.0/ cd3770580732801f2589d5d6de6cf9d34bba6705403bad505bde778f8d3084a4 shelf-3.0.0.tar.xz
stable/maui/shelf/3.0.0/ a792580de49a9f081b8501b9d2016966a37a943328273d4addbd8854f11d83aa shelf-3.0.0.tar.xz.sig
```

```
stable/maui/station/3.0.0/ 2641b59ff1f3c4e19e7edf4612cff16d66f3ba5b2562930345ae33882a6e7112 station-3.0.0.tar.xz
stable/maui/station/3.0.0/ 0ee62ea885a167d54d220537c505fe4244822d35f054b21a885e40e2052d3ff5 station-3.0.0.tar.xz.sig
```

```
stable/maui/strike/1.1.0/ cabd7046fd982bca2297d4f2328198bd656e2ea67a877072784e89b978e15fad strike-1.1.0.tar.xz
stable/maui/strike/1.1.0/ b77bcd61b0a6324826f57131a084ded901ebb560a3d5c07dd98b7f424df2fa7d strike-1.1.0.tar.xz.sig
```

```
stable/maui/vvave/3.0.0/ fc292587bd576be65dfe7f576c895f34659da569585ba1d0d5896ce8e7828c69 vvave-3.0.0-signed.apk
stable/maui/vvave/3.0.0/ c8c53df23cf9761cfa2cfb3f681db49b6e136a2f13d5464c7f534c3c585d5bf4 vvave-3.0.0.tar.xz
stable/maui/vvave/3.0.0/ d6194db2b947f716ec5728186801de2461b313736828a310a1034b20b32bdf7c vvave-3.0.0.tar.xz.sig
```

 

 

 

 

The post Maui Release Briefing # 2 appeared first on MauiKit — #UIFramework.

Thursday, 18 May 2023


Introduction

Open source software has revolutionized the world of technology, empowering individuals and communities to collaborate, innovate, and create freely. Contributing to open source projects is a fantastic way to enhance your skills, make meaningful connections, and give back to the community. In this blog, we'll explore some tips to help you get started on your open source journey and make a positive impact.

Start with Your Interests

Find open source projects that align with your interests and passions. Whether it's web development, machine learning, or design, contributing to a project that excites you will keep you motivated and engaged.

Choose Beginner-Friendly Projects

Look for projects that explicitly welcome beginners and provide guidance for newcomers. Platforms like GitHub and GitLab often tag issues as "good first issues" or "beginner-friendly," making it easier to find a suitable starting point

Beginner-Friendly Influencers

Harkirat's YouTube Channel: Harkirat Singh, a renowned YouTuber, offers insightful guides for beginners venturing into open source contributions. His tutorials and tips provide valuable guidance, demystifying the contribution process and empowering newcomers

Kunal Kushwaha: Kunal Kushwaha has played a significant role in introducing open source to the Indian student community. Through his educational content, Kunal not only explains the fundamentals of open source but also shares his own journey of securing a job through open source contributions, inspiring and guiding aspiring developers

Open Source Programs

a. Google Summer of Code (GSoC): GSoC is a prestigious program that offers students the opportunity to work on open source projects under the mentorship of established organizations. It provides stipends and invaluable learning experiences for participants.

b. Major League Hacking (MLH): MLH hosts hackathons, coding challenges, and open source initiatives, fostering collaboration and learning among student developers worldwide. Their events and resources create a vibrant community of open source enthusiasts.

c. Linux Foundation Mentorship Programs (LFX): LFX Mentorship offers mentorship opportunities for developers to contribute to various open source projects. It provides guidance, support, and networking opportunities to help participants make meaningful contributions.

Familiarize Yourself with the Project

Before diving in, take the time to understand the project's goals, guidelines, and community dynamics. Read the documentation, study the codebase, and explore the issue tracker to gain insights into the project's scope and needs

Start Small and Build Momentum

Begin with smaller tasks to familiarize yourself with the project's workflow. It could be fixing typos, improving documentation, or addressing simple bugs. Starting small builds confidence and allows you to learn the project's development process gradually.

Engage with the Community

Join the project's communication channels, such as mailing lists, forums, or chat platforms. Introduce yourself, ask questions, and seek guidance from experienced contributors. Building relationships with the community will enrich your open source experience

Learn from Existing Contributions

Study existing code contributions and pull requests to understand the project's coding style and best practices. Pay attention to feedback given to other contributors, as it can provide valuable insights and help you improve your own contributions

Follow Contribution Guidelines

Every project has its own contribution guidelines. Read and understand them thoroughly. Adhering to coding conventions, commit message formats, and testing procedures demonstrates professionalism and increases the chances of your contributions being accepted

Collaborate and Seek Feedback

Participate in discussions, offer feedback on issues and pull requests, and engage in code reviews. Collaborating with other contributors fosters a sense of community and allows you to learn from experienced individuals

Be Resilient and Learn from Rejections

Not all contributions will be accepted right away. Embrace feedback and learn from rejections. Use those experiences to refine your skills and improve your future contributions. Open source is a learning journey, and perseverance is key

Reasons to Contribute to Open Source

  1. Learning Opportunities: Contributing to open source projects exposes you to real-world coding scenarios and challenges, allowing you to enhance your technical skills. You can learn from experienced developers, understand different coding styles, and explore new technologies.

  2. Building a Portfolio: Open source contributions provide tangible evidence of your skills and expertise. By showcasing your contributions on platforms like GitHub, you can create a compelling portfolio that demonstrates your abilities to potential employers or collaborators.

  3. Networking and Collaboration: Open source communities are filled with passionate and talented individuals from diverse backgrounds. By engaging with these communities, you can network with like-minded people, collaborate on exciting projects, and establish valuable connections within the tech industry.

  4. Making a Positive Impact: Contributing to open source projects allows you to make a meaningful impact on software development and the wider community. Your contributions can improve the functionality, usability, and security of popular software, benefiting users worldwide.

  5. Peer Recognition and Appreciation: When your contributions are recognized and appreciated by the open source community, it can boost your confidence and motivation. Positive feedback, appreciation, and being acknowledged as a contributor can provide a sense of accomplishment and encourage further growth.

  6. Skill Development and Problem-Solving: Open source projects often involve complex problem-solving tasks. By contributing, you can sharpen your problem-solving abilities, learn to debug code, and gain experience in handling real-world software challenges.

  7. Access to Cutting-Edge Technologies: Open source projects often adopt the latest technologies and frameworks. By contributing, you can stay up-to-date with industry trends and gain hands-on experience with innovative tools, enhancing your technical expertise.

  8. Career Opportunities: Open source contributions can open doors to exciting career opportunities. Employers often value candidates with open source experience as it demonstrates collaboration skills, adaptability, and a passion for continuous learning. Your contributions can serve as a strong differentiator in job applications and interviews.

  9. Personal Growth and Learning from Others: Working in open source exposes you to diverse perspectives and ideas. By collaborating with experienced developers, you can learn from their expertise, receive feedback, and gain insights into best practices, fostering personal and professional growth.

  10. Giving Back to the Community: Open source is built on the ethos of sharing knowledge and giving back. By contributing, you become part of a global community that thrives on collaboration and collective improvement. Your contributions help others, and in turn, you contribute to the sustainability and growth of open source software.

  11. Conclusion: Contributing to open source projects offers numerous benefits, including learning opportunities, portfolio building, networking, making a positive impact, and access to cutting-edge technologies. By engaging with the open source community, you can grow your skills, establish valuable connections, and contribute to the advancement of software development. Start your open source journey today and embrace the rewarding experiences that lie ahead.

Job Prospects and Career Growth

Open-source contributions offer unique advantages in terms of career growth. By actively participating in open source projects, you showcase your skills, build a portfolio, and establish connections with industry professionals. These experiences can significantly enhance your job prospects and open doors to exciting opportunities

Share Your Experience

Document your open source journey through blog posts, tutorials, or videos. Share your learnings, challenges, and success stories. By sharing your experiences, you inspire and encourage others to embark on their own open source adventures

Conclusion

Open source contributions provide an incredible platform for beginners to learn, collaborate, and make a real impact in the tech community. With influencers like Harkirat Singh and Kunal Kushwaha providing guidance and platforms like GSoC, MLH, and LFX Mentorship, aspiring developers have numerous opportunities to get involved and grow their skills. Embrace open source, leverage these programs, engage with communities, and embark on an enriching journey that will shape your career and contribute to the thriving world of open source

Tuesday, 16 May 2023

Finally a sprint again! The 2019 the Plasma Sprint in Valencia was my first in person KDE event and I was hooked instantly. However something mysterious happened in the next years that and in person meet ups stopped happening. While Akademy 2022 happened in person again, a sprint has different atmosphere and I was awesome to see people that couldn’t make Akademy or for whom it was their first sprint. Other attendees have blogged about the sprint as well, check them out too. Either on the planet or over on discuss Carl created a collection of a bunch of them.

So what did I do? Aside from the usual talking, discussion, planing which the others already blogged about. (And of course the live bug investigations on fellow developers’ machines who always seem to attract the weirdest issues.) I am afraid I spent the rest of the time on boring backend stuff.

For Plasma 6 we want to make use of the layer-shell wayland protocol for positioning and stacking Plasma’s own panels, backgrounds and some other windows such as krunner. This protocol was developed by the awesome wlroots people and is currently proposed for standardization. In the past we used our own plasma-shell protocol and unfortunately not only Plasma is using it at the moment but it also spread to applications with more advanced use cases than just having a normal window. As mixing windows from both systems together will be harder to layout and in general a desire to move on from the plasma-shell protocol for a more streamlined experienced I ported yakuake to use layer shell via our own Layer Shell Qt library.

Still Wayland related but probably even less interesting, I started porting libtaskmanager away from KWayland. KWayland was/is a framework consisting of two libraries (client and server side) wrapping wayland code for more straightforward consumption of Qt programs. As you can imagine this is quite some amount of boring code to maintain and with other good solutions available we would like to stop doing so. The server part of the framework was already moved to KWin in the past and we embraced qtwaylandscanner there for generating code wrapping wayland. For the client side we are now moving in the same direction. KWayland included everything but most of it was not used because Qt handles all the normal interactions with the compositor and almost all the remaining protocol interfaces were used only once because there is only a single place in our stack that needs to communicate the additional information with KWin (for example Klipper or the taskmanager). So it makes sense to move the code to the places where it is used instead of having to maintain a framework with the usual stability guarantees.

But I did not only work towards eliminating a framework, I also created an entire new one. Sorry! Enter KColorScheme. To be fair it’s not entirely new but KColorScheme and friends moved to their own library. KColorScheme was a pain point in our dependency stack since it was very central but its location in the KConfigWidgets library meant that you had to depend on a bunch of unwanted stuff just to read some colors. So we decided at the sprint to split it out to a new library and I implemented that. Afterwards I adjusted some consumers which do not need to longer depend on KConfigWidgets together with Nicolas.

As you can see it was quite the productive sprint which was possible because of the awesome people at Tuxedo Computers who hosted us and the KDE e.V that enables people from all over the world to come together and build awesome things. Consider donating so that we can continue doing so. The last thing left to say, I will be at Akademy which happens soon. See you there! I am going to Akademy 2023 in Thessaloniki, Greece

Monday, 15 May 2023

As you probably have seen from other people’s blog posts there was the 2023 Plasma Sprint last week. It was generously hosted by TUXEDO Computers in their offices in Augsburg, Germany. Many thanks to TUXEDO for that!

Other people have already well summarized what happend there, so let’s have a look at what I have been doing:

Together with Kai Uwe, Volker, and Ismael I looked at notifications. This includes internal simplifications in KNotifications, API design questions, a proposed V2 for the notification portal API, and a new UI for per-event configuration in the notification settings module.

Together with Marco I looked into some API design topics around the Applet class in plasma-framework, and worked on a proposed new API for applet actions.

Given that Wayland was a huge topic at the sprint I continued the work of mine on enabling some accessibility options on Wayland. Sticky keys is not only what happens when you spill Spezi over your laptop, it is also an accessibility feature that allows people that cannot press multiple keys simultaneously to type key combinations like Control+C/Control+V. Basic support for this on Wayland is coming with Plasma 6. Not all of the options that are present on X11 work yet though. If you are a user of sticky keys please leave your feedback on https://bugs.kde.org/show_bug.cgi?id=444335 for which of these options should be prioritized.

Together with Natalie, KDE e.V.’s Hardware Integration Engineer, I discussed our touchpad configuration module and how to make it more robust and maintainable. We also discussed various topics around debugging and profiling KDE software.

Together with Xaver I looked into how Dolphin/KIO handles multi-GPU setups (so that apps preferring discrete GPUs will use them when launched via KIO). As it turns out there’s a few things to be improved there so we discussed approaches to do that.

With David I discussed some of my open changes to our global shortcuts infrastructure and continued working on improving that.

We also got a visit from two people from the city of Treuchtlingen, Germany. They have been using KDE software in their communal IT for over 20 years. We discussed their vision of using open source and open standards in government IT and some of their pain points with using KDE software for that.

Overall it was a very nice and productive week and it was great to meet so many fellow KDE hackers, some of them for the first time! Gatherings like this are only possible because of generous donations to KDE e.V. Please consider donating to make more such sprints possible.

Sunday, 14 May 2023

My Painting

Text

About Me - I am Groot.

I’m Srirupa Datta, about to finish my undergraduate Electrical Engineering degree at Jadavpur University, India, in June. This year, I got selected for Google Summer of Code and will be working on improving the Bundle Creator in Krita.

My Introduction to Krita…

It’s been more than a year since my last blogpost where I posted monthly updates on my progress on adding the Perspective Ellipse assistant tool in Krita during SoK’22. Being a painter who’s interested in software development, I’ve been interested in Krita ever since I started using it.

What it’s all about

The primary format to share resources in Krita is a Resource Bundle, which is a compressed file containing all the resources together. It also contains some other information like metadata and a manifest so Krita can check there’s no errors in the file.

Krita’s Bundle Creator allows one to create their own bundle from the resources of their choice. The project that I would be working on, aims to improve the user interface of the current Bundle Creator, and allow the ability to edit bundles (which is currently not supported in Krita).

The new Bundle Creator

The new Bundle Creator would look like an installation wizard with four pages which can be navigated using the Next and Back buttons, as well as buttons on the left side panel.

I think the primary objective behind designing the new Bundle Creator was to organize its workflow, that is, segregate sections devoted to a particular function or job. This is what led to the idea of using a wizard, instead of simple dialogs. Hence it would have four wizard pages:

  • Choose Resources
  • Choose Tags
  • Enter Bundle Details
  • Choose Save Location

Some of the cool features you can expect in the new Bundle Creator are a gridview like that of Resource Manager’s to view all the resources, filter resources by name or tag before selecting, and an option to change back to the default listview from gridview if one wishes to stick to the previous layout.

W1

Adding custom tags to selected resources is a feature that we wish to integrate, but it would require a redesign of the Choose Tags wizard page that has been shown below. Just to clarify, these are all mockups!

W2

Yet another important feature would be reloading last bundle data when opened/on startup - this is particularly useful when making a bundle for other people.

Apart from these, the new Bundle Creator would be resizable(Yaay!), and a separate Menu entry called Bundle Creator would be created. We plan to move Manage Resource Libraries , Manage Resources and Bundle Creator from Menu > Settings to Menu > Resources.

And lastly, I would be working on adding the feature of editing bundles - this however needs to be discussed more and would be dealt with post my mid term evaluations.

And of course, if you want to suggest some ideas or improvements, feel free to drop a comment on this post I created on Krita Artists Forum!


When I first started exploring the world of web development, I was immediately drawn to JavaScript. I was inspired by the countless possibilities it offered in terms of building dynamic and interactive websites. The ability to add functionality to a web page and bring it to life was truly fascinating to me.

As I delved deeper into the language, I found myself constantly inspired by the innovative solutions that other developers had created using JavaScript. I became motivated to push myself to learn more, to experiment with new techniques and tools, and to see what I could create with this powerful language.

In short, my motivation to learn JavaScript came from my desire to be part of a community of innovative and creative thinkers who were constantly pushing the boundaries of what was possible in web development. I wanted to be a part of that world, and I knew that learning JavaScript was the first step on that journey.


Currently, I am working on building a simple website using JavaScript. I was inspired to take on this project after realizing the importance of having a strong online presence for businesses and individuals alike. JavaScript is a crucial language for web development, and I wanted to dive deeper into its capabilities by creating a website of my own.

As I started working on the project, I found myself enjoying the process of coding and problem-solving. Each step of the way, I learned something new about JavaScript and its features. I experimented with different functions and event handlers, and it was exciting to see how the website's functionality changed with each addition.

Working on this project has also allowed me to apply my creativity and design skills. I've been able to explore different ways of presenting information and making the website user-friendly. It's been a rewarding experience to see my ideas come to life on the screen.

Overall, this project has been a great learning experience for me. It has solidified my interest in web development and given me the confidence to take on more complex projects in the future.


To complete my project of building a simple website using JavaScript, I followed a few steps. Firstly, I planned the layout of the website and created wireframes to visualize how each page would look like. Then, I wrote the HTML and CSS code to create the basic structure and styling of the website.

Next, I started working on the JavaScript functionality. I added interactive features like a navigation menu, a contact form, and a slider for images. I also included some animations and effects to make the website more engaging.

However, I faced some challenges along the way. One of the main challenges was getting the navigation menu to work properly. Initially, it did not respond to clicks and did not show the correct pages. I had to research and learn more about JavaScript event listeners and DOM manipulation to fix this issue.

Another challenge was getting the contact form to send emails. I had to learn how to use a server-side programming language like PHP to handle the form submission and send an email with the form data.

To overcome these challenges, I spent time researching and learning more about JavaScript, HTML, and CSS. I also reached out to online communities and forums for help and advice.

Overall, the project was a great learning experience, and I am proud of what I was able to accomplish using JavaScript. I gained a deeper understanding of web development and learned new skills that I can apply to future projects.


Reflecting on what I learned from building a simple website using JavaScript, I realized that it is a powerful language that can create dynamic and interactive web pages. Through this project, I learned about various JavaScript functions, including DOM manipulation, event listeners, and object-oriented programming.

One thing I would do differently next time is to plan my project more thoroughly. I faced a few challenges along the way because I didn't have a clear plan before starting. Next time, I would create a detailed plan, including the layout, functionality, and features of the website before starting the coding process.

Overall, building this website has helped me improve my skills and understanding of JavaScript. I am now more confident in my ability to use JavaScript to create interactive and dynamic web pages, and I am excited to continue learning and exploring the possibilities of this language.


In my journey of learning JavaScript and building a website, I found several resources that were helpful in improving my skills. Here are a few that I would like to share:

  1. The Wemakedevs roadmap provides a valuable front-end learning path with numerous excellent resources to learn JavaScript. I highly recommend checking it out.

    WeMakeDevs roadmap for Frontend-Development

  2. Mozilla Developer Network: This website offers a wealth of information on JavaScript and web development. I found their documentation to be comprehensive and easy to understand, and I frequently referred to it while working on my project.

  3. FreeCodeCamp is a great resource for learning JavaScript, offering a wide range of informative videos. Additionally, CodeWithHarry and Akshay Saini have done an excellent job of providing valuable JavaScript knowledge through their YouTube channels

  4. Stack Overflow: This is a popular online community where developers can ask and answer questions related to programming. I found it to be a helpful resource when I encountered coding challenges and needed guidance.

Overall, these resources helped me to develop a strong foundation in JavaScript and improve my skills as a web developer.


As I embarked on my journey to learn JavaScript, I never imagined the exciting adventures that awaited me. It all started when I stumbled upon a simple webpage and wondered how it was made. Intrigued, I began researching and discovered that the page was built using JavaScript, a programming language that I had heard of but knew very little about.

With newfound curiosity, I dove headfirst into learning JavaScript. At first, it was a bit overwhelming. I struggled to understand the syntax and structure of the language. But I was determined to master it, and with each passing day, my confidence grew.

One of the most exciting experiences during my journey was when I built my very first website using JavaScript. It wasn't anything fancy, just a simple webpage with a few interactive features, but it was a proud moment for me nonetheless. I spent countless hours pouring over code, debugging errors, and testing different functionalities. It wasn't always easy, but the feeling of accomplishment when I finally got it right was worth every second.

Throughout my learning journey, I found myself constantly seeking out resources to help me improve my skills. Online tutorials, books, and courses were all instrumental in my success. Some of my favorite resources included FreeCodeCamp's JavaScript videos, CodeWithHarry, and Akshay Saini's YouTube channels. Each provided a unique perspective on the language and helped me better understand its intricacies.

Looking back on my journey, I can confidently say that learning JavaScript has been one of the most rewarding experiences of my life. It has helped me develop new skills, boosted my confidence, and opened doors to exciting opportunities. While there were certainly challenges along the way, I am grateful for each and every one of them. They helped me grow and pushed me to become a better developer.

In the future, I plan to continue honing my JavaScript skills and taking on new challenges. There is always more to learn, and I am excited to see where this journey will take me next.

Introduction to the topics of DevOps, MLOps, GitOps, and Open Source, was discussed at wemakedevs delhi meetup:

DevOps: DevOps is a set of practices that combine software development (Dev) and IT operations (Ops) to enable faster and more reliable software delivery. DevOps emphasizes collaboration, automation, and continuous improvement, and is widely used in modern software development.

MLOps: MLOps, or machine learning operations, is the application of DevOps practices to machine learning workflows. MLOps enables teams to manage and scale machine learning models in a more automated and efficient way, using tools such as containerization, version control, and continuous integration/continuous deployment (CI/CD) pipelines.

GitOps: GitOps is a way of managing infrastructure and application deployments using Git version control. In a GitOps workflow, all changes to infrastructure and application configurations are made through Git commits, which trigger automated deployment pipelines. GitOps enables teams to manage infrastructure and applications in a more scalable, automated, and secure way.

Open Source: Open source software is software that is freely available for use, modification, and distribution by anyone. Open source software is developed and maintained by a community of developers and users, who collaborate to improve the software and ensure its quality and security.

These topics are all highly relevant and important for modern software development and are increasingly being adopted by organizations of all sizes and industries. By staying up-to-date on the latest developments in DevOps, MLOps, GitOps, and Open Source, software developers and organizations can ensure that they are delivering high-quality software that meets the needs of their users and customers


I was drawn to the tech meetup due to my keen interest in topics such as DevOps, MLOps, GitOps, and Open Source. As someone who is always seeking to enhance my skills and knowledge in software development, I was excited to learn from industry experts and my peers in the field. Additionally, I was eager to connect with other developers, engineers, and industry professionals to exchange ideas, share experiences, and build relationships. Being a part of a larger network of like-minded individuals who share my interests and goals was also a key motivation for attending the wemakedevs meetup. Overall, I was hoping to gain insights, best practices, and inspiration that I could apply in my work and personal projects.


The keynote presentation on DevOps by Subhasmita Swain was undoubtedly the highlight of my experience at the wemakedevs tech meetup. Her insights and best practices were highly informative and thought-provoking, and her engaging and entertaining approach made the session more enjoyable. The breakout sessions on MLOps and GitOps were equally impressive, allowing me to learn from other developers and exchange ideas with peers. I was particularly struck by a conversation I had with another attendee about the future of Open Source, which left a lasting impression on me. His perspectives were insightful and inspiring, and I found it fascinating to learn about his experiences working on open source projects. Overall, attending the wemakedevs tech meetup was a unique and valuable opportunity to learn, connect, and grow in the tech industry. I am already looking forward to attending the next one.


After attending Apoorv Goyal insightful and informative session on containerization, I gained a deeper understanding of the technology and its various use cases. Mr. Goyal shared his expertise on the subject matter and provided us with valuable insights and best practices on how to leverage containerization effectively. His presentation was well-structured and easy to follow, and he did an excellent job of breaking down complex concepts into simple, understandable terms.

During the session, I learned about the benefits of containerization, such as increased efficiency, scalability, and portability, and how it is transforming the way modern software is developed and deployed. Mr. Goyal also discussed the various containerization tools and platforms available in the market, and provided practical tips on how to choose the right tool for a particular use case.

Overall, the session was a great learning experience for me, and I left with a newfound appreciation for the power of containerization. Mr. Goyal's expertise and engaging teaching style made the session both informative and enjoyable, and I'm excited to apply the knowledge and best practices I learned to my work in the future.


When reflecting on my experience attending the wemakedevs tech meetup, I can confidently say that it exceeded my expectations. I learned so much from the keynote presentation on DevOps by Subhasmita Swain and the breakout sessions on MLOps and GitOps. The conversations I had with other attendees were also incredibly insightful and thought-provoking.

I gained a deeper understanding of containerization from Apoorv Goyal's session, which taught me some of the best practices of containerization. I also enjoyed learning about some of the latest trends in open source development and how developers are using new technologies to solve complex problems.

Overall, attending the wemakedevs tech meetup was a valuable experience that provided me with unique insights and perspectives. I would highly recommend it to other developers and industry professionals who are looking to expand their knowledge and connect with like-minded individuals.

The most memorable moment for me during the meetup was the networking session during lunchtime, where I had the chance to interact with other attendees. It was a valuable opportunity to exchange ideas, share experiences, and establish connections. Additionally, the event provided a platform for me to actively engage with the tech community and expand my network with like-minded individuals who share my passion and aspirations.

In conclusion, attending the wemakedevs tech meetup was a rewarding experience that exceeded my expectations. I left with a deeper understanding of the latest trends in software development and valuable insights from industry experts and peers. I would highly recommend it to anyone looking to enhance their skills and knowledge in the tech industry.

Saturday, 13 May 2023

I’ve been happily using Woodpecker CI to get CI for my repositories on Codeberg. Codeberg is a non-profit community-driven git repository hosting platform, so they can’t provide free CI to everyone.

Since I run lots of stuff on small arm boards (for example this website), I need my CI jobs to create arm executables. The easiest way to get that done is to just compile on arm devices, so I was happy to see that Hetzner is now offering arm nodes in their cloud offering.

To make that as cheap as possible, the CI should ideally create a VM before running its job, and remove it again afterwards. Unfortunately Woodpecker does not seem to support that out of the box at this point.

My solution to that was to build a docker proxy, that creates VMs using docker-machine, and then proxies the incoming requests to the remote VM. That works really well now, so maybe you will find it useful.

Setting that up is reasonably simple:

  • Install docker-machine. I recommend using the fork by GitLab
  • Install the backend for your cloud provider. For Hetzner I use this one
  • Grab a binary release of docker-proxy (if you need arm executables), or compile it yourself.
  • Create a systemd unit to start the service on boot in /etc/systemd/system/docker-proxy.service. This particular one just runs it on the woodpecker-agent user that you may already have if you use Woodpecker CI.
[Unit]
Description=Docker CI proxy
After=network.target

[Service]
User=woodpecker-agent
Group=nogroup
Restart=always
ExecStart=/usr/local/bin/docker-proxy

[Install]
WantedBy=multi-user.target
  • Fill in /etc/docker-proxy/config.toml This example works for Hetzner, but everything that has a docker-machine provider should work. You just need to supply the arguments for the correct backend.
[docker_machine]
driver="hetzner"
args=[
    "--hetzner-api-token=<token>",
    "--hetzner-server-type=cax11",
    "--hetzner-image-id=103907373",
]

[general]
timeout=300
port=8000
  • Finally, make woodpecker-agent use the new docker proxy, by setting DOCKER_HOST=http://localhost:8000 in its environment.

I hope this may be useful for you as well :)

Friday, 12 May 2023

IT feels like a billion years before the last plasma sprint, which was in 2019 in Valencia, before the pandemic, but finally this year we are back on track, and was great to see again many old friends as well as seeing many new faces for which it was the first sprint.

We were gracefully hosted by Tuxedo Computers in Augsburgh, makers of very nice laptops that come with Linux and KDE Plasma, as well as being KDE patrons.

First of all, everybody got up to speed with a full git build of a Plasma 6 session, so that everybody could participate in development and discussions from the same level.

There were many discussions about Plasma 6, about what we want to do in Plasma and in Kirigami, how we want to change the look and defaults for the new major release. Most of the user-facing changes have been wonderfully described by Nate.

On my part, I worked on mainly 2 things, that were fairly not “glamorous” but quite important never the less (and mildly painful to do) : a refactor of the plasmoid loading code and splitting all the Svg themes code to a new framework with far less dependencies, ideally usable by any application.

Plasma API

I spent most of my hacking time at the sprint on a refactor of the plasmoid loading code, which won’t be really “seen” by the user, but will make the infrastructure much more robust and the API cleaner.

The person which must pay attention to it is the plasmoid author, which will need to adapt the plasmoid code in a few places.

Most notable is that, just like when you are writing a QML application you have to use the ApplicationWindow root QML Item, for a plasmoid you now have to use a PlasmoidItem root object, so something like

Item {
    Plasmoid.compactRepresentation: Label {text: Plasmoid.title}
    Plasmoid.fullRepresentation: Item {...}
}

becomes:

PlasmoidItem {
    compactRepresentation: Label {text: Plasmoid.title}
    fullRepresentation: Item {...}
}

A full porting guide is in progress.

KSvg

Using the Plasma Svg code to support stylesheet recoloring, on disk image cache to speed up loading, and the 9-patches FrameSvg is something the several applications would be interested to, and some actually are already doing, but since plasma-framework has a lot of dependencies, for some applications that is a blocker. All the svg code has now been broken out into a new framework called KSvg, which is still work in progress, but in the end will support all existing plasma themes with no change, and if an application wishes to use it, the svg sets will be loaded from the app own data folder (or anywhere else the application configures it to) instead of the share/plasma/desktoptheme folder, where plasmashell looks for them (so they can also use a complete different theme structure and don’t have to provide the same elements)