@mmstick@lemmy.world

I’m a System76 engineer / Pop!_OS maintainer. I’ve been a Linux user since 2007; and Rust since 2015. I’m currently working on COSMIC-related projects.

This profile is from a federated server and may be incomplete. Browse more on the original instance.

mmstick, (edited )
@mmstick@lemmy.world avatar

As is often the case with scientific research which many people believe to be pointless, technological innovations aren’t always made by achieving the end goal, but through the technologies developed to reach that goal.

Development on COSMIC Edit has lead towards improvements to the cosmic-text library, which is used by many GUI libraries in the Rust ecosystem now. Similarly, the UX designs for the text editor improves the COSMIC interface guidelines, and puts design theories to practice. Likewise, widgets that are necessary for the editor are added to the COSMIC platform toolkit, and existing widgets and features are improved to improve the development experience for applications like this.

No one would want to build applications for a platform that lacks widgets capable of properly displaying, formatting, and editing text. Many would also find it debilitating to have a desktop environment without a text editor preinstalled. Imagine if GNOME didn’t have Gedit, and KDE didn’t have Kate.

Besides, this is a default text editor for a desktop environment. It is really not that complex. The goal is not to develop an IDE, but a text editor that anyone would feel comfortable using as their default editor on the COSMIC platform.

mmstick, (edited )
@mmstick@lemmy.world avatar

You are heavily overestimating how much effort is required to develop a text editor. It’s a single person project using components that had to be developed for use in multiple applications; regardless of whether there is a text editor or not. Components that you’d be silly not to develop through a text editor project.

You are trying too hard to justify that we not make a text editor. It feels like you don’t want us to make a text editor at all. No one is on a path to burnout. Everyone is paid a full time salary to work on their respective areas. COSMIC development is doing really well.

mmstick,
@mmstick@lemmy.world avatar

GNOME users wouldn’t be happy having to install KDE dependencies to use a KDE text editor which doesn’t have a consistent look and feel on their desktop. Same applies for KDE users.

mmstick,
@mmstick@lemmy.world avatar

COSMIC Edit is being developed by our manager through personal motivation; who also developed cosmic-text, so this is the perfect playground for simultaneously advanced cosmic-text, and developing useful real world software with it. The git diff view was not yet part of planned designs, but it took only a portion of a day to implement. It adds a useful test case for the cosmic-text library, and improved cosmic-text as a result.

We’re all paid a full time salary to work on COSMIC and Pop!_OS. Each person on the team is going to spend a full day writing software, regardless of what they’re working on, so concerns about burnout are somewhat silly. Burnout is typically caused by working overtime for extended periods of time. System76 has never required developers to work overtime to meet a deadline, and variety of workload can alleviate mental fatigue, so burnout is not a thing here.

mmstick,
@mmstick@lemmy.world avatar

In my experience, that has never been an issue with any Rust-based projects. It’s quite the opposite. 80% of time is spent completing the first 20% of the project, and then the remaining 80% is quickly finished as everything fits into place. Most of our time is spent in foundational work getting widgets created that we can use with our theme system, and then the actual implementation of the interface in the application is stupid easy.

What you describe is what I felt developing the GNOME extensions. There’s very little you can do to resolve issues that you encounter there.

mmstick,
@mmstick@lemmy.world avatar

You can start with the libcosmic repository, and the examples contained within. We’re going to work on revamping our design demo application soon, which will be a learning resource for COSMIC application development

mmstick,
@mmstick@lemmy.world avatar

GNOME was focusing on building Rust bindings for GTK for many years before Qt development picked up. The GTK bindings were usable within a year or two after Rust’s 1.0 release. Yet even today, those looking to build applications in Rust will find that GTK is the only mature toolkit right now. And if you’re doing that today, I’d recommend starting with Relm4 for the best GTK Rust experience.

Rust does not support the C++ ABI, and Qt does not provide a C interface, so much work has to be done on building the tooling for binding C++ libraries to Rust. That work is still ongoing, so some have opted to use QML instead of interfacing with Qt C++ libraries. Yet if you’re looking to use Qt or QML, you may as well use Slint instead. It’s developed by former Qt/Trolltech developers and has a similar approach as QML.

mmstick,
@mmstick@lemmy.world avatar

It uses a custom UI framework, St, using renderer primitives built into the compositor, mutter. Whereas COSMIC is using the same libcosmic library inside the compositor, applets, and desktop applications. Thanks due to our Smithay client toolkit being used to provide a renderer for iced which supports the Wayland layer shell protocol.

mmstick,
@mmstick@lemmy.world avatar

We will attempt to automatically generate themes for common toolkits, but the desktop environment has no control over how the toolkit chooses to render itself or operate.

mmstick, (edited )
@mmstick@lemmy.world avatar

Yes, the libcosmic toolkit automates a decent chunk of the process to building an application with our interface guidelines. If building an application with the cosmic::Application trait. Which includes the header bar, navigation bar, and context drawer.

mmstick,
@mmstick@lemmy.world avatar

Yes, this can already be seen when configuring a personal theme in the Desktop > Appearances page in COSMIC Settings. Compositor elements, applets, the login and lock screens, and COSMIC applications automatically adjust in realtime to the configuration changes.

mmstick,
@mmstick@lemmy.world avatar

You’re so silly. If the developer doesn’t want a themeable application, then either don’t use a themeable toolkit, or hardcode the theme so that the system theme is ignored.

mmstick, (edited )
@mmstick@lemmy.world avatar

You don’t seem to realize that this is equivalent to that. The user already made the choice to install a desktop environment which generates themes. So if you make the choice to build an application with GTK, and you want users to be able to use system themes with it, then consider it done.

To argue otherwise would make you a hypocrite. It would mean that you don’t actually want users to use themes, so you take issue with desktop environments which make it easy to do so by default. So if you want people to be able to use themes, then you shouldn’t complain when people choose to use a desktop which enables that use case.

mmstick,
@mmstick@lemmy.world avatar

I hope to see Linux brought to the Web 2.0 era with proper use of Git forges. As it is, most people won’t bother to go through the existing processes unless they’re paid to do it. Raising the barrier to entry in order to discourage low quality submissions is a poor excuse. The existing system makes it difficult to get any changes approved or reviewed with a serious eye, regardless of their quality.

mmstick,
@mmstick@lemmy.world avatar

Matrix is a better platform for realtime communication, but it has the same issue with needing an account and being difficult to search. Any discussions that take place on Discord or Matrix will be fleeting, as it prioritizes only the most recent discussion in the chat. Thus making long form discussions about particular topics impossible.

All technical discussions should be archived on a searchable forum. If you are using a source forge like GitHub and GitLab, then public discussions should take place there. There’s no better place for discussions and questions about code than in the same place where the code is hosted itself. Platform integrations make it very easy to associate discussions to commits and merge requests.

While not ideal, even hosted forum platforms like Lemmy and Reddit are still better than using a chat client. If only to serve as a platform for broader public discussions and questions. People are more likely to already have a Lemmy or Reddit account than they are to have a GitHub or GitLab account.

mmstick, (edited )
@mmstick@lemmy.world avatar

For the past two years, I have also been the lead developer of AccessKit

When COSMIC development was officially announced, we mentioned that we would be using AccessKit for accessibility support. While certain people in GNOME were spreading concern and doubts about COSMIC supporting accessibility, work was already underway to integrate AccessKit into COSMIC, successfully.

mmstick,
@mmstick@lemmy.world avatar

This is very over-exaggerated. A lot of people started with C or C++ as their first language. Both of which are significantly harder than learning Rust. In fact, I had a much easier time learning Rust than I had with Python and Java because the Rust compiler’s always had great error messages and documentation. Which then significantly boosted my ability to write C and C++. If, in an alternate reality, I had started learning programming today, I would recommend to my alternate self to start with Rust. Especially now that it’s gotten so much easier than when I had learned Rust when it was still in alpha. Error messages have gotten very detailed lately, to the point where many of them show the precise code to write to fix the error. The compiler’s also much less strict with borrowing and lifetimes.

mmstick, (edited )
@mmstick@lemmy.world avatar

I believe you’re mistakenly assuming it’s more difficult to work with than it really is. For example, imagine telling someone that pattern matching in Rust is more difficult than constructing unions and casting pointers in C. Even something as simple as string manipulation is a lot easier to do with Rust than in C or C++. I’ve worked with a number of people over the years that had little experience in programming outside Rust. It’s not that difficult.

You’re not making the strong case that you think you are. Quite the opposite. The ease of “shooting yourself in the foot” is precisely what makes it so difficult to learn. Segmentation faults and random memory corruption make it incredibly hard to get started with programming. The compiler typically providing no help at all for diagnosing where the memory handling flaws are. You need to learn how to use a debugger to get anywhere with fixing them. Many people give up when it gets too difficult to diagnose them

Rust’s constraints are very clear and concise in comparison, with a helpful compiler that will teach you how to handle memory correctly by pointing out the precise location where a borrow error occurs, and provides a suggestion for how to change your code to fix it. There’s never a question about whether a value will be passed or cloned. Cargo’s API documentation is also extensive in comparison to typical C or C++ documentation. It is a major boon for beginning programmers that the language ships a tool which automatically generates high quality documentation for every library you will ever use.

mmstick,
@mmstick@lemmy.world avatar

The Rust community is a very diverse group of people with many different opinions. It is not a universal truth that the Rust community believes Rust to be an awful first language. I’ve known plenty of people who started their careers with Rust. I started my career with Rust, too. The complaint with difficulty adapting to the borrow checker has been irrelevant since the 2021 edition of Rust. The borrow checker has become smarter about rearranging borrows and automatically tagging lifetimes in most cases. The remaining constraints that the compiler enforces are also hard requirements to learn when developing software in any other language. The same practices equally apply to all software. For example, mutating an array while iterating it in Python or JavaScript will lead to unexpected behavior. Python and JavaScript’s lack of a proper type system causes a lot of software to explode at runtime when you think inputs are always X but suddenly in one case it happens to be Y.

mmstick, (edited )
@mmstick@lemmy.world avatar

I don’t need Google to tell me what I already know since writing software in Rust for the last 8 years. It was your argument that Rust is not suitable for newbies. So if you want to change the topic to what language a person should learn, then Rust is most definitely at the every top. It’s a life-changing experience that significantly boosts your programming skill once learned. There’s a reason why it’s been the most loved programming language on Stack Overflow for seven consecutive years. Not because it’s hard, but because it’s enjoyable to learn and use. The patterns and techniques that Rust teaches are useful in every language.

mmstick,
@mmstick@lemmy.world avatar

Every Intel-based System76 laptop ships day one with Coreboot firmware preinstalled. The System76 firmware interface is also written in Rust using Redox libraries.

mmstick,
@mmstick@lemmy.world avatar

You can ask on the System76 subreddit

mmstick,
@mmstick@lemmy.world avatar

The next Pop!_OS release will use COSMIC as its desktop environment instead of GNOME. There will be an upgrade path, same as in previous releases.

mmstick,
@mmstick@lemmy.world avatar

This year? No. We are still working on achieving our Alpha 1 milestone.

mmstick,
@mmstick@lemmy.world avatar

We have been developing our own toolkit, libcosmic, which is being used for everything. From the lock screen, compositor, applets for the desktop, and the applications themselves. There is an examples directory for third party developers to learn hope to build their own applets and applications with.

mmstick,
@mmstick@lemmy.world avatar
  1. Yes
  2. That depends on those other distributions willingness to package it for their distributions.
mmstick, (edited )
@mmstick@lemmy.world avatar

The compiler enforces “aliasing XOR mutability”; utilizes “move semantics”; has a “borrowing and ownership” model; and requires the programmer to tag their references with “lifetimes”. Array accesses are checked at runtime if they cannot be guaranteed safe at compile-time. Variables passed by value (moved) cannot be reused. Variables cannot be moved or mutated if any borrow to them exists. You may either have only one mutable borrow, or many immutable borrows, but never both. Therefore you cannot mutate an array while iterating on it, and you cannot have two separate unchecked references to the same array. Every function or type that accepts a borrow must be able to annotate the lifetimes of references to ensure that references are always dropped in the correct order to prevent dangling references. Rust requires developing software with discipline using patterns that satisfy all of these constraints.

mmstick, (edited )
@mmstick@lemmy.world avatar

Not sure how that would be the fault of customer service. There were a lot of component shortages during the pandemic. Suppliers often discontinued components in the middle of production because they couldn’t source the chips required. Batteries also require chips to control their charging thresholds and voltages.

mmstick, (edited )
@mmstick@lemmy.world avatar

It’s not as simple as you think it is. First, we use Plausible instead instead of Google Analytics, so tracking data is not being given to Google. If the choice was purely up to System76’s web team, use of Google services wouldn’t be required. However, you’ll be hard pressed to find any online store that accepts online payments without a captcha service, because most payment processors require it. System76’s payment processor also requires it, and will not allow you to substitute your own solution or bypass that requirement. Same as said here: lemmy.world/comment/3137069

Customer services and other web-facing frontends are also a constant target of attacks, so a captcha service is required.

mmstick,
@mmstick@lemmy.world avatar

I personally think they should just focus on Pop_OS! .

Pop!_OS does not generate any revenue. It would cease to exist without System76 hardware sales.

mmstick,
@mmstick@lemmy.world avatar

It’s not a matter of bundling, but because virtually every online payment processor requires it.

mmstick,
@mmstick@lemmy.world avatar

They are not “resold”. The laptops are custom-ordered and manufactured in Taiwan. The same as virtually every computer you buy. Taiwan would be very unhappy to see comments claiming they’re Chinese.

mmstick, (edited )
@mmstick@lemmy.world avatar

not using tracking scripts

System76 uses Plausible, not Google Analytics. Google is only required for Captcha.

hCAPTCHA

This is not any better from a privacy perspective.

puri.sm

Purism also uses the same captcha services… Honestly, all of your comments here sound like a poor attempt at Purism promotion. You’ve been repeatedly spreading misinformation while simultaneously promoting Purism in each comment here.

mmstick, (edited )
@mmstick@lemmy.world avatar

Customer services and other web-facing frontends are a constant target of attacks, so a captcha service is required. This whole comment is hyperbole, honestly.

mmstick,
@mmstick@lemmy.world avatar

Read that document a bit closer. They recommend Google reCAPTCHA.

mmstick,
@mmstick@lemmy.world avatar

The NVIDIA driver in Pop!_OS is currently 535.98. I’ve been using a RTX 3080 with Pop!_OS since the pandemic lockdown.

mmstick,
@mmstick@lemmy.world avatar

Are you using sudo? The pipewire/pipewire-pulse/wireplumber services only exist for users.


<span style="color:#323232;">systemctl --user enable --now pipewire pipewire-pulse wireplumber
</span>

Make sure that the services are not masked, and use apt reinstall pipewire if necessary.

mmstick,
@mmstick@lemmy.world avatar

Are there any logs from startup indicating a potential issue here? You can see all warnings and errors since boot with journalctl -p 4 -xb.

mmstick,
@mmstick@lemmy.world avatar

I use btrfs only for secondary and external drives, while keeping the main system on ext4.

mmstick,
@mmstick@lemmy.world avatar

There’s no stutter in practice. It’s a recording artifact.

  • All
  • Subscribed
  • Moderated
  • Favorites
  • random
  • uselessserver093
  • Food
  • aaaaaaacccccccce
  • test
  • CafeMeta
  • testmag
  • MUD
  • RhythmGameZone
  • RSS
  • dabs
  • KamenRider
  • TheResearchGuardian
  • KbinCafe
  • Socialism
  • oklahoma
  • SuperSentai
  • feritale
  • All magazines