-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Doc] Development Status #1
Comments
It's a Standalone BinaryCurrent screenshot as of 2024-11-21 10:30: Removed - obsolete now Notice the window title "YQPkg (read-only)" and the disabled "Accept" button: This was started as a non-privileged user. |
We have Repo ContentResolvables (packages, patterns, products, patches) from all active repos are now loaded, so it's already a lot more useful than previously when it just showed the already installed packages. Notice that you can now also see the patterns that I don't have installed which are of course a lot more than those that I do have installed. Getting this far was surprisingly complicated; I had to read a lot of code of the yast2-pkg-bindings and of zypper. And right now there is no progress reporting at all yet (so it takes a while from the program start until you can see anything while all the data are loaded), it doesn't handle refreshing the repos or rebuilding the repo caches, and some scenarios (like software services) are not yet covered at all. Most of this will probably come over time, but right now the emphasis is making it do something useful for the average user; like searching for packages (which it now actually does) and trying to install / updae / remove individual packages or patterns or a whole list of them, and see if the dependency resolver complains about it. The commit phase where this is actually executed (where packages are actually installed / removed / updated) is still completely missing; it doesn't yet go beyond searching and experimenting what would happen. Or just looking through lists and picking some of the packages that sound interesting to you. This is the whole reason of existence for this project, because this is something that command line does not do well. If you know a package name or part of its summary or description, you can use With Already |
There is now instant feedback during the initialization phase: A splashscreen while the repos are loaded, and another while the package selector is created and populated with content. Notice that while the active repos are now loaded, there is no repo refresh, and no prompting to import new GPG keys. It is recommended to do a manual The commit phase (installing, removing, upgrading packages) is still completely missing. But you can look, search, experiment with "what...if" scenarios (if you remove this or that package, or if you install one; and see what the dependency resolver has to say about it). |
New 2024-12-02We now have workflow functionality with a separate main window page for each workflow step:
ScreenshotsPage NavigationNavigating between the pages already works, forward ("Next") and backward and to specific pages. Of course pages with no user interaction like the init phase do that automatically. For example, when you click "Back" in the last page "summary" you will get back to the previous interactive step, the package selection. There is an actual page history, and some pages (repo init, package commit) are not stored in that history because it never makes sense to get back there while going backwards. The Package Commit PageThe package commit page has mostly a big progress bar, but in addition to that it has a "[x] Show Summary Page" checkbox that you can check and uncheck while packages are being installed, so you can make the decision whether or not you want to see the summary page from where you can go back to do more package selection on a case by case basis while you have to wait anyway. If you uncheck that checkbox, the workflow will simply end after all selected packages are installed / updated / removed. This will of course be stored in the config file so you'll see that checkbox how you left it when you get here the next time; it's no longer a setting that is pretty much hidden away (and thus hard to change - out of sight and out of mind) like it was in YaST. And there is that "Show Details" mystery button. Yes, you will get details back while installing packages if you want to see them; so you won't feel that powerless and uninformed again like in the current YaST where you have no clue what is going on: What is currently being downloaded / installed, what is pending, what is already done. One click on the "Details" button opens that information. Stay tuned. |
New 2024-12-03First Summary PageThere is no real text content yet, but the rest of the functionality is there and working:
This is saved in the config file ( Remember that you can select in the previous screen (the commit phase) if you want to see this page at all - while you wait for the packages being installed. |
New 2024-12-10First Real Package CommitYou can now select packages for installation / update / removal to your heart's content in the PackageSelector, and for the first time, "Accept" actually does the package transaction: The packages will be installed / updated / removed. First Real Commit FeedbackThe progress bar on the "commit" page is now actually moving with real data from real libzypp callbacks. Right now, it restarts for every package, and for packages that need to be downloaded it goes from 0% to 100% for the download, and then from 0% to 100% for the actual installation. But it's moving! |
New 2024-12-11First Real SummaryThe summary on the summary page is now real, not just static data. First Real Progress ReportingThe progress bar on the commit page is now real and moves correctly even with several package tasks. The different phases of installing or removing a package are taken into account with their individual percentages and associated weights factors:
Of course, those values are just initial guesstimates and subject to change. But you get the idea. New ScreenshotsCommit Page with DetailsScreenshot removed - obsolete now When you click the "Show Details" button on the top right, you get those lists of packages:
Summary Page with ContentScreenshot removed - obsolete now Package tasks are grouped by category: Installed, updated, removed, failed, still to do (for example, if the user choose to cancel the transaction). Right now, it shows only a limited number of each list ("(8 more)") to avoid overwhelming and scaring the user. Yes, there is a lot of empty space on this page, but not all empty space needs to be filled. This might still change heavily. Collapsed lists might become expandable. It might become user-configurable. But that's in the "nice to have" category and has low priority right now. |
New 2024-12-17Much Improved Commit Page DetailsAfter a lot of real-life experiments (doing the manual GUI counterpart of a But on distros like Tumblewed or Slowroll, libzypp is configured to download all packages in advance and only then start installing them one by one; that was the effect I observed. Since I am developing the program, of course I was following the log file ( So I tried several different approaches. Adding icons to the packages that needed downloading was a big improvement (more below), but letting the task items move from the "To Do" list to the "Doing" list already was still confusing; even more so since the lists were automatically sorting alphabetically, so there was no way of knowing where a new task item just appeared. So I went along and added a fourth list "Downloading", and I changed the lists (all but the left "To Do" list) to always append new items at the end, and to scroll to that position; just like a program's stdout output in a shell window (it helps to use behavioral patterns that the user already knows). And this was what finally worked for me: I can now observe task items moving from the left "To Do" list moving to the center top "Downloads" list. As long as downloads are still going on, it's usually the bottom-most task that does not yet have the "download finished" icon with the checkmark; and that last item is always visible (unless you scroll the list up, which you can, of course). And once all tasks have disappeared from the "To Do" list on the left, and the downloads are all complete, libzypp starts actually installing / updating / removing packages one by one: This is now the only thing that the "Doing" list shows. It also shows that this part does not use parallel processing: There is only one single item in "Doing", at least right now. And as packages are finished being installed / updated / removed, they move to the right list "Done"; again, always added to the bottom of the list, and always scrolled to that position; very much like what you would see if you did the same thing with the Some seconds after clicking "Accept" to start the commit phase: The first packages are downloaded. Some small ones like "NetworkManager-applet", "avahi", "desktop-file-utils" were already finished downloading as you can see from the icon: Download + checkmark. "gdb" is currently being downloaded in this screenshot: Just the download icon without a checkmark. Calculating the Total ProgressThe progress bar is still showing 0% because there is still a lot of work ahead; those little packages are just a small fraction of the total size of the expected downloads. The parts of work to be done is weighted for the total progress:
Pre- and post-install/uninstall scripts are still very much disregarded; it's hard to compare anyway. Most packages don't do anything in those scripts, while others (kernel, grub2) do a full-fledged "dracut" run which can take minutes. Others still like the NVidia drivers need to build (compile and link) a kernel module in their post-install script which can take several minutes. Don't get hung up on the details of the global progress; it's only a very rough estimate. Here you can see how the "Downloads" list scrolls down as new tasks are added, so you can always see what package is currently being downloaded. In this case, it's "xfce4-weather-plugin". Still, no package has actually been installed / updated / removed yet; in this setup, libzypp waits until all the needed downloads are finished. Closing the details view with the "Hide Details" button to show the default view. Some users might prefer that. But hey, we are nerds; we want more details. Why else would we use this program in the first place? 😃 Of course, you won't get details until you click the "Show Details" button, but when you do, this will be the default view for the next program start. All downloads are done, so packages are actually being installed / updated / removed: The left "To Do" list is empty, the "Downloads" list is filled, and even the last package in "Downloads" shows the "Download finished" icon. "kernel-default" is currently being installed, and some first packages are already in the "Done" list; in the order in which they were done. Screenshot removed - obsolete now The summary page for this. Usable, but still work in progress. |
New 2024-12-19Improved SummaryThis implements #16 : Packages are now shown by task category (remove / install / update) and split up between "by user" or "by dependency", where you get to see more "by user" list items if the whole list is short anyway. Also, the "(xy more)" list cut-off is now a bit more flexible: It now avoids "(1 more)", "(2 more)", "(3 more)" if it's just up to 3 items more than would normally be displayed. |
About the Removed ScreenshotsYou may have read that I removed earlier screenshots. Why? Because some bloggers (not all) just grab the first one that they see and post it in their blog, completely ignoring that it's an outdated one, and the current thing looks much different. They simply never read any text, they just grab the first one that looks colorful enough. So I removed those that would be grossly misleading and misrepresent the current state of the project. This destroys the history of this development status protocol, but if that's the price for not seeing misleading images of my work floating around the Internet, so be it. |
New 2024-12-23Proudly Presenting a Graphical 'zypper dup' and 'zypper up'We now have a new filter view "Updates": This is an addition, not a replacement for the "Patches" view (hit F2 to get the "Patches" view). You see only the "blue" packages here, i.e. those that can be updated. And there are the buttons for "Package Update" and "Dist-Update", i.e. the exact same thing that This is the first important new feature that YQPkg has and YaST does not. More details at issue #7. |
New 2024-12-25Intelligent 'Auto' Search ModeThe "Search" filter view (which is arguably the single most important view) received a massive overhaul. Not only did I change all that really ugly boilerplate code to create and lay out widgets to using a Qt Designer form (which massively reduced the code of that YQPkgSearchFilterView class), I also imported some code from my QDirStat for guessing the search mode: We always had search modes
And now we have one more: Auto. That one guesses from what you type what search mode you probably want: If you are using special characters commonly used in regular expressions like There is also a special character And if none of those is present, it uses "starts with" as a default. Of course this is not 100% exact, so you can still explicitly switch to any of the other search modes. Example: You can see what the Auto mode guesses as you type, so you can change the search mode if it guesses wrong. |
New 2024-12-29File Conflicts Check during CommitWe now have progress reporting for the file conflicts check during commit: That was the delay between finishing downloading the last package to download and beginning to install the downloaded packages. Libzypp checks the actual downloaded packages for their file lists (because only then the file lists are definitely known) and if there are any duplicate file list entries between them, i.e. if there are any file list conflicts. Normall, that's very quick (under one second), but depending on the amount of packages to install or to upgrade, it can take considerably longer. If it takes longer than 1.5 seconds, you now get a pop-up dialog with a progress bar: The dialog is non-modal, i.e. you can still click widgets in the main window. The dialog's "Close" button only closes the progress pop-up, it doesn't cancel the file conflict check or the commit. But since the dialog is not modal, you can still click the "Cancel" button in the main window (and answer the confirmation if you really want to cancel the transaction). If there are any file conflicts, the first 6 of them will be reported in a separate warning pop-up each: More details (why 6 etc.) at issue #13. |
New 2024-12-31Repo Refresh is ImplementedWhen run as root (real root, not This was the last major missing feature to make the program usable without resorting to command line tools; you don't need to invoke Unless you just cleaned the repos ( There is still no GPG key handling yet, but that's a rare exceptional thing that is only needed just after a new repo has been added that is not in the GPG keyring yet. |
New 2025-01-01Repo Refresh Progress(see also #5) This shows how enabled repos are found on the system (i.e. they show up in this list), how they are refreshed (the download from the remote repo starts) and how the refresh is finished (the "download finished" icon with the checkmark). The progress bar at the bottom is just a very rough indicator with one step for each repo as it is processed. This is the best we can get with the current technology. In real life, most of the times it just flashes by in very few seconds. Only when a large remote repo really needs being refreshed it takes longer, but at least it's now broken down by repos so you don't feel so completely lost while staring at a simple static text message like it used to be. |
New 2025-01-05
|
Project renamed from YQPkg to MyrlynSee also #19 |
Well, I just found this, and I feel like commenting, even if it's much too late: In case you are watching biathlon occasionally, the shooting display is quite similar: Each athlete in the list has to do 5 shots, and their task is complete once the 5 shots were made (then they disappear from the list). However there are two different outcomes: If all shots were on the target, the athlete continues normally, but if at least oje shot failed, they have to make extra "penalty" rounds. So the order of column #1 won't change, but items may be removed from in between (and maybe (in the biathlon case) new items added at the end). Likewise for columns #2 und #3 items would be appended at the end. |
Package Commit Progress DiscussionI considered this and decided against it: In most use cases where this is even relevant, there are way more packages than fit on the screen at the same time, so you get a scrolled list. And you can bet that most of the action is scrolled away; you only see a little "peephole" of the overall scene. There is no way to keep track of changes, so you'll mostly stare at a static display again, because the action is out of your sight. With several lists, you get more information:
The movement of packages (or, more precisely, package tasks) through the list gives a much more dynamic impression that the static screenshots lead you to believe: As libzypp picks one of them from "to do" and downloads it (unless it's a "remove" task which is shown as This window makes use of the known libzypp behavior that it does all downloads in advance (in this configuration), so while there are still pending downloads, the center "downloads" list is automatically scrolled to the bottom whenever a new download is added; exactly like a scrolling terminal window. But when libzypp starts actually processing packages (install, update, remove), that list is scrolled to the top from where the next one will be picked, so you can observe how the next package is taken out of the "downloads" list and moves to the "doing" list and then to the "done" list. Try it to get an impression. It's now safe to use Myrlyn for day-to-day operation; you can do a graphical dist update (the Of course, the usual caveats apply; it's still software in development, so bugs can happen. But at the package commit stage, that would be very uncommon; about as uncommon as doing the same with a |
New 2025-01-14Patches ViewIf the system provides any patches (Leap, SLE), the "Patches" view is now automatically available: If the system does not have any patches (Tumbleweed, Slowroll), that view does not make any sense. so you won't get it by default. There is still the old Fun fact: This has been in YaST Qt for the past 20+ years, for debugging as well as for real use as an alternative to the Number of Patches / Updates in the Tab LabelsYou can still use the "Updates" view if you prefer that one. Both "Patches" and "Updates" now show the number of available patches (or package updates, respectively) in their tab labels so you can instantly see if it's even worthwhile to click into them: Notice that not all repos offer patches, even for distros that have them, like Leap; especially third-party repos like Packman or NVidia simply provide updated packages. But even for repos that do offer patches, you can also simply update all the packages that belong to them in the "Updates" view: A patch is satisfied if all the package versions that it provides are installed. |
New 2025-01-16Importing Repo GPG Keys is Implemented(see also #6) If you click on "Trust", of course the GPG key is imported into the libzypp key ring. If you click on "Cancel", this repo is disabled for the duration of this program run: |
New 2025-01-18 |
New 2025-02-06Implemented Repository ConfigurationSee #69 for more details. |
New 2025-02-19New Logger in Preparation for the Migration to Qt 6#70 was the last remaining big obstacle to migrate to Qt 6. This is now resolved. Qt 6 Migration ImminentQt 5 will go out of support around May 2025, so it's about time to migrate to Qt 6. A lot of small things are already done thanks to @gruenich; now it's time to do the last steps:
|
New 2025-02-25New Release Myrlyn-0.9.2 Based on Qt-6The Qt 6 port is now ready thanks to a joint effort of @gruenich and myself; we fixed the remaining "deprecated" warnings and some things that have changed between Qt 5.x and Qt 6.x, and it's working now. The qt6-branch is now merged to master, and the resulting version is now tagged as Packages with that latest version are now available in See also here. Package Commit Page now Defaults to Showing DetailsAfter I had to do that manually so many times after removing my If you interested users out there are anything like me, you want the details by default. Why? Because we are nerds. Why else would we use this program in the first place? 😄 For those few users who don't want this, the plain progress bar with nothing else to disturb the boredom is just one mouse click away. Wrong Git Tag 9.0.1 (Fixed)While I was working on that Unfortunately this also lead to some packages in OBS wrongly versioned as If you installed one of those Make sure to use Sorry for he inconvenience. 😢 I also tagged that wrongly tagged version with the correct Potential Graphics Problem for some Semi-HiDPI SetupsQt 6 has a new way of handling HiDPI graphics setups (don't they always...) that has pros and cons. See #79 and the workaround described there. I had that problem on my laptop that isn't really HiDPI with its 160 physical dpi, but close enough to cause trouble if you changed it to keep fonts readable and icons large enough to recognize. More at #79. |
New 2025-02-28More Feedback after "Package Update" or "Dist Upgrade"Depending on what distribution you are using, not all "Package Update" or "Dist Upgrade" actions are always 100% successful: Some packages might be left over; they couldn't be updated without any dependency problem. That's okay in most situations; some updates might be a bit delayed, but they will normally be released in a couple of days. Other packages might depend on those pending updates, and only then those packages can also be updated. This might lead to a bit of irritation to the uninitiated, but it's actually quite a normal situation. Now there is some status feedback for this on Myrlyn's "Update" page. Before the Update / UpgradeRemember that on this page, the package list only shows packages that could potentially be updated; i.e. there is a newer version available than the installed one. Still, an attempt to update them could lead to a dependency problem for each one. We don't know that yet; only if we try. You could click on each package's status icon individually to set the next logical status ("update" in this case), but this might be a lot of clicks, and the dependency resolver would run after each click which means some seconds of delay. And if it doesn't work flawlessly, you will get a dependency conflict window where you need to make a decision how to continue; "don't install version XY" is the best solution in this situation. Or you could let the dependency resolver do that for the packages that can be updated without a problem: With the "Package Update" or the "Dist Upgrade" button. The difference between both is subtle; "Dist Upgrade" goes a bit further than "Package Update" in taking more things into account like package splits and renames, and also changes in the patterns; if your KDE Plasma received more packages that are now recommended, you will get those as well with "Dist Upgrade", to name just one example. So, let's click on "Dist Upgrade" here. After the Update / UpgradeYou can see more icons here: A checkmark for packages that could be set to "update" without any dependency problem, and a sad face emoji for those that could not. When you click on "Accept" to execute the update (and other pending changes) and then come back, you will be stuck with the sad-faced packages: Try again on another day. Or in a few hours. The icons are just temporary; they will disappear when you change to another view, or even when you click the "Refresh List" button. But if you like sad faces around you, click "Dist Upgrade" again, or try "Package Update" instead (hint: that probably won't help). Coming back and letting those ungrateful suckers suffer This situation is more common on Slowroll because it doesn't receive package updates so often; that's a feature, not a bug. On the downside, it might take a few days until those leftover packages can be updated as well. |
New 2025-03-14Package Metadata TranslationsWe have package metadata translations. Or rather, there is proof that we could have them from the side of Myrlyn if they weren't so appallingly incomplete. See #3. |
New 2025-03-24Stress Test: Myrlyn dup with 3800 Packages to UpdateOopsie: 3800 Updates!This was a bit unvoluntary, but it was a very useful test nonetheless: I hadn't updated my Tumbleweed VirtualBox VM for 4 weeks. A lot of updates had accumulated during that time: 3800 of 3822 installed packages needed to be updated. Of course I used Myrlyn to do that; it was what told me on the "Updates" tab that there were 3800 (yikes!) pending updates. So I clicked "Dist Upgrade" and switched to the "Installation Summary" tab to see what it planned to do; there were quite a number (29) of packages to remove, and an even larger number (259) of new packages to install, both because of dependencies. Hint: In this situation, when there are so many updates, it's useful to uncheck "Automatic Updates" in the "Installation Summary" tab to concentrate on the packages that will be added (the packages to remove are the first ones anyway). And when almost all packages need an update like in this particular case, it would also be useful to check "Keep" because it's so few of them that will not be changed. Starting itA click on "Accept" immediately starts the transaction: All those packages need to be downloaded which takes quite a while with a number that large. Download Errors!At some point, I got several errors that some packages could not be downloaded. This sounds suprising, but if the download takes half an hour or more, chances are that some of those packages are already being updated again on the download server. For a rolling release like Tumbleweed, only the latest version of each package is kept on the download server; any older versions are already removed. And Myrlyn / libzypp are still using the repo metadata from the time when the program was started (same with zypper or YaST), so the versions that they expect may already be a bit out of date at that point: If libfoo-47.11 was the latest one half an hour ago (when the program was started and the repo was refreshed), but now the download server already has libfoo-47.12 (and libfoo-47.11 is no longer available), there will be a download error. Don't Fear the
|
YQPkgMyrlyn Development StatusScroll down all the way to see the latest status.
See also the list here.
It's now a standalone binary executable
It doesn't need any YaST shared lib or infrastructure anymore, just libzypp
It can load the packages from the installed system
New: Non-privileged user mode (read only):
You can
You cannot install, uninstall, upgrade any packages. The "Accept" button is disabled.
You can see in the window title if you are running it as a user ("YQPkg (read-only)") or with root privileges ("YQPkg [root]")
The text was updated successfully, but these errors were encountered: