[HN Gopher] The GTK+3 port of GIMP is officially finished ___________________________________________________________________ The GTK+3 port of GIMP is officially finished Author : marcodiego Score : 236 points Date : 2023-04-19 17:11 UTC (5 hours ago) (HTM) web link (twitter.com) (TXT) w3m dump (twitter.com) | jmclnx wrote: | Nice to hear, congratulations and thanks for your hard work. Now | time for gtk4 :( | | There was a time, when I was young, backwards compatibility was a | big part of our job. To me, it seems every other day QT and GTK | makes a point of ignoring backwards compatibility with their | releases, making Application Development hard. | | I admit, I do *not* understand GTK/QT development model at all. | But I think having that compatibility is one of the reasons of | Linux's success, the rule of "Do not break user space". | jcelerier wrote: | > To me, it seems every other day QT and GTK makes a point of | ignoring backwards compatibility with their releases, making | Application Development hard. | | can't talk about GTK but Qt broke C++ API compatibility once | between 2012 and 2023 for Qt 5 -> Qt 6 (and really porting from | 4 to 5 and 5 to 6 is not particularly complicated), I wouldn't | say that it's fair to call this "makes a point of ignoring | backwards compatibility with their releases" | vetinari wrote: | There are still some people salty, that Gtk3 was breaking | themes (not API or ABI, but themes). It was communicated | explicitly that themes are going to break, the theme engine | implementation was not fully ready when Gtk3 was originally | released and that themes are not considered part of the | public API. Yet, some people didn't take that warning | seriously, and eventually found out the hard way that it was | meant seriously. | TingPing wrote: | GTK broke C api in 2011 and 2020. Not bad IMO. | samsquire wrote: | It is interesting that I read your comment today, I recently | had an idea about enabling seamless binary compatibility and | binary polymorphism without having to change and recompile sum | types. | | Widget frameworks are very complicated and have intricate APIs. | | With present day computer technologies it is difficult to | mutate an API or interface that others are implementing or | using. I think people also rely on side effects that aren't | promised by APIs, which makes it harder to change things. | | I want to be capable of refactoring my logic and code without | breaking my data structure and I want to change my data | structure without breaking my logic. These are at odds. | | How many times has a library upgrade caused a compiler error | for you? | | When someone implements my Java API, it is difficult for me to | change it. Breaking software upgrades is my common experience | upgrading software libraries. | | My idea is that we should trace the method names, | field/properties names and parameters used of methods in an | Abstract Syntax Tree of code and then turn it into a structure | and hash the symbols in the structure to correspond to in- | memory layout index offset. (We put the data for the member | symbol for example "children" in the same memory position every | time) | | We can use heuristics with this AST that from any given symbol | name, there is a traversal from one symbol to another. | | My idea is to handle the seamless migration of types - such as | replacing one type for another, new type, merging types, | splitting up types into members, changing the associations of a | type, changing the plurality of the type (is it a 1-to-1 or | 1-to-many mapping or many-to-many mapping?) | | The idea is to create a struct data layout from an AST symbol | trace and turn it into deterministic arrangement of data at the | machine code layer. | | When I refer to a symbol on a computer, it is at a numerical | position in memory, relative to other symbols, such as relative | to a symbol with RIP relative addressing in assembly. | | If the same symbol corresponds to the same numerical position | every time regardless of the AST, we get binary compatibility | regardless of the AST that created that symbol traversal. | | If I change the AST, but the data has the same underlying | associations, the data structure can be inferred. For example, | git detects file moves based on file hashes. | | We could define a list of keywords and hash them into buckets | and then people use these symbol names and they get binary | compatibility for free. | | For example, if a library upgrade changes the object hierarchy | and splits something off into a new object, or introduces a | plurality (one to many) where there was none before? Such as | having multiple addresses for a customer, or multiple email | addresses and contact numbers for an account where previously | there was only one. | | The hash of the relationship diagram can map to a struct layout | deterministically. | | For example, take the following data associational hierarchy: | | bussiness_unit-> department-> product -> manager | | and managers now need to be responsible for departments, the | associational diagram changes to | | business_unit -> manager -> department -> product | | can we sort and hash the fields of these relationship diagrams | so that they always place fields at the same index offsets in | memory? hash "bussiness_unit-> department-> | product -> manager" hash "business_unit -> manager | -> department -> product" | | so business_unit_manager manager_department all produce the | same indexes | | there are fields on business_unit to manager and children of | manager object for department and children on department for | products, or something like this. | | or similar. This kind of schema changes should be | programmatically deterministic, because these kinds of | migrations are so common. | | This idea could also solve database migrations too. | supriyo-biswas wrote: | Some of the ideas are implemented in Unison[1]. | | [1] https://www.unison-lang.org | sprash wrote: | > I admit, I do _not_ understand GTK /QT development model at | all. | | It's very easy to understand. | | QT is a commercial and de-facto proprietary product and the | development model is: do what the paying customer wants. | | GTK has no customers and after it was taken over by the GNOME | crowd the development model is to deliberately sabotage the | FOSS ecosystem. Small long tail projects can not afford to | follow the relentless stream of backwards incompatible changes | produced by upstream and die off. Even big projects like GIMP | struggle with this. The result is a broken ecosystem which | serves certain market participants (e.g. that offer desktop | operating systems) very well. | orra wrote: | > Now time for gtk4 :( | | Hopefully easier? Unsure however. | | > But I think having that compatibility is one of the reasons | of Linux's success, the rule of "Do not break user space". | | Quite. Of course, it's a sometimes repeated joke that the Linux | GUI toolkit with the most binary compatibility is the Win32 API | (via Wine). | pjmlp wrote: | Depends if they use Glade, or any of the removed APIs. | orra wrote: | I don't understand the Glade problem. I thought both GTK+ 3 | and GTK+ 4 had a GtkBuilder class which loads .ui files? | And as for creating .ui files, Cambalache is a replacement | for Glade? | zorr wrote: | From what I've seen the .ui format for Gtk3 and Gtk4 are | different and Glade does not support Gtk4 Widgets or its | additional libraries like libadwaita. | | Cambalache is a successor for Glade but it also has | issues. It uses its own storage format and you have to | export to a .ui file for use in your Gtk4 project, and if | you make changes to the UI file it's very difficult or | even impossible to use those changes in Cambalache again. | | The general consensus on a few of the GNOME-related | Matrix channels seems to be writing .ui files by hand. | marcodiego wrote: | This is something that I unfortunately have a | "reasonable" explanation. It involves some historic | idiosyncrasies and GNOME devs' decisions along time. If | you want to listen to some (read an) interesting story | here's some of it: | | * First: GNOME was born without an IDE. But, there was an | interesting little project (by Naba Kumar) which started | in mid to late 90's called Anjuta. IIRC, Anjuta 0.x to | 1.x was what was called a "monolithic" IDE; that is: it | didn't had any plugins and its features were "hard- | coded". The 2.0 rewrite allowed it to have plugins, but | they didn't covered (at first) all of the features of | Anjuta 1.x. It was only around 2.4 or 2.6 that Anjuta | finally got feature-rich and reasonably stable enough to | become part of the GNOME project and the "IDE of the | GNOME project" although most GNOME devs didn't use it. | | * Second: GNOME was born without a GUI Builder. The most | successful one was Glade. At first, glade generated C | source code for the UI using GTK. Then people thought it | was bad and someone created libglade. The 'project | libglade' was two things: a XML format specifying an UI | description and a library that could dynamically (at | runtime) load it and build a GTK interface from that | description. It could even connect signals without a | single line of C source code. | | Since libglade seemed like a good idea it was eventually | incorporated into GTK in a format that is now called | GtkBuilder. | | Parallel to this, many events happened. Glade changed | hands a few times and eventually its main developer | became Chema Celorio. Celorio was a skydiver and one day | he had a problem with his parachute and died. Glade | development became dormant until it was picked up again | by Tristan Van Berkom. Tristan modernized it, | 'resurrected' it, improved its UI, rewrote many parts of | it and eventually removed its code generation back-end to | use only the GtkBuilder format. | | * Third: At the same time, Anjuta development also | changed hands. I remember Johannes Schimidt and a few | others. At some point, there was an integration between | Glade and Anjuta, but it was not very different from | running the two tools separated except for the fact that | they shared the same window. | | There was some hope when, during the selection for Google | Summer of code an interesting project was chosen: improve | the integration by Pavel Kostyuchenko. The project was | successful and the integration between Glade and Anjuta | improved because of it. | | I was happy and hopeful for these facts when one day I | saw that (part of) the integration code was chopped off. | I was so intrigued by this fact that I decided to ask | Anjuta devs personally (on IRC) what had happened. The | answer was something like: "it was not as good as we'd | like, fixing it would be much more work than rewriting | it." | | That was when I decided to join the project to fix it | myself. I improved the integration between Glade and | Anjuta. Rewrote how it created functions inside the C | source code, how it discovered automatically which .c and | .h files were associated with the .ui file. Implemented | automatic creation of members on the C struct that | corresponded to the UI elements, fixed some bugs, wrote a | documentation which was a good tutorial on how to use | these features... I even implemented the preview feature | in Glade. I really made the integration work to my | liking. It was the workflow I dreamed. | | The future seemed bright: there were new developers, | frequent commits, new features were implemented | frequently... But GTK evolved faster than Glade. Tristan | eventually abandoned it and it was picked up by Juan | Pablo Ugarte. By around this time, Glade became something | of a monstrosity of technical debt, slow, crash-prone and | buggy but it worked. Implementing support for modern GTK | features (like bindings and css) seemed too much work and | too hard to do. | | * Fourth: Around 2013 Christian Hergert started | developing a modern IDE for GNOME: GNOME Builder. He left | his job, started a campaign to get money to back him up | during first versions and quickly showed a lot of | progress. It was said at the time that it was going to | have Glade integration (it eventually did have, but it | was never a decent one). The project thrived and Redhat | hired him. | | Development of Anjuta slowly became dormant after this. | It is now archived. | | Hergert started another project, Drafting, to replace | Glade but it was de-prioritized. Ugarte basically | abandoned Glade and started Cambalache. Cambalache seems | like a good idea, works but has no IDE integration and is | still mostly a "one man show". | | And that is how we arrived at where we are. GNOME still | lacks a good UI builder with IDE integration and no | current plans to fill this gap. | em-bee wrote: | thank you for that great and informative history. | | this deserves to be made into its own blog post. | pjmlp wrote: | Sure if you like to write XML by hand. | | Cambalache is years away to reach feature parity with | Glade. Then there is the whole of using Web to render the | designer. | rleigh wrote: | The XML isn't upgraded and there are no tools or XSLT to | do it. You end up hand-editing the ui files by hand. Not | fun or productive. | | There are good reasons why professional developers | abandoned GTK+, and this is just one of them. | robinsonb5 wrote: | It's not even a joke - OK, not GUI-related, but a few years | ago I tried to replay Return to Castle Wolfenstein on Linux - | the official Linux port would run but with no audio. The | Windows version worked fine under WINE! | p_j_w wrote: | Was it a Windows version or DOS version? | miffe wrote: | Return to Castle Wolfenstein is Windows. Using the Quake | 3 engine. | LaLaLand122 wrote: | - https://man.archlinux.org/man/aoss.1.en | | - https://man.archlinux.org/man/padsp.1.en | erk__ wrote: | The multiplayer version got open sourced and there exist a | contemporary project to keep it updated, but also as | backwards compatible as is possible. | | https://www.etlegacy.com/ | seba_dos1 wrote: | Many old games work better under Wine than under modern | Windows though. | kristopolous wrote: | Windows backwards compatibility is also pretty phenomenal if | you know what you're doing. | | There was an article a couple of years ago about taking | binaries from either windows 1 or 2, changing a few bits of | the header and it would run fine. | | Edit: actually it's covered in the Wikipedia article | https://en.m.wikipedia.org/wiki/Windows_1.0x | | It's an old citation but here's the snippet: | | "Due to Microsoft's extensive support for backward | compatibility, it is not only possible to execute Windows 1.0 | binary programs on current versions of Windows to a large | extent but also to recompile their source code into an | equally functional "modern" application with just limited | modifications" | | I haven't touched windows in probably 15 years though so I | can't speak for any of this. Funny, I was a Windows software | developer for a decade and now I know nothing about it. I | don't even know if the debug tools I used to use made the | leap to 64 bit | JohnFen wrote: | > Windows backwards compatibility is also pretty phenomenal | | This is a point on which I give Microsoft high praise, and | they have my great sympathy. | | The issue for Windows is existential -- a large percentage | (perhaps a majority) of people would ditch Windows in a | heartbeat if they had to replace their software because of | a new Windows version. Backward compatibility is | Microsoft's moat. | | It has been worth it to Microsoft to put serious resources | toward that end, and they've worked miracles in terms of | backward compatibility. It really is amazing. | | And I have sympathy for them about it, too, because I | guarantee that Microsoft would rather be able to run | without carrying that burden too much. | | I think this is the main reason why they are extremely | forceful about updates. If everyone is using the same | version, backward compatibility becomes easier because you | don't have to keep it for as long. | NullPrefix wrote: | How many games designed for windows 7 can run on windows | 11? | fredoralive wrote: | I think those that have a dependency on Games for Windows | Live are screwed, so not Microsoft first party games, but | most should? Isn't it more XP and earlier stuff that has | a reputation for being finicky, not DX9/10 stuff? | johannes1234321 wrote: | > Windows backwards compatibility is also pretty phenomenal | if you know what you're doing. | | Windows backwards compatibility is also pretty phenomenal | if you DON'T know what you're doing and are important | enough. | | There is the famous case about Windows 95 detecting SimCity | and then switching to a more careful memory manager as | SimCity had quite some use after free problems, which would | crash otherwise. | RedShift1 wrote: | IMO it's not phenomenal, it's the job of an operating | system! Something seemingly lost to many new devs. I'm | pretty convinced by now the reason the win32 API is so | stable because no developer is interested in "the old | stuff", so nobody tinkers with it, hence stuff doesn't | break. I'm fully with Linus Torvalds on this one, DON'T | break userspace!!! | rodgerd wrote: | > Something seemingly lost to many new devs. I'm pretty | convinced by now the reason the win32 API is so stable | because no developer is interested in "the old stuff", so | nobody tinkers with it, hence stuff doesn't break. | | I highly encourage you to take a look at the work | Microsoft did with the XBox backwards compatibility for | the XBox One X/S; unlike their naming teams, MS have | people who care deeply about this stuff. Not only did | they spend a lot of time making sure that most games work | on the One X, they spent time doing things like having | the newer platform upgrade the games on the fly where | possible. | | MS absolutely has people tinkering with their old APIs, | sometimes to quite good effect. | kristopolous wrote: | It's actually work IIRC. Again, out of the game for 15 | years but they used to be subsystems - these ABI | compatibility layers | | Windows had one for DOS, Windows 16, "posix" and "os/2" | with the last two in air quotes because it was only a | subsection and they claimed mission accomplished - I | think it was specifically to satisfy some government | requirement but don't use me as a reference here. I don't | think it could do os/2 "Presentation Manager" for | instance. And there was a reason that cygwin was still a | thing. I used it for an actual production project maybe | 22 years ago. Wow, you've never seen slow until you run | cygwin bash scripts on windows 2000. | | Regardless, it didn't come free - there's people up in | Redmond who had that as part (or maybe all) of their job. | I would have done that - maintain an esoteric part of | Windows for a Microsoft salary? That's the kind of job | where you have almost no boss. Sign me up. | | They had a bunch of weird projects like that. IE for Unix | which ran on Solaris and HPUX (evolt has them: | https://browsers.evolt.org/browsers/archive/ie you can | probably QEMU that if you want). They also had Alpha, | MIPS and I believe PPC versions of windows. There were a | lot of other things that never got done. Like Windows for | Intergraph Clipper, a fact that someone somewhere has | decided to vouch for me on 12 years ago over yonder: | https://www.cpushack.com/2011/01/16/cpu-of-the-week- | intergra... | | Again, all this shit I know? totally useless. | rlkf wrote: | > I don't think it could do os/2 "Presentation Manager" | for instance. | | There was a Presentation Manager subsystem for NT that | could run 16-bit OS/2 graphical programs, but it was | about as hard to come by as buying a single LTSC license | is today. | stuaxo wrote: | Would love to see that demonstrated, maybe it will be on | virtuallyfun.com one day. | kristopolous wrote: | That's absurd. It's almost as silly as Quarterdeck's | DESQview/X product that ran win-16 binaries. I ran it for | laughs once in 2001, it worked. Motif, X, remote X, and | 16 bit Windows --- it's everything you never wanted. | http://toastytech.com/guis/dvx.html of course has a | gallery. Quarterdeck - thanks for the memories, and also, | the memories | | The lesson of DESQ is to design software to run on the | computers of tomorrow and don't worry so much about the | computers of today. That sounds stupid to me as well but | neither of us have yachts or private jets so what do we | know. It's about colonizing the future. | | I wouldn't be surprised if FreeDOS could spin this up. | stuaxo wrote: | Virtuallyfun has a go at running DesqView/X... and now | I'm shocked to see it was all the way back in 2011 ! | | https://virtuallyfun.com/2011/03/27/desqviewx/ | | There's also a long running ticket in dosemu2 around some | issues with DesqView/X | https://github.com/dosemu2/dosemu2/issues/606 | | In some more years it will probably be working fine | there. | asveikau wrote: | There's kind of a tension between new Microsoft and old | Microsoft. | | Old Microsoft put lots of thought into extensibility of | APIs and makes it so that the old interfaces still work | when they introduce new functionality. | | New Microsoft rewrites components from scratch and | deprecates the old one every few years, and doesn't | bother to shim over the old interface. | | The former group has it such that if your app was well | written circa 1997-2001, it works well on the current | release. | | The latter group has it so that you have several | different copies of .NET on your hard drive and the | "recommended" UI libraries for new applications has | changed a lot, and the new hotness from a few years ago | is deprecated. | JohnFen wrote: | > New Microsoft rewrites components from scratch and | deprecates the old one every few years, and doesn't | bother to shim over the old interface. | | This seems to be a trend across the industry, not just | Microsoft. And it's a real shame. It makes it too risky | to use a lot of shiny new things in real projects. | asveikau wrote: | I agree it's an industry wide thing. | | The Microsoft-specific variant of it is something I've | seen up close. One of the issues always struck me as | confusing interface and implementation. There isn't a | good recognition of the fact that when you write against | an API, you code against an abstraction, not a particular | implementation. If your interface is good enough, you can | do the rewrite treadmill thing to justify your current | bonus or whatever, but you can point the old interface at | a new implementation without most callers knowing the | difference. | | So, I think a good example of this working relatively | well would be Windows audio. The WinMM API still works. | They rewrote the audio stack a couple of times, and | introduced new APIs such as WASAPI and I forget the newer | one. Winmm isn't broken. It may not have access to all | the latest features, but it works. | | In contrast, all too often they discard an entire API | because they want to rewrite the components underneath. | But the I in API stands for interface. A good interface | can survive rewrites of what's underneath. | JohnFen wrote: | > But the I in API stands for interface. A good interface | can survive rewrites of what's underneath. | | Absolutely! | | But a good interface is also a really difficult thing to | engineer, in part because it seems like a relatively easy | thing. The gotchas don't become apparent until long after | you ship. | | Sometimes I wonder if some of this is just cost-cutting. | A difficult task is an expensive task. Other times, I | wonder if it's because API design is an actual specialty, | and there are too many devs doing it who don't have the | chops for it. | dblohm7 wrote: | Yes! A lot of people don't realize that Windows | compatibility is not just about binary compatibility, but | _source_ compatibility. | molticrystal wrote: | >It's an old citation but here's the snippet: | | Really old citation, 1995... | | >There was an article a couple of years ago about taking | binaries from either windows 1... | | The below article seems to go more indepth and was written | in 2020, might even be the one you were thinking of: | | https://soylentnews.org/article.pl?sid=20/05/10/1753203 | | >As previously noted, Windows 95 dropped support for 1.x | and 2.x binaries. The same however was not true for Windows | NT, which modern versions of Windows are based upon. | However, running 16-bit applications is complicated by the | fact that NTVDM is not available on 64-bit installations. | | >After letting NTVDM install, a second attempt shows, yes, | it is possible to run Windows 1.x applications on Windows | 10 [32-bit]. | | >FONTTEST also worked without issue, although the TrueType | fonts from Windows 3.1 had disappeared. | kristopolous wrote: | "As previously noted, Windows 95 dropped support for 1.x | and 2.x binaries. The same however was not true for | Windows NT, which modern versions of Windows are based | upon." | | No way. I'll need major citations on that. Wikipedia for | one, firmly disagrees as does every book I've read on | that history. | | edit: I quoted it and still misread it. I thought it said | windows nt was based on windows 1&2. | djur wrote: | Which part are you objecting to? | speed_spread wrote: | I object to NT natively supporting 16 bit apps. I think | they dropped that in Win7 or before. Of course with VMs | everything is possible but it's no longer built-in. | fredoralive wrote: | 32 bit Windows NT supported 16 bit Windows apps (and DOS) | right until 32 bit Windows was dropped with Windows 11. | 64 bit Windows has never supported them. As 64 bit | Windows became commonly installed around Windows 7, you | might get the impression it was dropped then, but it was | still around if you really wanted it. | guipsp wrote: | Windows NT is 3.1 and above | piperswe wrote: | Eh, not quite. 3.1 ran on DOS, there was an NT 3.1 | (separate OS) that was NT. NT and legacy Windows ran in | parallel for a while, up through Windows 2000/Windows ME. | That ended with Windows XP, the first consumer Windows NT | release. | kristopolous wrote: | I misread it. I thought it said windows nt is based on | windows 1 and 2. carry on | djur wrote: | There's even a way to run 16-bit Windows binaries on | 64-bit Windows now. | | https://github.com/otya128/winevdm | creshal wrote: | It hasn't been a joke for a while. | laweijfmvo wrote: | A good example of why backwards compatibility is important! | I've been using GIMP for years with no clue that it was using a | 10-year old version of GTK. And that's great. | awill wrote: | What does that have to do with backwards compatibility? Gnome | hasn't received a major update in ages because it required so | much work to support gtk4. | | Of course gimp would keep working if you keep it on gtk3. | robertlagrant wrote: | Why are you agreeing so adversarially? | awill wrote: | Not trying to be adversarial. But I'm not agreeing. | Obviously gimp will keep working if they don't upgrade | the dependencies. I don't understand how that is | impressive. | phone8675309 wrote: | CADT | mhd wrote: | > Now time for gtk4 | | Port it back to its original toolkit, Motif, now that that's | open. Won't be needing an update after that ;) | orangesite wrote: | Given how many look&feel trends we've seen over the last few | decades it would even look kinda cool&trendy in a postmodern- | ish kinda way! | 2b3a51 wrote: | Motif Window Manager (mwm) is very like twm but with nice | regular sized colour icons and Alt-Tab already defined in | the system .mwmrc. | | Very Windows 3 with iconised windows on the desktop. | | https://en.wikipedia.org/wiki/Motif_Window_Manager | kitsunesoba wrote: | Perhaps that kind of backwards compatibility requires a level | of completeness or maturity that despite their age, GTK and Qt | have yet to achieve (or are just now achieving). | | It's not too hard to get an AppKit/Cocoa project from the early | 2000s compiling on modern macOS, but Cocoa had already accrued | 20 years of age by 2005, which no doubt has reduced the degree | of changes that've been necessary in the 18 years since. GTK | only hit that 20 year mark a few years ago and hasn't enjoyed | the same level of corporate firepower to develop it. | jerf wrote: | There is a widespread lack of understanding of just how | staggeringly large a high-quality GUI toolkit is. | | Across a number of minority language communities I | participate in, there's a constant stream of "Why isn't there | a good native GUI toolkit in $MY_FAVORITE_LANGUAGE yet? All | the ones I can find suck." questions, to which the answer is, | you're asking for a project that can easily be on the order | of magnitude of _all the other Open Source projects in the | language combined_ , if not greater. What you get with less | than effort than that are the aforementioned "suck"y GUI | toolkits. Which I celebrate and praise, but realistically, | just getting a production-grade "rich text widget" is alone a | staggering undertaking, let alone everything else that goes | into a GUI toolkit. | | Just a project to _bind_ an existing GUI toolkit into your | favorite language can easily overwhelm a dedicated team of | multiple people, and as annoyingly complicated as that can | be, it 's wildly easier than building the entire toolkit. | | Getting to "maturity" is a really, _really_ hard problem. | rebolek wrote: | > Just a project to bind an existing GUI toolkit into your | favorite language can easily overwhelm a dedicated team of | multiple people | | I have to disagree, it's not that hard and can be done by | one person. Red language did it, it has very clear | declarative GUI toolkit for Win/macOS/GTK in <2MB | executable. So no, it's not that hard. | bfrog wrote: | A big part of that historically was a GUI toolkit might | need to build up a whole object model, render model, | various container types, event loop, timer queue, | networking, IPC, file system abstractions, | internationalization and tools to deal with that, debugging | and visualization tools, etc, etc, etc. For cross platform | toolkits a whole OS and build system layer to deal with | that as well. At least the ones people ended up using | widely (gtk, qt, win32, cocoa, etc). | | That's to say that a useful GUI toolkit has typically been | a whole lot more than simply "draw me some widgets and let | me poll on input events" | | I wonder if that's really still as true though in newer | (not C/C++) languages like Rust for example, where you can | reuse a _lot_ more of what the ecosystem and language | already provide. | jerf wrote: | I'm sure it shrinks the footprint a lot to just do | "widgets" rather than being an effective VM, but even | that is plenty huge. I'm not aware of any "non-mainstream | language" having even that much of a toolkit. Plenty of | partial starts, even starts that with another 100x the | effort could compete fairly well, but nothing terribly | close to "done". | | Someone may reply to me with one. I'd have to look at it | and analyze. But I know I'm not going to get dozens of | citations of high-quality toolkits of, say, the calibre | that I can put rich text widgets with high-quality multi- | font unicode support and everything else I want out of | such a widget, into a tree control with those rich text | widgets as my leaves, and have a million node's worth of | rich text controls because they can be lazy-loaded based | on visibility, just to come up with one use case. | kitsunesoba wrote: | It's crazy how many newer UI toolkits (including those by | giants like Microsoft) don't even have a | tableview/datagrid widget, which is one of the most | common desktop widgets right after buttons. You're | expected to haul in some third party widget that's half- | baked and lacks battle testing or roll your own, which is | ridiculous and a massive productivity + UX killer. | illiarian wrote: | > You're expected to haul in some third party widget | that's half-baked and lacks battle testing or roll your | own, which is ridiculous and a massive productivity + UX | killer. | | Reminds of early-mid-00s and Delphi components. The | standard components were fine, but lacked many important | features (including Unicode!), so you'd hunt/shop around | for third-party components. | kitsunesoba wrote: | This was the case for REALBasic too, which is where I | first dipped my toe into programming. It was a wonderful | intuitive learning environment (want to change what a | button does? Double-click it to edit its code!) and could | build to OS 9, OS X, and Windows with one click which was | amazing, but it was very easy to hit the limits of what | its standard widgets were capable of, which meant that | you had to go get third-party widgets, most of which were | commercially licensed (and meant most serious REALBasic | apps used commercial widgets). | | That probably wasn't as much of a problem for a working | adult but it wasn't much fun as a broke teenager itching | to make things (as I was at that point). | vetinari wrote: | Because "mobile". Tables/grids do not work with mobile, | so they are often skipped entirely. Annoying, I agree. | cannam wrote: | > It's not too hard to get an AppKit/Cocoa project from the | early 2000s compiling on modern macOS, but Cocoa had already | accrued 20 years of age by 2005 | | That's a mindboggling thought. How much did 2005 Cocoa have | in common with 1985 Cocoa? (That's a real question, I have no | idea) | | Qt and GTK were released (or first labelled stable) in 1995 | and 98 respectively, so 20 years gives us 2015 and 2018 which | is well within the Qt5 and GTK3 era. | | For Qt, I would say Qt4 in 2005 marks a point of maturity, if | not terminal stability. Ten years. After that there have been | whole substructures and programming idioms added and removed | and all sorts of things tidied up, but anything you wrote | directly to Qt4 is going to be conceptually similar in | current Qt versions. | | The Qt2 to Qt3 and Qt3 to Qt4 transitions (I never used Qt 1) | broke almost every line of Qt code, but from 4 to 6 is a | different prospect. It's a question of updating some details | and seeking replacements for specific APIs that haven't been | carried across. That can be difficult or totally blocking but | it's quite different from having to rewrite everything. | pasc1878 wrote: | 1985 Cocoa and 2005 Cocoa are very similar - I would guess | there are less new things than there are in moder Cocoa and | 2005. | | Except - not strctly Cocoa but memory management has | changed a lot and might have changed some APIs. | | 1985 just had malloc and free or [Class alloc] and [object | free] 1986/7 introduced autorelease and retain. 2009? had | garbage collection and then 2010? had the autorelease and | retain automated (ARC). | lifewallet_dev wrote: | If you really didn't work with GTK2 then there's no way you can | understand the problem, thus your comment. | hgs3 wrote: | > There was a time, when I was young, backwards compatibility | was a big part of our job. To me, it seems every other day QT | and GTK makes a point of ignoring backwards compatibility with | their releases, making Application Development hard. | | Which is odd because desktop user interfaces haven't | fundamentally changed in the past two decades. Theoretically | you could generate UI code for Win32, Qt, GTK, and others from | a common markup format. | kitsunesoba wrote: | > Theoretically you could generate UI code for Win32, Qt, | GTK, and others from a common markup format. | | In theory yes, but the attempts I've seen at this run into | issues with things like widgets present on one platform not | being present on others (e.g. Win32 has no miller column | widget like Cocoa's NSBrowser) and the UI toolkit chasing | identical behavior between platforms. | | For this sort of idea to work, I think an approach that fills | gaps (following previous example, providing a Windows | implementation of a miller column widget to mirror NSBrowser) | and doesn't try to fight the behaviors of the UI toolkits | it's built upon is what's ultimately required. Without that, | an approach that reimplements everything from scratch is | probably better. | smoldesu wrote: | > Win32 has no miller column widget | | Neither does GTK, Qt or pretty much any other toolkit I've | used. It's not exactly a great example of a standard | widget. | | We could also limit our definition of modern UI toolkits to | only ones that support the Touch Bar and POWER9, but it's | kinda silly. The _vast_ majority of interaction metaphors | are the same between systems. If your OS has a different or | unique function that the vendor wants to see used, it 's up | to them to expose it well. | formerly_proven wrote: | It ain't pretty but does exist in Qt | | https://doc.qt.io/qt-6/qcolumnview.html#details | smoldesu wrote: | Indeed, I stand corrected. Maybe Qt 6 will give it a | glowup befitting of a non-early-2000s Autodesk tool. | ptx wrote: | wxWidgets [1] and SWT [2] are probably the most successful | attempts at striking this balance (using native widgets). | But usually the apps look slightly off on every platform. | | [1] https://www.wxwidgets.org/about/screenshots/ | | [2] https://www.eclipse.org/swt/ | chungy wrote: | > Theoretically you could generate UI code for Win32, Qt, | GTK, and others from a common markup format. | | Lazarus's LCL components pretty much do that. One source, can | target Win32, Qt, GTK, and Cocoa. | robertlagrant wrote: | RIP XUL[0]. | | [0] https://en.m.wikipedia.org/wiki/XUL | poulpy123 wrote: | Interesting to note that GTK3 was launched in 2011 | 1827162 wrote: | And it was a huge step back from GTK2 at the time, taking ages | to mature. Yes, the GNOME project is stagnating rather badly. | Compare that with Qt, which is much better by comparison. | shmerl wrote: | Port to Qt when?-) | | Semi-jokes aside, Gimp needs a better development model and more | backing. Current pace of change with these kind of migrations is | abysmally slow. | p1mrx wrote: | Whenever I install Gimp, I have to remember this tedious sequence | of steps: | | Edit > Preferences > Interface > Toolbox > uncheck "Use tool | groups" | | Please make this the default! Who on Earth thought it was a good | idea to hide the tools in an image editor? | tetris11 wrote: | I like it, the toolbar feels less threatening, and the | groupings make sense. all the keyboard bindings still work so | there's no interruption to workflow, the screen just looks a | little tidier. I salute the effort to maximise the workspace. | Forge36 wrote: | I don't think I've ever set this setting. Did it change recent- | ish? How does this change the UI? | p1mrx wrote: | screenshots: https://imgur.com/a/STMtkS0 | | If I recall correctly, they started hiding the tools by | default 3-5 years ago. | Jach wrote: | I also always go to Preferences > Interface > Icon Theme | and change it back to Legacy, and the Theme to System (a | light one for me). I really don't like the default dark | theme and the lack of color in the icons. I suppose people | who use it all the time just learn keyboard shortcuts. My | casual usage for nearly 20 years though insists on being | able to have the unvocalized thought process: "I need the | eraser, so I'll click on the big pink eraser icon". | shmageggy wrote: | Holy shit, combined with the above that is infinity times | better. Thanks. | kzrdude wrote: | Thanks for the tip. | | Does "mystery meat navigation" ring a bell for anyone? That | metaphor is what I think of when I have to click each tool | group to figure out what's inside. | | I must have read some funny blog post explaining the concept of | Mystery meat navigation. | antibasilisk wrote: | In addition to this I always use the legacy icons, it's much | more obvious what they mean. I find the symbolic ones | impossible to use, and the modern color ones are only a slight | improvement over that. | self_awareness wrote: | Goodbye gtk2 :( | mdp2021 wrote: | I still compile for it. It gives me better results. | hannob wrote: | I wasn't really aware that GIMP wasn't ported to the latest GTK+ | version yet. This is a bit funny given that GTK originally stood | for "GIMP Toolkit". | Synaesthesia wrote: | Yes that's why it's always been 2.x and now will finally go to | version 3. | pengaru wrote: | GTK+3 isn't the latest version either | [deleted] | andrewstuart wrote: | GIMP I don't understand the choice of name. | jrm4 wrote: | Every time I see something about it I'm usually compelled to | make note of what a poor idea it has been to keep this name. | There's a whole lot of proverbial water under that bridge, but | I definitely think the choice to keep it has always been | childish, ridiculous, and perhaps literally the greatest | barrier that has kept it from being a much more serious | competitor to Adobe stuff. | anthk wrote: | Adobe reminds me of a damn old building brick in Spanish... | dontlaugh wrote: | They could just call it GNU Imp. | zamnos wrote: | Or Gim Paint, and then we can argue over how to pronounce | Gim. is it Jim or gimm? | mock-possum wrote: | Related: https://www.headbands.com/gspot/ | 1827162 wrote: | This is something I was actively resisting. It turns out that for | me, I find GTK3 to be less aesthetically pleasing than GTK2. | There are far fewer themes for GTK3, and they aren't as nice as | the GTK2 ones either. Sad to see a step back in user interface | design, in my opinion at least. | | It won't be long before all the distributions catch up and start | removing the GTK2 builds, which are likely to be deprecated. | mdp2021 wrote: | Also because of the _extremely irritating animations_ , which | some found impossible to disable. | ww520 wrote: | That's excellent news. Does this mean GIMP would work well with | high DPI monitor now? I.e. the text on menus and window titles | won't be so small? | sylware wrote: | https://docs.gtk.org/gtk4/migrating-3to4.html | | oooof... | jandrese wrote: | I'm a bit excited about the very last point. I always found the | GtkTreeModel/GtkCellRenderer stuff hard to use. Hopefully the | new system is less confusing. | | My first experience with trying to develop against Gtk4 (about | a year ago) ran into an issue where none of the example | programs in the Gtk repo worked. Apparently the details on how | to actually get the program to pick up the now mandatory CSS | file were not right? All it did was to convince me to stick | with Gtk3 for the meantime. | ufo wrote: | Is migrating from 3 to 4 easier or harder than migrating from 2 | to 3? | TingPing wrote: | That is a very broad question. For something the size and | complexity of gimp with lots of rendering it is still a big | task. Broadly speaking I think 3->4 is often easier though. | phkahler wrote: | I have that in checklist form on solvespace github here: | | https://github.com/solvespace/solvespace/issues/853 | marktangotango wrote: | Offtopic shoutout for solvespace, it is amazing! Is | separating out the geometry code into a stand alone library | on the roadmap at all? Or plans to incorporate the manifold | library? | | https://github.com/elalish/manifold | m3kw9 wrote: | If they could just do one easy thing with a proper designer, that | is to space out the tool icon, menu text better. Right now is too | tight and looks like a 10 year old kids first pass at a tcl/tk | app. | aap_ wrote: | Ah too bad. The file chooser after GTK2 became absolutely | unusable. | superkuh wrote: | Yep. Ability to paste file paths (without invoking some other | key sequence first) into the gtkfilechooserwidget.c remains | broken in Gtk3 and Gtk4. Broken in the sense that you'll get an | error message. They say Gtk3.x isn't frozen but it is when it | comes to the gtkfilechooserwidget.c. They won't work on it and | they won't accept fixes from outside sources. | doodlesdev wrote: | AFAIK GIMP does not use GTK's builtin file chooser, | specifically because it lacked image thumbnails up until | recently. | rwmj wrote: | Time to start working on the Gtk 4 port? | https://docs.gtk.org/gtk4/index.html | formerly_proven wrote: | Gtk 3.0 was released in 2011, the last 3.x release was supposed | to be in 2016, but later 3.24 came along. 3.24 is now up to the | 29th point release with 3.24.29. Kind of an OpenSSL 0.9esque | version number... | | Meanwhile Gtk 2.0 from 2002 was apparently the first GTK+ | version with the GObject system. I'm not sure if distros can | stop shipping Gtk 2 any time soon, as it's quite commonly used | in commercial software and not always vendored (since vendoring | Gtk can be tricky). | asveikau wrote: | > Meanwhile Gtk 2.0 from 2002 was apparently the first GTK+ | version with the GObject system | | Technically true but what I remember from Gtk+ 1.2 is that it | had an object system that was a lot like gobject. It was more | like gobject was factored out into its own library and given | a new name and some different polish. | chungy wrote: | > 3.24 is now up to the 29th point release with 3.24.29. Kind | of an OpenSSL 0.9esque version number... | | It's just semver. Gtk 3 isn't receiving new features, so it's | frozen at 3.24. It still gets bug/security fixes, so 3.24.x | patch releases abound (and it seems the current version is | actually 3.24.37). Similar situation with Gtk2, current | version is 2.24.33. | TingPing wrote: | They slightly cheated and added some new features to 3.24.x | to ease the transition and integrate into newer tech better | like sandboxing. | rleigh wrote: | Before 2.0 it was GtkObject. 2.0 just factored it out so you | could use it for non-GUI code as well. | phkahler wrote: | I'd like someone to move Solvespace to GTK4. It's platform | specific code is all in one file (about 1K LoC). Uses a bare | minimum of UI toolkit. | | https://github.com/solvespace/solvespace/issues/853 | | You know, in case someone wants to get their feet wet in either | GTK4 or Solvespace ;-) | formerly_proven wrote: | I haven't tried but I imagine the LLM stuff might actually | work well for these super-menial coding tasks of porting | between related APIs compared to other coding tasks. There | are usually a lot of "how do I port this snippet of code from | version x.y to (x+1).y" on Q&A sites, forums, mailing lists | etc. which is probably in the training data. | akasakahakada wrote: | I hope they can make the function names shown in GUI be | searchable in python command list. | 120photo wrote: | Are non destructive layers a thing yet? | homarp wrote: | https://www.gimp.org/docs/userfaq.html#when-will-gimp-suppor... | | "Currently the plan is to introduce non-destructive editing in | GIMP 3.2. This is a huge change that will require rethinking | the workflow and parts of the user interface." | | and https://developer.gimp.org/core/roadmap/#non-destructive- | lay... for more details | arbitrage wrote: | I believe GIMP is the oldest F/OSS app I have used more or less | continuously since I first logged into a Linux system _decades_ | ago. | | It's amazing how dedicated they are after all these years. Hats | off to you, people involved with GIMP over the years ... your | work has made a huge difference in many lives and careers. | idoubtit wrote: | I stopped using Gimp a few years ago because it made me lose | data, and I could not find a way to work safely with Gimp. | | I was modifying several PNG images. Once I was done, I closed | the window. As usual, Gimp warned me that I hadn't saved | anything, since it considers that saving to PNG is not saving, | it's just exporting. So I ignored the message, like always. It | turned out I hadn't saved/exported an image, and I swore to use | a saner application and never touch Gimp again. | doodlesdev wrote: | So: | | - You didn't save your file | | - You didn't export your file | | - You ignored GIMP's warning about it | | And somehow it's the program's fault? I guess they could | implement some form of temporary autosave like some office | applications do, but that comes with its own can of worms | (i.e. stuff you really didn't want to save staying on your | drive). | idoubtit wrote: | You misunderstood. I had several tabs in Gimp, each with an | image. I thought I had exported every one (to .png). Gimp | told me I hadn't saved any (to .xcf) and Gimp doesn't care | about exporting. *I had no way to know if my images were | all exported.* | JohnFen wrote: | Seconded. GIMP kicks serious ass, no matter what version of GTK | it uses. | TacticalCoder wrote: | > I believe GIMP is the oldest F/OSS app I have used more or | less continuously since I first logged into a Linux system | decades ago. | | X (Xorg now), xterm, Gimp, Emacs... These guys were there when | I started with Linux and I still use them to this day! | simlevesque wrote: | For me it was Audacity. | Decabytes wrote: | Davies Media Design^1 has the best Gimp tutorials I've ever seen | on YouTube. So happy that a people are making such high quality | tutorials for this tool. It makes it a lot easier to learn it | | 1. https://www.youtube.com/watch?v=_L_MMU22bAw | SV_BubbleTime wrote: | Is it as good as Krita yet? | riidom wrote: | It's give and take. I think the crop tool is better in gimp | than in krita, for example. Because in gimp, you can easily | constrain to x by y pixels (absolute) or x by y ratio | (relative) and it will stick to it no matter what. In krita you | have something like "1.777777778:1" which looks bad imo, and | you can somehow change it accidentally when dragging frames in | viewport. | | But, just a single example. | ColonelPhantom wrote: | Personally I've always preferred GIMP over Krita, but that's | probably just because I rarely use either, and GIMP is "the | devil I know". And I'm comfortable enough with it for the few | tiny things I need to do (I'm decidedly not an artist!) that | "the grass is greener" just doesn't apply. | hdjjhhvvhga wrote: | Just in time! | dig1 wrote: | Gtk devs could learn much from projects like Linux, Windows, | OpenJDK, Clojure, Emacs, or FLTK wrt backward compatibility. When | Linus announced Kernel 5.0, it was "just another release" [1]. | But, unfortunately, I'm getting the impression that Gtk and GNOME | are run by teen boys who want to impress girls rather than get | the job done. | | [1] https://itsfoss.com/linux-kernel-5/ | konart wrote: | >But, unfortunately, I'm getting the impression that Gtk and | GNOME are run by teen boys who want to impress girls rather | than get the job done. | | Why? Because they desided that new features\API\etc are more | important (possibly for a good reason) than speding a great | amount of time on maintaining compatibility? | | Sometimes you have to chose. | | PS: not to mention that number of contributors for Gtk and | Linux (not to mention Windows lol) is quite different. | lallysingh wrote: | Desktop widget libraries aren't wide open spaces for | innovation. What new features/APIs can they add that's worth | porting an app from gtkN to gtk(N+1)? | TingPing wrote: | Touch, animations, styling, portability, rendering | performance, cleaner abstractions... | | GTK4 is very nice. | emkoemko wrote: | fractional scaling? hidpi ? hdr etc ? | anthk wrote: | Read CADT model form JWZ. | johnchristopher wrote: | So, what does a GTK+3 Gimp looks like ? Is it prettier/looks more | integrated with Gnome ? | copperx wrote: | I wish one day to share your optimism. | qtzfz wrote: | Right. I read "GIMP has been ported to GTK+3" and all I can | think is "parts of it will look broken and using some dialogs | will make it crash" | bonzini wrote: | Theming should be more consistent. | rkeene2 wrote: | Consistent with other GTK+3 apps, but less consistent if | you're not using GTK apps a lot. | | But, GTK+3 support should bring HiDPI support. | ColonelPhantom wrote: | I'm on KDE, and GTK3 apps look better than GTK2 ones, | because Breeze Dark is rather tricky to get working | correctly with GTK2 on modern versions of KDE. | | GTK3 looks almost exactly native (down to window tinting), | except that the current version of breeze-gtk seems to | struggle a bit with client-side decoration (the | minimize/maximize/close buttons that are integrated in the | toolbar), making them for example too big. (It's a known | regression and should be fixed in the next version, | though.) | | GTK4 and the whole lack of libadwaita theming thing does | look out of place though. But I use many GTK3 apps on KDE | and they look near perfect. The only thing I can think of | is some color-changes when gaining/losing focus are | sometimes missing in Electron apps whose menu bar is themed | via GTK3, iirc. | tetromino_ wrote: | A GTK+3 Gimp would finally have support for hidpi and wayland | (or at least the gui toolkit will no longer block hidpi and | wayland migration). GUI automation/scripting/plugin development | will probably be easier thanks to gobject introspection. | Various widgets will look nicer. | Spivak wrote: | People saying that it's time to port to GTK4 are missing it. | They've been on GTK2 for 20 years. They've got plenty of time on | GTK3. | shrimp_emoji wrote: | And GTK4 is worse for complex desktop applications, more poorly | documented, and is going to be deprecated even faster than GTK3 | according to the GNOME devs. :D | | Rather switch to Qt tbh | em-bee wrote: | sounds like it would make sense to sit it out and wait for | gtk5 | | https://www.phoronix.com/news/GTK5-Likely-After-GTK-4.12 | squarefoot wrote: | > Rather switch to Qt tbh | | This a thousand times, although they would probably have to | rename it Quimp:) | mdaniel wrote: | So, what you're saying is there are now _two_ benefits, and | only one "impossible to say over the phone" drawback but | also hella easier to search for, so I guess _three_ | benefits | asddubs wrote: | might as well go for Kwimp then and become part of KDE | squarefoot wrote: | I'm not sure the dependency on a desktop manager would be | a good thing. ___________________________________________________________________ (page generated 2023-04-19 23:00 UTC)