Feeling of freedom out of the box
Open, Needs TriagePublic

Description

Description

Because free software should literally beg its users to tinker and play with itself!

Sadly, most desktop free software does the opposite, sweeping anything that requires any kind of learning or understanding (including programming, graphics design, and testing latest code) under the rug in an effort to be user-friendly, ending up feeling like proprietary freeware. Ironically proprietary websites feel more free than most desktop free software, since you can right-click any element and inspect it, and use Tamper Monkey to easily inject user code...

Why is this important? As a computer-related hobby, nowadays free software volunteering has to compete with addictive games and social media, meaning that any given wasted second can mean all the difference between a user becoming a contributor and them simply giving up. Anything but obvious and single-click initial setup, reasonable download and initial build times, less than 5 second incremental build and launch times, and instant access to source code and documentation of any class or function (even those in external libraries) should be considered unacceptable.

Freedom is free software's best advantage! Let's provide an environment where the software itself gently nudges people towards learning what they need to make use of software freedom, and where learning is natural, gradual, smooth, and actually fun for as many people as possible! Imagine for a moment that free software became a video game - in its current state it would be either universally panned by critics for its tutorial system, or regarded as a niche game only for the most hardcore players. What we need to do is to turn FOSS modding and contribution into an "easy to learn, hard to master" kind of game!

Here's a very relevant blog post: https://www.inkandswitch.com/end-user-programming.html

What it will take

  • Use the official KDE public outreach channels to spread the word! The world of build systems, documentation generators, IDEs, and packaging is in state of complete chaos, and cooperation between all of them is required to make fully automated compilation from source and setup of proper development environments possible, so it's important to get as many free software fans as possible to agree that the feeling of freedom in free software is something that's worth striving for.
  • Let's not be afraid of knowledge! Teach users about and ideally provide access to as many internal OS subsystems are possible.
  • Reduce the time spent waiting or searching for documentation while modifying software to the minimum.
  • Reduce the amount of necessary boilerplate (for defining properties, for example) to the minimum.
  • Add plugin support and API documentation to as many KDE applications as possible.
  • Add "Create" and "Edit" buttons to everything: widgets, themes, icons, applications (both in Discover pages and "Help" menus), application plugin (both in Discover pages and "Plugins" configuration pages), etc. Clicking them should set up the development environment so that code completion, code navigation, unit testing, and running works out of the box.
  • Add UI for applying patches (e.g. from forums and blog posts).
  • Add UI to port local changes to newer versions of software.
  • Add UI to contribute local changes to upstream projects.
  • Show links to source code of applications in Discover.
  • Show alphas, betas and nightly builds by default in Discover, allow installing them in parallel with stable versions.
  • Allow installing Git master and Git branches via Discover (should be compiled automatically on the user's computer).
  • Make developer documentation translatable (e.g. see PHP documentation). No reason to exclude people who don't speak English well from the feeling of freedom!
  • Windows users shouldn't feel excluded either: the "Edit" button should work there as well!

How we know we succeeded

  • More themes, widgets and plugins.
  • More new modders and contributors.
  • More regular users testing latest code, resulting in bugs being caught earlier.
  • Regular users applying patches directly from blogs and forums, and thus gaining more appreciation of software freedom.
  • Maybe even curious regular users getting interested in software development by clicking "Edit" on a random widget to see what's inside...

I am willing to put work into this

I am interested

  • add your name
churaev created this task.Jun 13 2019, 11:35 AM
churaev added a project: Goal Setting 2019.
churaev updated the task description. (Show Details)Jun 13 2019, 11:45 AM
churaev updated the task description. (Show Details)Jun 13 2019, 11:49 AM
churaev updated the task description. (Show Details)Jun 13 2019, 12:02 PM
churaev updated the task description. (Show Details)
churaev updated the task description. (Show Details)Jun 13 2019, 12:08 PM
ervin added a subscriber: ervin.Jun 23 2019, 12:46 PM

I don't think it is *all* doable indeed... but if the author of that goal put some more research effort into it to improve the wording it could become a strong follow-up goal to the on-boarding one. Indeed, helping users to turn into contributors would be really nice. Even though some of the point in there are a bit shoot-to-the-moon like, some others are actually very doable I think and would help a lot. Please, take time to improve it, I think it could pay off. ;-)

churaev added a comment.EditedJun 24 2019, 1:25 AM

@ervin thank you! I didn't think anybody would notice this and actually reply...


First off, I don't think that there's anything in the wording to improve, or any research to be done... it's not that the text itself is unclear, but that its meaning is psychologically difficult to accept, because the moment you accept it, the realization of just how much progress the free software movement has robbed itself of when it comes to the desktop will hit you like a wrecking ball...

What's the lifeblood of proprietary software? Why, it's DRM, which propels it towards new horizons at the speed of light!

What's the lifeblood of free software, when it comes to desktops? It's clear that desktop free software will never be profitable, so much of it is volunteer work.

For people to do something voluntarily, it has to be fulfilling enough and frustration-free enough. Because software development is obviously a computer-related activity, it has to compete with addictive proprietary games and social media, which means anything but one-click initial setup, less than 5 second iteration time, and instant access to documentation for any given function should be considered unacceptable. I think that psychological barriers are just as impenetrable as legal barriers and lack of free time and should be given the same amount of attention.

Most of the times I try to raise this point I get back hostility and accusations... I've got a theory as to why: making development frustration-free would be an amazingly huge boon for free software, but there there's one huge and obvious problem that stands in the way of doing it that's impossible for any one person to even begin to solve, not to mention the general shortage of manpower, and thus free software fans prefer to convince themselves that everything is the way it should be and suggesting otherwise is clearly a tell-tale sign of trolling... this is self-perpetuating and becomes worse with time, because as free software keeps missing opportunities, thinking about what could have been becomes more and more disheartening for a free software fan.


So what's that huge and obvious problem? Let's look at one of the main criticisms of Linux: that you often have to compile stuff yourself... so what? It's the computer who does the compiling, not the person using it, right? Well, it all goes back to a basic and simple truth that Linux and C++ truthtellers have been pouring into everybody's ears for probably almost the entire time they both have existed, only for the said truth to flow back out of the ears of the very people who have the power to make any meaningful impact, right down the drain... I think everyone here can already guess which truth it is...

The truth is that the world of Linux, C++, build systems, and documentation generators is too fragmented for fully automated setup of development environments to be possible. This is extremely difficult to overcome, after all before the Language Server Protocol it was obvious that auto-completion could be and would be nice to standardize, but it still took Microsoft to get any kind of auto-completion standard to be widely accepted.


That said, I don't think that this is even an unreasonable goal when it comes to applications... GNOME for example is currently way ahead of KDE on this front: for most GNOME applications, you can enter the git URL into GNOME Builder, and have dependencies, auto-completion, documentation access for at least for GLib-based libraries, etc, automatically set up for you, thanks to Flatpak and its standardized software base. Maybe KDE could do the same, but present this feature to everyone, even to regular users, e.g. via "Edit" buttons in Discover, just like it's done for color schemes, rather than sweeping it under the rug...

churaev updated the task description. (Show Details)Jun 24 2019, 2:01 AM
churaev updated the task description. (Show Details)Jun 24 2019, 2:24 AM
churaev updated the task description. (Show Details)Jun 24 2019, 2:27 AM
ognarb added a subscriber: ognarb.Jun 24 2019, 8:02 AM

More documentation for third-party application would be awesome. Currently, in the userbase we have:

And maybe some more, in the community and techbase wikis.

You probably saw how Blender GUI is build, where in developer mode each buttons, can open a text editor with the widget code and with support for live modification in the python code. This can't be achieved with Qt.

But having a button for opening Kdevelop with the source code of the application loaded is probably doable. And you are not the first with this idea, I already read that some want to make Kdevelop install all the decencies automatically in some discussion about the onboarding goal.

@churaev
In fact, people around here agree with you so much that onboarding became an official KDE goal last time. We continue to make improvements on ease of compilation-and-running, and in fact just made a big improvement for Plasma itself which I'm going to be blogging about tomorrow. See https://community.kde.org/Get_Involved/development

It's not perfect of course, but it's getting better.

churaev updated the task description. (Show Details)Jun 24 2019, 6:05 PM
churaev updated the task description. (Show Details)Jun 24 2019, 6:07 PM
churaev updated the task description. (Show Details)Jun 24 2019, 6:19 PM
churaev updated the task description. (Show Details)Jun 24 2019, 6:29 PM
churaev updated the task description. (Show Details)Jun 24 2019, 6:49 PM
churaev updated the task description. (Show Details)Jun 24 2019, 6:53 PM
mart added a subscriber: mart.Jun 25 2019, 3:59 PM

I don't feel I can agree to this goal at all for how is stated.
Proliferation of options has been an historic KDE problem to the point of looking very unpolished and unprofessional.
since kde3 times we got much better at this, but we must pay attention we don't add complexity in our codebase that impact overall quality and maintainability.
It's ok to be very flexible, and we are already more than any other desktop environment, but we should put more work in the "simple by default" part.
adding super configurability everywhere as a big overarching goal i feel it will hurt us in the long time as all the complexity added will have to be maintained over the years

churaev added a comment.EditedJun 25 2019, 10:30 PM

@mart, it looks like mental blocks are preventing you from understanding the goal... Honestly, I fully expected it to be misunderstood, after all it's probably psychologically difficult to even think about, because all of what I proposed for the goal is so obvious and would be just so good for free software, but will likely prove impossible to implement in practice. More info on that in this comment.

Proliferation of options has been an historic KDE problem to the point of looking very unpolished and unprofessional.

This goal does not propose any new options, instead it proposes making it easy to add user code to KDE software, so people can make their own options!

since kde3 times we got much better at this, but we must pay attention we don't add complexity in our codebase that impact overall quality and maintainability.

I think that all of the necessary changes would be helpful rather than detrimental, the biggest problem is probably the degree of standardization and cooperation needed...

adding super configurability everywhere as a big overarching goal i feel it will hurt us in the long time as all the complexity added will have to be maintained over the years

All free software is already super-configurable by virtue of the access to source code, you can even add new features, the only problem is the number of hoops you have to jump through to actually make use of this configurability...

Probably the best first step to achieving goal would be to spread the following beautiful truth: at this point it should be obvious to everyone desktop free software will never be profitable, and nowadays any free software volunteering has to compete with addictive games and social media. Therefore, anything but one-click initial setup, low download and initial build times, less than 5 second compilation and launch times, and instant access to and source documentation for any class or function (even those from external libraries) should be considered unacceptable.

Please! Use every communication channel available to KDE to spread it.

I'm sure that there are people within the KDE community who can tell this wonderful truth much more eloquently and persuasively than I will ever be able to, and coming from a reputable source like KDE rather than an outsider like myself, this marvelous truth is more likely to break through people's psychological barriers and mental blocks.

In my opinion, there exists a vicious cycle: the degree of standardization and cooperation that would be required to fix the mess that is the world of build systems, documentation generators, version control, C++, packaging, etc. to the degree necessary to enable fully automated setup of complete development environments is astronomical, which causes people to develop mental blocks to avoid thinking about all the progress the free software movement could have made if it were this easy to get into, thus making this problem even more intractable: cooperation is not possible if everybody prefers not to think about the problem...

churaev updated the task description. (Show Details)Jun 25 2019, 10:34 PM
churaev updated the task description. (Show Details)
churaev updated the task description. (Show Details)Jun 26 2019, 12:33 AM
churaev updated the task description. (Show Details)Jun 26 2019, 4:50 AM
churaev updated the task description. (Show Details)Jun 26 2019, 5:57 AM
churaev updated the task description. (Show Details)
churaev updated the task description. (Show Details)
churaev updated the task description. (Show Details)Jun 26 2019, 6:12 AM
churaev updated the task description. (Show Details)
churaev updated the task description. (Show Details)Jun 26 2019, 6:15 AM
churaev updated the task description. (Show Details)Jun 26 2019, 6:42 AM
ognarb removed a subscriber: ognarb.Jun 26 2019, 7:17 AM

I agree with @ervin. The goal seems to have good foundation but it is focused on the wrong things in my opinion.

Some suggestions are to change the title to something like: Integrating Plasma with the contribution platforms or Make possible to contribute without Leaving plasma

Also instead of urging people to become developers maybe we should urge users to get involved in the community as a start. Right now we have no UI to suggest bugs or features. And the IRC is not very welcome. Maybe it should be changed to Martix?

Another good idea would be to add a welcome screen with links to the community.

We already have Matrix, but there's a lot of old documentation that needs to be updated to point people towards it.

lydia added a subscriber: lydia.Jul 19 2019, 9:58 AM

Do I get it correctly that this is a lot about empowering people to influence their world - specifically adapt software to their needs through simple code changes?

@lydia Yes, exactly! But it also about providing the environment where people can learn everything they need for that naturally, gradually, and smoothly, and where doing it is actually fun for as many people as possible! Imagine for a moment that free software became a proprietary game (nourished by DRM) - it would be either universally panned by critics for its tutorial system, or regarded as a niche hardcore game. Then this goal would be to turn FOSS development into an "easy to learn, hard to master" type of a game.

lydia added a comment.Jul 22 2019, 3:17 PM

👍
I wonder how we can capture that in something short and sweet to give this goal a heading. I really like the current one but I am not sure it makes it easily understandable what this goal is about unfortunately.

churaev added a comment.EditedJul 22 2019, 3:28 PM

Let's also speak about the "gameplay" of desktop free software a bit...

What does it take to define a property? Apparently, it takes this (and that's Qt, on GNOME side, it's MUCH, MUCH worse, so much that it's insane):

class ... {
    /**
     * @brief Name of the object.
     * The name of the object identifies the object.
     */
    Q_PROPERTY(QString name READ name WRITE setName)
public:
    /** Gets the name of the object. */
    QString name() const;
    /** Sets the name of the object. */
    void setName(const QString &name);
signals:
    /** Emitted when the name of the object changes. */
    void nameChanged(const QString &name);
};

QString ...::name() const { return m_name; }
void ...::setName(const QString &name)
{
    if (m_name == name)
        return;
    m_name = name;
    emit nameChanged(name);
}

Really? I can neither comprehend nor understand why the free software community is willing to tolerate this... I mean yes, in the grand scheme of things this is nothing compared to the actual logic, but when you compete for time with addictive games and social media, every roadblock, no matter how tiny, starts to matter.

churaev updated the task description. (Show Details)Jul 22 2019, 3:29 PM
churaev updated the task description. (Show Details)Jul 22 2019, 8:01 PM
churaev updated the task description. (Show Details)Jul 22 2019, 8:03 PM
lydia added a comment.Aug 3 2019, 4:01 PM

Any more adaptions based on the comments and other discussions? When done please move it to the ready for voting column.

lydia assigned this task to churaev.Aug 3 2019, 4:07 PM
churaev updated the task description. (Show Details)Aug 3 2019, 11:32 PM
churaev updated the task description. (Show Details)Aug 3 2019, 11:34 PM
churaev updated the task description. (Show Details)

That's all. Moved myself to "willing to work on this", since I've been thinking about a better alternative to KSysGuard for quite some time now (the current one doesn't extract nearly as much as I'd like), that'll probably be more like "truth extractor" than "guard"... Might prove to be too ambitious for me, but if I get a prototype done, I'll post here.

lydia added a comment.Aug 13 2019, 8:49 PM

Quick reminder that there are two days left before the voting starts. Please make any changes you still want to make soon.

rempt added a subscriber: rempt.Aug 22 2019, 8:07 PM

Quick reminder that "At this point it should be obvious to everyone desktop free software will never be profitable, and thus has to rely on volunteers." is baloney. It's meaningless dribbling without any real relationship to the real world. Can we please can this nonsense? Can "churaev" please look outside their bubble and check out desktop applications like Blender and Krita, please?

Anything but single-click initial setup, reasonable download and initial build times, less than 5 second compilation and launch times, and instant access to source code and documentation of any class or function (even those in external libraries) should be considered unacceptable.

How you want to implement this? 5 second compilation looks like something *physically impossible*, because of different computers have significantly different compilation possibility and different programs have a significantly different code amount.

churaev updated the task description. (Show Details)Aug 22 2019, 11:07 PM

Fixed both issues, also hope it's OK to add an extra link at this point in time.

zhigalin added a subscriber: zhigalin.EditedAug 23 2019, 8:53 AM

If we remove all the undoable and unreasonable points we have here:

  • Add plugin support and API documentation to as many KDE applications as possible — Most probably JS. Few apps like Kate does have one but compared to Atom or VS Code this is nothing, also plugin publishing is important
  • Show links to source code of applications in Discover.
  • Show alphas, betas and nightly builds by default in Discover, allow installing them in parallel with stable versions. — Doable with flatpack (the code is already there), almost undoable with deb/rpm due to dependencies
  • Make developer documentation translatable. — Doable but it will become an outdated mess as it were in PHP (they were able to clean it up a bit lately but we have much more documentation and fewer maintainers)
  • Easier themes/widgets/scripts creation and publication in the store.
  • Generally become more new contributors-friendly

@churaev

Why is this important? As a computer-related hobby, nowadays free software volunteering has to compete with addictive games and social media

More when competing with "addictive games and social media" we're competing with Windows, Mac and proprietary applications with the same functionality as ours.
Most of the contributors use the KDE apps as their working tools and Plasma as their working desktop.

at this point it should be obvious to everyone desktop free software will never be profitable

This one is plain wrong

This goal does not propose any new options, instead it proposes making it easy to add user code to KDE software, so people can make their own options!
Really? I can neither comprehend nor understand why the free software community is willing to tolerate this... I mean yes, in the grand scheme of things this is nothing compared to the actual logic, but when you compete for time with addictive games and social media, every roadblock, no matter how tiny, starts to matter.

You see, we don't want just more contributions, we want high quality contributions.
And making a contribution for a newbie to an actively maintained KDE project is super easy nowadays if he want to put just a little effort to understand how is the build process and how we use the versioning system (git), all of this is well documented.

lydia added a comment.Aug 24 2019, 3:39 PM

Vote invite were sent to everyone subscribed to the KDE community mailing list and everyone with a developer account. Any contributor who didn't receive one please subscribe to the mailing list to not miss future announcements and send me a quick email (lydia@kde.org) and I'll send you a vote invite.

[spam comment removed by sysadmin]

lydia added a comment.Sep 9 2019, 8:24 AM

Unfortunately this goal wasn't selected as part of this round. If there is a critical mass of people who still want to push it forward please do! If support like financing a sprint is needed please reach out to the board.