Posted
over 3 years
ago
Near the end of 2020, I put a lot of thought into reevaluating my business’ value proposition, strategy, and processes. It’s a good thing I did that back then, because 2021 was quite different from 2020; I had much less time to “deepthink”, and I
... [More]
spent a majority of 2021 on an intense work treadmill, which led to me micro-burning out three times in the process. Also, guilt about feeling like I’m not contributing to open-source enough.
In that year, I also noticed a lot of “shortened fuses” around me—a pervasive edginess throughout society—along with bully-type abuse in various places. It’s an interesting story to analyze from an experiential and psychological standpoint, but I’ll cover that in a separate blog post sometime, to keep this one simple (so it takes roughly 8 minutes to read).
For now, I’ll focus on the usual short summary of my work + personal + open-source discoveries and activities from 2021, without too much emphasis on the deeper chaos going on in that year.
Professional life year overview
My then accountants suddenly told me, in January of that year, that they would no longer be serving small businesses for income tax reports, and thus “We’re dropping you, good luck!” 🤯 I then spent weeks exhaustively searching and evaluating accounting firms to find a new partner, and eventually found a top-notch accounting duo to help me with income tax reports in the long term. I asked them hardball questions on their career objectives and whether/when they would drop me like a hot potato, and I told them I couldn’t go through another taxheartbreak. Now that I’ve found you, you better stay with me, nya?
Worked for a surprising number of clients throughout the year (including a couple NGOs, as you can see in this case study about an in-depth technical & financial feasibility study and that case study about a naming/branding consulting project). I’ll keep it at that for now, again to keep this blog post simple.
Throughout the year, I (re)built a lot of websites for myself, and realized again just how much time & effort this requires. Since I timed myself, I now have some quantitative insights to share with all of you wondering, “How Hard Can It Be?™”; see my “How long does it take to create a website? (and why your FLOSS project doesn’t need one)” article.
Publicly unveiled Regento, after having finally created its website, at the same time as I was doing some pretty intensive consulting work in April (y’know, when things happen “all at the same time”…), hence the 2nd micro-burnout of the year.
Reworked the idéemarque branding agency website contents entirely during the summer. Did not blog about it until now. The design isn’t especially fancy/flashy, but it’ll do, I guess.
Quietly created Atypica’s photo portfolio in the fall season. Did not blog about it until 2022.
Personal life year overview
Summer 2021, with the arrival of vaccines and nice outdoors weather in the North, felt exactly like this Tokyo-III scene:
Yes, I know, this is the scene where everything feels “normal” before shit hits the fan again. The parallels are uncanny.
You might remember that I tried a kratky hydroponic indoors garden in 2020, and had no luck with tomatoes. In the winter/spring of 2021 I thought, “Perhaps I need to try my luck again with a regular self-watering soil planter, and lots of artificial light”. Well, I did: since September 2021, I can confirm that even with that kind of setup and a 4′ vertical fluorescent light to supplement the winter’s natural light, the tomato plant does not flower (and thus does not fruit), and barely survives better than the previous kratky hydroponic experiment; possibly its slightly better mildew resistance this time around is due to the artificial light, but I am not sure.
Made my Brother multifunction printer’s scanner work again with Linux, by setting up a dedicated machine with lots of ugly hackery to make it work. Now it works, let’s not ever touch it again for the next five years.
German cockroaches got in (via a package I brought inside) during the summer. It creeped me the hell out. I went through some very extensive research on how to get rid of them effectively and without unintended side-effects. Long story short, I killed them all without using chemicals, but that messed up my quality of life for some months, as it definitely didn’t help my sleep quality. Spraying pesticides or using tape is harmful and pointless; the real trick is to use a very thinly sprayed fine layer of diatomaceous earth (so that it is invisible), lay a couple of boron-infused gel baits (Advion™ is impossible to find up here) in every corner of every baseboard near the nest, all while starving them from any food or water, then… waiting and having a lot of patience and trust in that method. Also, always having a vacuum cleaner on hand (I can confirm that they do not survive a cyclonic canister) and manoeuvering quickly to catch them late at night to reduce their numbers. It took two months (or 4 months if you take into account the last two months of “zero encounters”), and it was nerve-racking. I learned a lot in the process, and they are certainly never going to be an issue again.
I probably spent 30-60% of the year away from home because of the constant hammering most days. Did you know that a set of one 8-stories-high building and one 20-stories-high building spanning a whole street requires about 2000 piles for their foundations? It took them roughly 12 months to drive all those piles into the ground (it didn’t help that the GC was using only one or two pile drivers at a time).
Pro Tip™: this song really helps to cover it all up.
A most welcome visitor
My longtime friend Étienne suddenly came back to visit Canada again for the first time in two years. He was originally too shy to ask for my hospitality, so I insisted to have him as my honored guest and to host him for the whole 3 weeks of his stay in Montréal. Being able to spend so much time with him is a privilege I have not had since, I think, fifteen years (the previous time was probably 2006). The timing was perfect; after a whole year of stress and work that had left me eager to have some sort of change of pace in December, this was my mood in anticipation of spending time with him again:
We had fun fixing lots of stuff, and simply being care-free geeks on a vacation:
I helped him livestream a wedding, with some of my studio equipment and the wonder of OBS Studio. I also took a couple hundred photos of the event.
He brought me a bunch of VoIP deskphones for my office, originally taken from an office in Tokyo. I’m now ready to open up a call center or something.
He brought me a replacement Nintendo Gamecube controller, again from Japan. Now we can honestly play Super Smash Brothers Melee again!.. if only having multiple guests was still a thing nowadays.
He completely tore down, cleaned and reassembled my projector (that I had föked up a year prior by accidentally blowing some dust onto the projector’s DMD chip, and that I did not have the time nor courage to fix by myself until that point). I’d like to think I helped with this deep-cleaning process as an assistant, but frankly he did all the difficult work, as you can see:
Étienne starting disassembly
Optical block (sensor and lens assembly) taken out
Lens taken out
Separating the DMD chip from its PCB
He contaminated me with the wonder that is the “future funk” music genre, particularly Moe Shop‘s music.
He helped me make my other Brother printer work over the network.
I had never had the time and energy to mess with my router in the past year after its initial setup, so he flashed a new version of OpenWRT and finally figured out how to make multi-frequencies multi-SSD networks work seamlessly.
More importantly, it gave me the opportunity to have lengthy discussions with him and see what projects he’s been working on, and see how he’s been doing mentally, physically, and in terms of life trajectory. Being oceans apart for years meant that it was more difficult to check on friends’ well-being, so I welcomed the opportunity to catch up.
Open-source findings
Did you know that the “Gnome” icon theme still exists, and is not the same as the “Adwaita” icon theme?
I proposed an epic wallpaper concept for Fedora, but it went nowhere, much to my surprise.
I found the sudden disappearance of the GNOME Swedish Conspiracy to be an unacceptable loss to our shared cultural heritage; therefore I filed this formal inquiry into the matter, issue number 1.
Successfully lobbied for Planet GNOME to properly support Unicode blog posts, including emojis. You’re welcome 😇
Filed a couple of Jitsi UX issues from my observations, during the pandemic, of computer-illiterate users’ difficulties with this open-source WebRTC videoconferencing app. I’m happy to see now that many of them have been fixed.
Was pleased to see XFA PDF forms now being supported in Firefox. Look forward to my blog post on March 9th to learn about the possible implications.
Discovered that you can actually export addressbooks to .CSV in Evolution, but that capability is not presented in the GUI and you really need to know it exists at all.
Want to contribute an easy UX refinement to Evolution’s mail composer GUI? How about modernizing the hyperlinking dialog using GtkPopover? Check out the other newcomers-friendly tasks too.
Heads up all Evolution die-hards who would like to escape Google Calendar but still can’t because of visual info density: I’ve now re-filed my old bug report on the matter: “Upcoming weeks” / “Next 3 weeks” future events view mode. Give it a 👍 or consider contributing a patch if you’re more competent than me (as you most certainly are).
Suggested my amazing, revolutionary™ timeout-based search architecture for GTG. The results, as seen in GTG 0.5 and newer (such as 0.6, planned for release in the coming days) is a dramatic improvement in performance; search takes 1-3 seconds instead of 17+ seconds in heavy data sets.
I made the same recommendation in Simple Tab Groups for Firefox and the results were dramatic, as enthusiastically tweeted. You’re welcome.
As tweeted: I made the same live search method recommendation for Nautilus, the GNOME files manager. See this ticket (and please contribute a patch to the project, if you can).
As tweeted: I also filed a ticket to make the same suggestion—use a timeout-based search-as-you-type approach—for GTK’s FileChooser widget. I’m just wildly guessing, but this might be a reasonably easy-enough bug for a newcomer to contribute a patch for, but at the same time, this is GtkFileChooser we’re talking about, you’re certainly bound for technical surprises (but a great learning opportunity).
Miscellaneous findings
Realized part of why I’ve accumulated such a huge backlog of subjects to blog about here over the years, with so few actually getting published: this heat matrix of mine shows that the technical but low-impact topics are endless! High technicality = high accuracy and documentation requirements, a tremendous investment of time (each of my blog posts typically takes multiple days of work); if there is no clear impact/reward, then there is little incentive when there are so many other imperatives in life.
Realized that 78% of the USA’s cash (of all time) appeared out of thin air within the month of May 2021, and I still don’t understand how this stock market bubble that has been going on since 2011 keeps going without popping, with all that’s been going on in 2020-2021. Markets sure can stay irrational longer than we can stay solvent or sane.
Invented a method to reinforce cheap leatherette keychains with zipties.
Found some rusted, abandoned cast iron cookware in my building’s recycling room, and embarked on an adventure to learn all about cast iron and how to properly season and maintain it. With my eight back-to-back grapeseed oil seasoning passes in the oven, I think I did a pretty good job at seasoning them. So I guess I’m part of the Cast Iron Cult now. Considering that properly seasoned cast iron is naturally non-stick, who needs Teflon?! Besides, you can never have too many mêlée weapons. Even the Government of Canada basically says that cast iron and stainless steel are probably the only things that you can really trust (from a health/safety perspective)…
Discovered that you can sanitize (and endlessly reuse) N95 and surgical face masks, by using an electric pressure cooker (such as an Instant Pot) as a dry heat autoclave.
For all you nerds whose glasses keep slipping off your nose: binder clips! (no, not really… turns out there are silicone ear retainers out there)
[Less]
|
Posted
over 3 years
ago
Update on what happened across the GNOME project in the week from February 18 to February 25.
⠀
A message from the TWIG team
This issue takes place at a time when a war has broken out in Europe. In the current time we receive horrific news from
... [More]
Ukraine.
We stand in solidarity with all people affected by this terrible war.
🇺🇦
Core Apps and Libraries
WebKitGTK
GTK port of the WebKit rendering engine.
adrian says
WebKitGTK has received two releases recently, 2.34.5 and 2.34.6. Both contain a number of fixes for security issues—one of them for remote code execution, known to be exploited in the wild. We have also solved touch input handling, made accessibility work again when the Bubblewrap sandbox is in use, and improved video codec selection with GStreamer 1.20.
GNOME Builder
IDE for writing GNOME-based software.
gwagner announces
GNOME Builder contains now templates for Adwaita, Gtk4 and Gtk3 for C, Rust, Python, Gjs and Vala. In order to make the templates easier to find we increased the initial size of the window. Besides of that we fixed several crashes related to terminal spawning in Builder.
Third Party Projects
Michael Terry reports
The simple math logic game Multiplication Puzzle got a new port to gtk4 and libadwaita, and is now available on flathub!
Mazhar Hussain says
Announcing Login Manager Settings (gdm-settings): a ‘Settings’ app for GNOME’s Login Manager. It can change a lot of settings including shell theme and wallpaper of the login screen. It does not have any pre-built packages yet (except for an AppImage without any dependencies and AUR packages).
Portfolio
A minimalist file manager for those who want to use Linux mobile devices.
Martín Abente Lahaye says
After a few months of slow but steady progress, Portfolio 0.9.13 is out 📱🤓! This new release comes with the ability to fully manage external devices, improved feedback and responsiveness when copying big files to slow devices and many bugs fixes.
https://blogs.gnome.org/tchx84/2022/02/20/portfolio-0-9-13/
Phosh
A pure wayland shell for mobile devices.
Guido reports
I’ve tagged phosh 0.16.0 with nice fading labels in the overview (by Adrien), more style updates by Sam, a keypad that can shuffle the buttons around and a bunch of fixes.
Your browser doesn't support embedded videos, but don't worry, you can download it and watch it with your favorite video player!
Documentation
Emmanuele Bassi reports
The “Getting Started” tutorial for newcomer app developers on the GNOME Developer Documentation website now has code examples in Python alongside the C ones.
GNOME Shell Extensions
Romain says
I ported my Night Theme Switcher extension to GNOME 42. It brings scheduling abilities to the integrated dark mode and adds a way to set the built-in light and dark desktop background images.
Alex Saveau says
Announcing Gnome Clipboard History (GCH): a rewrite of Clipboard Indicator with vastly improved performance, bug fixes, and new features. What’s the big innovation? GCH uses a compacting log and linked list to store data, enabling minimal O(1) performance for almost all operations. If you want all the details, I wrote up a blog post about it here.
That’s all for this week!
See you next week, and be sure to stop by #thisweek:gnome.org with updates on your own projects! [Less]
|
Posted
over 3 years
ago
The 2019–2020 period was a long R&D cycle for me, with a whole herd of yaks to shave, however it did give me new tools and abilities, such as the capacity to rapidly develop modern-looking websites without hand-coding them nor spending hours
... [More]
fruitlessly searching for—and being disappointed by—”suitable” themes.
One might wonder why then, with those upgraded skills, I didn’t seize the opportunity to make a new website for GTG or other open-source projects that could benefit from fancier marketing.
The short answer is, even if my tooling and technique have improved, it’s still a metric crapton of work. It might seem easy (“Use Hugo!”, “Just slap a couple of pages together!”, etc.) but there’s much more to building a website than just the technical design and coding (or integration) aspects. This article provides you with an idea of the amount of time it takes to plan, write, design and build a “reasonably simple” website with a dozen pages or so.
As a case in point, the website of my Montreal branding agency has been out there for many years, but right up until 2021, it was all hand-coded—and therefore, not really maintainable nor scalable to a team. One of the things I did in 2021 was to completely revamp it, by:
Switching it to WordPress instead of my own static HTML + CSS + PHP glue system I had perfected since the mid-2000’s (if you find that blasphemous, have a look at why I chose WordPress over other solutions for my business websites).
Rethinking all the contents.
Designing a basic layout to hold it all together, because frankly (and somewhat ironically) we didn’t have time to be obsessing about the visuals here.
Overhauling (or creating) a website is never a simple affair when you want to do things right for your project or business. Planning, writing & designing two of my new websites in 2021 required an investment of well over 230 hours of work. Among those were roughly 112 hours of work (at least, those I remembered to track) spent on the idéemarque website specifically, broken down roughly as follows:
22 hours preparing a strategic positioning & structure document
20 hours writing the new website’s “core pages” text, in two languages
20 hours integrating the text into the website and laying out the pages’ overall design
40 hours writing and laying out the 4 initial case studies, in two languages
?? hours setting up and integrating an email notifications (newsletter) system, for those who want to know when a new article comes out
9 hours (so far) sketching and drawing team members, and researching possibilities (a story for another day)
112+ hours, for a 18-pages website, is actually pretty damned fast: business websites typically tend to take much more time than that. This was made possible by circumstances rarely found with client work: I knew exactly what I was doing (from a technical standpoint), where I was going (from a marketing standpoint), and what I wanted to put in there (from a copywriting standpoint). Your mileage will almost certainly vary, especially if working with a large corporate team or committee where you can’t just directly pour all the content straight from your mind.
Those numbers do not include the R&D (and infrastructure maintenance) I did in previous years to actually get to the point where I could efficiently build such websites.
And, y’know, once you have a website out there, you need to feed it with new content, and to announce it. I spent an unknown amount of hours (probably well over 20-40; forgot to track them) planning and working on draft email announcements that kept getting outdated as the months went by—because I kept having to deal with emergencies, and because I kept moving the goalposts of what constituted a “good enough” website to write home about (nothing is more dangerous than “oh, one more thing…”). Me, a perfectionist? Nooooo.
So yeah… this is why I’m no longer spending that kind of time and energy building websites for my open-source projects, especially as FLOSS projects have contents that need to change much more frequently than most small-to-medium business websites. In the case of GTG, while I hate GNOME’s MoinMoin wiki, it Does the Job™ and it’s Good Enough to stay as it is; it’s still easier to maintain than a website. So y’know what? Your open-source project doesn’t need a website, unless it’s also a business or charitable organisation. [Less]
|
Posted
over 3 years
ago
Today we are publishing a “release candidate” version of Getting Things GNOME 0.6. You can either try it out directly from the git master version (by running launch.sh; see the general instructions), or from the testing package available on
... [More]
Flathub’s “beta” repository, separately from the standard stable flathub/flatpak release you may already be running. To run it as a flatpak, simply run these two commands:
flatpak remote-add flathub-beta https://flathub.org/beta-repo/flathub-beta.flatpakrepo
flatpak install org.gnome.GTG
…and choose the flathub-beta as the repository source to install GTG. Note that for some technical reasons, it will still say it’s version 0.5 if you look in the About dialog, but it really is 0.6 behind the scenes.
This release candidate is supposed to be stable and regressions-free, and is intended to:
Give translators an opportunity to update their favorite language(s) before the final release. You have roughly a week where you can voice your interest and provide us with an updated translation, if desired. The translation template (.pot file) has already been updated in the git version.
Give the opportunity for users to feel confident in trying out the current git version (or flatpak package above) and to easily check that everything is OK (and if not, report bugs).
This is the last call! If you haven’t tested out the git version recently, now would be a great time to test the release candidate and ensure there are no last minute issues we might have overlooked. If no showstoppers/regressions are found, we expect to release GTG 0.6 around the end of the month (roughly in a week). [Less]
|
Posted
over 3 years
ago
To some degree, the stuff below is one of those “I’m writing this down somewhere so I don’t forget it myself” topics, of which I have [checks notes…] about fifteen draft posts currently gathering electron dust. But it’s also potentially of interest
... [More]
to one or two other people, so here we are.
For background, if you’ve been lucky enough to not hear about it before, I’m currently in a postgraduate research-degree program in typography. A lot of my research work day-to-day involves consuming & tracking info from printed documents. Despite what Silicon Valley’s OLED-Industrial Complex tells you, printed matter is not a low-quality substitute for digital ideals; it’s its own thing, and it comes with it own challenges when you use it as data.
And that’s a constant source of headaches. So I’m going to jot down some of the process and the challenges / open questions that I run across regularly in my research days; if I do that I might have to reinvent those wheels less often, and there’s always the chance that some other goofball out there will see it and find something helpful.
Le grand scheme
So here’s the rough picture. Ideally, I’d like to have all the source material that I collect accessible in the same place, so when the occasion arises I could sift through it in a couple of different fashions:
Full-text searches — e.g., grabbing all the material that uses the term “sector kerning”, for some comparative reason
Topical tagging — letting me attach my own labels to things, even if the label isn’t a word that’s found in the source doc, such as “disputed” or “real-time”
Tracking usage — I ought to know if I’m actually using a quote from something in some written material. Technically that could be a tag, but it’s a little more involved.
For digital sources, this isn’t too terrible. Digital-original documents are pretty searchable from desktop or CLI tools (although you need a good directory structure). You definitely need to actually grab downloaded page-snapshots of web sites, though: people rearrange their personal and institutional pages ALL THE TIME; they bork up the URI structure and don’t bother to fix it, they change their domain name, etc.
You also have to actually fork (not star…) GitHub repositories and download them, cause people take down that stuff, too. And you cannot rely on the Internet Archive to Wayback-machine everything. It doesn’t always work, and the crawls stop at a finite depth. Pretty famously in the type world, the Typedrawers web forum got taken offline a few years ago, erasing literally decades of industry discussion. The site owners never got around to restoring it. But even before that, they halfheartedly converted a bunch of the threads to some new CMS, which broke (a) every Wayback Machine link and (b) broke every internal URL in every thread and (c) broke every “previous page | next page” link in every Wayback link that did exist. They still have not been brought to justice.
Anyway, I digress. That minor effort works fine for digital originals. It gets a lot harder for printed sources. This is where a real database-driven tool becomes mandatory. I’ve been using Zotero, which is fine as it goes although it has plenty of pain points. It is, at least, something that you can run entirely on your own machine (although they do try to rope you into using their hosted service, which you have to pay for if you go over the comically-small limit). And, obviously, it’s FOSS and runs on Linux machines.
The gist is, however, that you import every item into the Zotero library, and it handles all the metadata-level stuff at the top level. For each item you can store any number of files or notes. Great for having a source PDF, a translation, a set of notes, and an alternate version of the source you find months later with slightly different wording. Hooray.
A couple of things become tricky about getting the paper original into Zoteroized form. Here’s how I break it down:
If I have a scanned version of an article or other published document, it needs to be OCRed before the text is available for Method 1 (full-text search). Super hard.
If I have a LONG FORM physical book, then I can’t scan the whole thing and probably wouldn’t want to. In fact, it might not even be possible to, if it can’t be layed out flat.
If I have an un-published source, such as some personal archive material or correspondence, then I have to wrangle all the problems of the first bullet point but also manually do all of the metadata-like stuff, because Zotero cannot handle it at all. And it usually has to be photographed or manually transcribed like the stuff in the second bullet point.
Seems easy enough.
But there’s another dimension to look at.
The Secondth Dimension
That bullet point above really just looks at the presence of the item: do I have a scan? / do I have the physical item only? / do I not have the item at all, and have to make do with temporary access to it?
The other thing I’ve found is that you have to develop distinctly different workflows based on the potential uses of them item, after it gets into the digital system:
Things that you need to quote. This needs to be accurate. If it’s a digital original, great. If it’s a good scan, also reasonably doable. If it’s unscannable, that’s tricky: e.g., I need to just capture (accurately) the passage that I would / could quote, and link that as a “note” into the Zotero metadata-record for the item. That’s hitting #1 and #3 on the above numbered list in particular. Ideally I could photograph a passage and have that OCRed, rather than me re-typing it by hand.
Things you need to reproduce an image from.
Things you need to get an image from, but which you cannot reproduce the image. Generally that’s a licensing issue. People want compensation for almost any image that gets reprinted; for quoting a document there is a really high threshold to reach before that becomes a concern.
So that’s kind of a 3×3 matrix. And I keep saying “scan” in the generic sense, but that also doesn’t quite capture all the possible issues. For example, you could download/receive-from-a-third-party a digital original does not have text embedded, possibly making it essentially a PDF with just a TIFF image of the page in the middle. And anything that you photograph or scan yourself can have all kinds of image corrections needed, such as skew or 3D warp (for the latter, consider the curvature of a book page when you’re holding down by the spine over a scanner). Those things can affect whether or not OCR is even possible. Actually, that can happen with material you get from elsewhere, too….
Then there’s all the problems of OCR itself: error rate, whether or not you can edit and correct errors, and so on. Plus whether or not you can OCR complex layouts, in more than one language. Luckily I’ve only had to deal with English + German + French so far, but it’s not nothing.
Finally, you get to the big weirdnesses that come with doing all this document processing for typography material. For example, typography articles often have lots of illustrations … of text. As is letters. And words. Even whole lines and paragraphs. Which need to be preserved as images, not converted to OCR. Or maybe you do also want them to be OCR; you might remember that an illustration was of the word “NAVVIES” and want to search for that.
Those are the pieces. You get varying workflows out of each of those combos, multiplied (possibly) by some of those later quirks. Anyway, more on that to come in the next post; like I said above this is mostly me jotting down things to record the workflows, but I’m trying to slice it into thinner chunks because otherwise I never finish writing the posts.
If you’re curious about any of the details, they’ll be in a follow-up. FORTUNATELY, if you’re a normal person and not, therefore, interested in the details, then at least now you know what I’m titling this little series of posts — so you can skip the next one with a maximum of comfort and ease. [Less]
|
Posted
over 3 years
ago
After a few months of slow but steady progress, a new release of Portfolio is out . This new release comes with the ability to fully manage external devices, better feedback and responsiveness when copying big files to slow devices and many bugs
... [More]
fixes.
By popular demand, the main addition to Portfolio is the ability to fully manage external devices, this means; detecting external devices, unlocking encrypted devices, mounting and ejecting. For this release, I focused on getting the udisks2 integration right, but there’s still room for improvement on the UX department. A shout out to @ahoneybun for testing my two previous (and unsuccessful ) attempts to implement this.
Another noticeable improvement is that now copying operations display progress feedback on individual files. Previously, there wasn’t any, which led to the impression of “no feedback at all” when copying big files.
A related improvement is that copying operations now do a better job displaying the real progress, specially when copying files to slow external devices. No more suspiciously fast copying operations, which later turn into several minutes of undetermined wait time when ejecting these devices.
On the bug fixing department, hidden Trash folders are no longer created on external devices until they’re really needed, send to Trash button won’t show on devices with no Trash folder, Portfolio no longer crashes on the Sway tiling compositor, broken symlinks are now handled properly and the same file size unit is used consistently through all the application.
Moving forward, for the short term, I want to improve the external devices management UX and give these beautiful GNOME 42 folder icons a try . For the long term, I would love to port this application to GTK4 and Libadwaita.
Last but not least, special thanks to @lqs01, @AsciiWolf, @Vistaus, @eson57, @cho2, @rffontenelle and @carlosgonz0 for keeping their translations up to date, and to @craftyguy for helping me with general testing.
[Less]
|
Posted
over 3 years
ago
by
[email protected] (Jussi)
A recent trend in open source projects seems to be to avoid releasing proper release archives (whether signed with GPG or not). Instead people add Git tags for release commits and call it a day.A long and arduous debate could be had whether this is
... [More]
"wrong", "right" and whether Git hashes are equivalent to proper tarballs or not, or if --depth=1 is a good thing or not. We're not going to get into that at all.Instead I'd like to kindly ask that all projects that do releases of any kind to provide actual release tarballs for the following two reasons:
It takes very little effort on your part.
Proper release archives make things easier for many people consuming your project.
This makes sense just from a pure numbers game perspective: a little work on your part saves a lot of work for many other people. So please do it.What about Github automatic archive generation?Github does provide links to download any project commit (and thus release) as an archive. This is basically a good thing but it has two major issues.
The filenames are of type v1.0.0.tar.gz. So from a file name you can't tell what it contains and further if you have two dependencies with the same version number, the archive files will have the same name and thus clash. Murphy's law says that this is inevitable.
The archives that Github generates are not stable. Thus if you redownload them the files may have different checksums. This is bad because doing supply chain verification by comparing hashes will give you random failures.
The latter might get fixed if Github changes their policy to guaranteed reproducible downloads. The former problem still exists.A simple webui-only way to do itIf you don't want to use git archive to generate your releases for whatever reason, there is a straightforward way of doing the release using only the web ui.
Create your release by tagging as usual.
Download the Github autogenerated tarball with a browser (it does not matter whether you choose zip or tar as the format, either one is fine).
Rename the v1.0.0.tar.gz file to something like myproject-1.0.0.tar.gz.
Go to the project tags page, click on "create a new release from tag".
Upload the file from step #3 as a release file.
[Less]
|
Posted
over 3 years
ago
Update on what happened across the GNOME project in the week from February 11 to February 18.
Core Apps and Libraries
Chris 🌱️ reports
Evan Welsh has ported Fonts and Weather to GTK4 + libadwaita. The Fonts port reworks how we load font previews
... [More]
, allowing us to recolor them so that they work with libadwaita’s dark style preference.
Bilal Elmoussaoui reports
In the next GNOME 42 release Clocks, Maps, Calendar & Weather will be using the location portal when sandboxed. Which means they can no longer access the location without the user’s consent
GNOME Shell
Core system user interface for things like launching apps, switching windows, system search, and more.
Alexander Mikhaylenko announces
Light/dark preference now uses a uniform crossfade transition
Your browser doesn't support embedded videos, but don't worry, you can download it and watch it with your favorite video player!
Ivan Molodetskikh says
The new GNOME Shell screenshot UI has landed in full for GNOME 42. Since the last update, a new screen recording indicator has been added to the top panel, which shows the recording duration and lets you stop the recording in a single click. The UI itself has seen a few design tweaks: for example, the close button has moved to the top-right corner of the panel. Additionally, the icons on the screenshot UI notifications have been refreshed. Of course, there were a few bugfixes, too: overview drag-and-drop now works again during screen recording, and the screenshot UI will automatically close when the screen is locked from inactivity.
Your browser doesn't support embedded videos, but don't worry, you can download it and watch it with your favorite video player!
Circle Apps and Libraries
Webfont Kit Generator
Create @font-face kits easily.
Rafael Mardojai CM announces
Webfont Kit Generator now includes a tool that allows you to download and import fonts from Google Fonts using a CSS API url, handy for self-hosting them.
Third Party Projects
Forever announces
Today I released Random 1.2. It completely changes the UI of the app to fit current UI guidelines. You can download it on Flathub.
Bilal Elmoussaoui reports
I have released flatpak-vscode 0.0.17
New output terminal for less output delay and working terminal colors
New status bar item for current build and run status
New rust-analyzer integration to run runnables within the sandbox
Improved build and runtime terminal integration
Trigger documents portal in activate (May still be problematic when other extensions, like-rust-analyzer, startups earlier)
Display the “Flatpak manifest detected” dialog only once
Huge thanks to SeaDve for most of the changes that landed this release!
Telegrand
A Telegram client optimized for the GNOME desktop.
Marco Melorio announces
It’s been a while since I last wrote about Telegrand, but the development hasn’t been stopped at all! Here’s a short list of what’s new since the last update:
Implemented chats and contacts search
We now show more information in the chat list, like the mention badge and draft message
We now support the photo message type
Added multi account support (thanks to Marcus Behrendt!)
General improvements to the style
Documentation
Emmanuele Bassi says
I have added a “Getting Started” tutorial to the Developer Documentation website; you can follow various lessons to go from the basic GNOME application template in Builder to a working simple text viewer. At the end of the process you’ll know how to load and save files asynchronously, how to update your UI in response to changes, and how to save and load settings: https://developer.gnome.org/documentation/tutorials/beginners/getting_started.html
sonnyp says
The GNOME developer documentation now contains JavaScript examples. Here is the merge request.
gtk-rs
Safe bindings to the Rust language for fundamental libraries from the GNOME stack.
Julian Hofer announces
I’ve refactored the gtk4-rs book and touched most chapters during this process. The biggest changes are:
The signals chapter includes the new glib::closure_local! macro.
The interface builder chapter has been renamed to composite templates
The composite templates chapter dropped the section aboutgtk::Builder in favor of introducinggio::Resource.
The composite templates chapter app uses the newly introduced support for template callbacks.
The second todo app chapter now uses automatic resources to add the shortcut window.
The second todo app chapter usesgio::Settings instead ofserde_json to save its state.
That’s all for this week!
See you next week, and be sure to stop by #thisweek:gnome.org with updates on your own projects! [Less]
|
Posted
over 3 years
ago
In the code review cycles for some of the PWA project PRs I’ve put out, the question has been raised about the proper way to version D-Bus APIs, since I am adding a new D-Bus API to GNOME Web. I learned a couple things and thought I’d share in case
... [More]
it’s useful.
As D-Bus APIs evolve over time and new functionality is added or existing functionality is removed, in most cases you don’t have the luxury of ensuring that all clients are updated in lockstep, so it’s important to think about how existing clients can continue to work without modification, and how clients which are aware of the new functionality can take advantage of it. So there are two types of compatibility to worry about:
Backwards compatible changes to the API, which are changes that do not cause existing client code to break. For example, if a method accepts a dictionary of options, each a string key mapped to a value, adding a new supported option key does not cause existing clients to stop working; they just won’t be able to take advantage of the new option. That’s assuming the behavior of the D-Bus service with the new option omitted is the same as it was before the new option was added.
Backwards incompatible changes to the API, which are changes that would cause existing client code to break if it’s not updated. For example, changing the name of a method, changing the parameters of a method, or removing a method.
The de facto way to handle backwards compatible API changes, at least in xdg-desktop-portal as well as org.gnome.Mutter.ScreenCast, is to increment an integer Version property when such changes are made (in the portal code the property is not capitalized but the spec recommends capitalization). This allows clients to check at runtime what functionality is available, and only make use of new functionality when the running service has it. This is especially useful for Flatpaks since a Flatpak app needs to be able to run regardless of the version of xdg-desktop-portal or its backends installed on the host; a major benefit of Flatpaks is that they don’t have version requirements for software installed on the host system. This scheme seems to work pretty well for the portal code and its many clients. Here’s an example of how to check the available version of a portal interface in C code.
Per the D-Bus API Design Guidelines, the way to handle backwards incompatible API changes is to leave the existing interface as it is, continue to support it as before, and make a new interface with an incremented number on the end like com.example.MyService2 and use that in the service name, interface name, and object path. While the spec says to add a 1 to the end of the original service name, in practice that is often left off since com.example.MyService2 can just as well follow com.example.MyService as com.example.MyService1. An example of this is the interface org.gnome.ShellSearchProvider2 provided by gnome-shell.
That’s all for now, happy hacking [Less]
|
Posted
over 3 years
ago
Earlier this week, Neil McGovern announced that he is due to be stepping down as the Executive Director as the GNOME Foundation later this year. As the President of the board and Neil’s effective manager together with the Executive Committee, I
... [More]
wanted to take a moment to reflect on his achievements in the past 5 years and explain a little about what the next steps would be.
Since joining in 2017, Neil has overseen a productive period of growth and maturity for the Foundation, increasing our influence both within the GNOME project and the wider Free and Open Source Software community. Here’s a few highlights of what he’s achieved together with the Foundation team and the community:
Improved public perception of GNOME as a desktop and GTK as a development platform, helping to align interests between key contributors and wider ecosystem stakeholders and establishing an ongoing collaboration with KDE around the Linux App Summit.
Worked with the board to improve the maturity of the board itself and allow it to work at a more strategic level, instigating staggered two-year terms for directors providing much-needed stability, and established the Executive and Finance committees to handle specific topics and the Governance committees to take a longer-term look at the board’s composition and capabilities.
Arranged 3 major grants to the Foundation totaling $2M and raised a further $250k through targeted fundraising initiatives.
Grown the Foundation team to its largest ever size, investing in staff development, and established ongoing direct contributions to GNOME, GTK and Flathub by Foundation staff and contractors.
Launched and incubated Flathub as an inclusive and sustainable ecosystem for Linux app developers to engage directly with their users, and delivered the Community Engagement Challenge to invest in the sustainability of our contributor base – the Foundation’s largest and most substantial programs outside of GNOME itself since Outreachy.
Achieved a fantastic resolution for GNOME and the wider community, by negotiating a settlement which protects FOSS developers from patent enforcement by the Rothschild group of non-practicing entities.
Stood for a diverse and inclusive Foundation, implementing a code of conduct for GNOME events and online spaces, establishing our first code of conduct committee and updating the bylaws to be gender-neutral.
Established the GNOME Circle program together with the board, broadening the membership base of the foundation by welcoming app and library developers from the wider ecosystem.
Recognizing and appreciating the amazing progress that GNOME has made with Neil’s support, the search for a new Executive Director provides the opportunity for the Foundation board to set the agenda and next high-level goals we’d like to achieve together with our new Executive Director.
In terms of the desktop, applications, technology, design and development processes, whilst there are always improvements to be made, the board’s general feeling is that thanks to the work of our amazing community of contributors, GNOME is doing very well in terms of what we produce and publish. Recent desktop releases have looked great, highly polished and well-received, and the application ecosystem is growing and improving through new developers and applications bringing great energy at the moment. From here, our largest opportunity in terms of growing the community and our user base is being able to articulate the benefits of what we’ve produced to a wider public audience, and deliver impact which allows us to secure and grow new and sustainable sources of funding.
For individuals, we are able to offer an exceedingly high quality desktop experience and a broad range of powerful applications which are affordable to all, backed by a nonprofit which can be trusted to look after your data, digital security and your best interests as an individual. From the perspective of being a public charity in the US, we also have the opportunity to establish programs that draw upon our community, technology and products to deliver impact such as developing employable skills, incubating new Open Source contributors, learning to program and more.
For our next Executive Director, we will be looking for an individual with existing experience in that nonprofit landscape, ideally with prior experience establishing and raising funds for programs that deliver impact through technology, and appreciation for the values that bring people to Free, Open Source and other Open Culture organizations. Working closely with the existing members, contributors, volunteers and whole GNOME community, and managing our relationships with the Advisory Board and other key partners, we hope to find a candidate that can build public awareness and help people learn about, use and benefit from what GNOME has built over the past two decades.
Neil has agreed to stay in his position for a 6 month transition period, during which he will support the board in our search for a new Executive Director and support a smooth hand-over. Over the coming weeks we will publish the job description for the new ED, and establish a search committee who will be responsible for sourcing and interviewing candidates to make a recommendation to the board for Neil’s successor – a hard act to follow!
I’m confident the community will join me and the board in personally thanking Neil for his 5 years of dedicated service in support of GNOME and the Foundation. Should you have any queries regarding the process, or offers of assistance in the coming hiring process, please don’t hesitate to join the discussion or reach out directly to the board. [Less]
|