GTK's plan to fix everything: break compatibility every 6 months
-
@Polygeekery Scripting is programming is magic. Job done! :p
-
@dkf said in GTK's plan to fix everything: break compatibility every 6 months:
Any sufficiently advanced configuration system is indistinguishable from scripting.
Any sufficiently advanced scripting facility is indistinguishable from application programming.
-
@Polygeekery LOL
You clocked in late on that one.
-
@flabdablet said in GTK's plan to fix everything: break compatibility every 6 months:
Any sufficiently advanced scripting facility is indistinguishable from application programming.
The configuration for our software is indistinguishable from application programming...
-
@xaade said in GTK's plan to fix everything: break compatibility every 6 months:
Ironically, I work for a company that has a monolithic C ported to C++ enterprisery, and it supports loading a dynamic list of "functions" at runtime, and dynamically calling them with a single executable. Which means its "API" is dynamic, without any scripting.
They could use Cython and then use Python, much much cleaner, and saner
-
@dse Then they'd have to program an interface into our database in python, when we just gave python up for our startup scripting language in favor of C# because it could use our existing database interface.
-
@xaade Oh. That'd mean using IronPython then, and just leveraging that C# code pretty directly. :)
-
@dkf said in GTK's plan to fix everything: break compatibility every 6 months:
Scripting is programming is friendship is magic.
FTFY
and no, I don't watch MLP
-
@blakeyrat
The problem isn't that the Gnome or KDE Library APIs change it is the fact that Linux is basically a house of of cards libraries wise.They could either:
- Depreciate interfaces correctly.
- Include the correct set of libraries for program (basically what most people do on windows). However this takes up more space and you will have some nutters who haven't upgraded their computers since the last century that will complain about the size.
They don't do any of these and instead you just get churn.
-
@dkf I'm pretty sure our C# "scripts" result in a compile on demand kind of thing, with a generic entry point.
YAY for compiler in runtime!
-
@lucas1 So Ubuntu Snap packages?
-
@Polygeekery said in GTK's plan to fix everything: break compatibility every 6 months:
Any sufficiently advanced configuration system is indistinguishable from
scriptingmagic.
-
@lucas1 said in GTK's plan to fix everything: break compatibility every 6 months:
Include the correct set of libraries for program (basically what most people do on windows).
I.e. installing all your shit into /opt/$program, which is what almost all commercial software does on Linux.
-
@lucas1 said in GTK's plan to fix everything: break compatibility every 6 months:
Include the correct set of libraries for program (basically what most people do on windows). However this takes up more space and you will have some nutters who haven't upgraded their computers since the last century that will complain about the size.
Now I imagine a system with programs which are updated on different schedules, so that the same library is installed in multiple places and in multiple versions, most of them with unpatched security holes.
-
@blakeyrat said in GTK's plan to fix everything: break compatibility every 6 months:
Anything to avoid just stopping work and doing some up-front design, I guess. Up-front design is for nerds!
Sounds like what is needed is a shim API to put a decent stable front on GTK. Of course there would have to be a version of the shim for every version of GTK...
-
Speaking about old UIs, I came across an article explaining the X Window System.
-
@blakeyrat said in GTK's plan to fix everything: break compatibility every 6 months:
That's why you spend more time on it, so you make fewer mistakes.
Fewer != none
@blakeyrat said in GTK's plan to fix everything: break compatibility every 6 months:
If an API didn't change for decades, and yet were still relevant and useful, it wouldn't be "ugh", it'd be an amazing monument to the skill of the developers who originally designed it.
Most decades-old APIs are simply kept decades beyond their use-by dates. Or they started off ugly with half a dozen "for future use" parameters just in case. And now there's three "no longer in use" parameters. So the API was never any good even if it's old and "stable".
Here in the real world, requirements and expectations change and software must change to accommodate. APIs change, just like any other interface, to provide new capabilities or remove misfeatures. It can be managed a whole lot better than GTK is apparently doing, but change itself is inevitable.
-
@another_sam said in GTK's plan to fix everything: break compatibility every 6 months:
Here in the real world, requirements and expectations change and software must change to accommodate.
What is a default and why do they matter in API design? :p
The key to managing the evolution of an API is to regard each release of the API as defining a contract, and for the test of fitness of an evolving implementation of that API to be whether the old contract is still honoured. Anything outside the actual contract can evolve, and that's why it pays as an API client to only depend on what was explicitly promised. (For example, depending on the name of a class given to you as implementing an interface is typically a Bad Idea. Yes, you can but it's allowed to change without warning as it isn't typically part of the API contract.)
-
@xaade said in GTK's plan to fix everything: break compatibility every 6 months:
Ironically, I work for a company that has a monolithic C ported to C++ enterprisery, and it supports loading a dynamic list of "functions" at runtime, and dynamically calling them with a single executable. Which means its "API" is dynamic, without any scripting.
That sounds strangely familiar, only I remember it being called MUMPS...
-
@Adynathos said in GTK's plan to fix everything: break compatibility every 6 months:
Speaking about old UIs, I came
That's a weird fetish.
-
That's because this isn't just any old stipple image, that stipple is actually the background of a full X server session running in your browser using HTML5 canvas.
EW EW IT'S ON ME!
-
@anonymous234 This guy actually wrote a full X server in JS. I don't know whether I should be more impressed or horrified.
-
@pydsigner said in GTK's plan to fix everything: break compatibility every 6 months:
I don't know whether I should be more impressed or horrified.
Why not both?
-
@pydsigner said in GTK's plan to fix everything: break compatibility every 6 months:
I don't know whether I should be more impressed or horrified.
-
@dkf said in GTK's plan to fix everything: break compatibility every 6 months:
The key to managing the evolution of an API is to regard each release of the API as defining a contract, and for the test of fitness of an evolving implementation of that API to be whether the old contract is still honoured. Anything outside the actual contract can evolve, and that's why it pays as an API client to only depend on what was explicitly promised. (For example, depending on the name of a class given to you as implementing an interface is typically a Bad Idea. Yes, you can but it's allowed to change without warning as it isn't typically part of the API contract.)
This is basically the enduring theme of The Old New Thing.
-
@pydsigner said in GTK's plan to fix everything: break compatibility every 6 months:
This guy actually wrote a full X server in JS. I don't know whether I should be more impressed or horrified.
I’m both, but I’m mostly wondering why he hasn’t done something more useful with his life. (Then again, I wonder that about myself too.)
-
@error And the many stories there just show how it doesn't work very well in practice.
-
Well, I'm sad.
GTK+ is going to become something that only stock GNOME apps use and everything else will have to move elsewhere, with plans like that.
By the way, someone was asking in another thread, why CLIs are so immensely popular with open-source developers; here's a part of the answer. Not only is CLI simpler by a few orders of magnitude if all you want is scratching a specific itch, it also doesn't fucking break every six months only because a hipster twat thought it'd be fun.
-
I'm not convinced it's that bad, as people can just recompile their programs on the newest GTK, or ship with the old one.
If they break only a few functions, you may not even notice they broke stuff.
-
@candlejack1 said in GTK's plan to fix everything: break compatibility every 6 months:
If they break only a few functions, you may not even notice they broke stuff.
Sounds like a solid plan.
-
@candlejack1 said in GTK's plan to fix everything: break compatibility every 6 months:
If they break only a few functions, you may not even notice they broke stuff.
Or it might just detonate in your face when you least expect it. You just don't know which it will be! Fun fun fun…
-
@wft Yes. But most applications also depend on other things, which can also break every once in a while.
Now that I think about it - some years ago a typical
./configure
script would do endless checks like this (with accompanying#define #ifdef
workarounds in the source code):checking for f_przacsz()... found checking if f_przacsz() really works... yes checking for deviant f_przacsz() ERRNO on SUNIX <= 6.21... yes
Modern CMake configuration seems to do an order of magnitude less, so perhaps overall things have gotten more standardized and not less.
-
@Grunnen I still occasionally run into CMake projects that perform endless checks like that, but the projects in question are pretty old.
-
@Grunnen IS THE BUILD ENVIRONMENT SANE?
-
@candlejack1 said in GTK's plan to fix everything: break compatibility every 6 months:
I'm not convinced it's that bad, as people can just recompile their programs on the newest GTK, or ship with the old one.
Since when do Linux programs ship with any dependencies, instead of making you compile them and it from source?
-
@atimson said in GTK's plan to fix everything: break compatibility every 6 months:
@candlejack1 said in GTK's plan to fix everything: break compatibility every 6 months:
I'm not convinced it's that bad, as people can just recompile their programs on the newest GTK, or ship with the old one.
Since when do Linux programs ship with any dependencies, instead of making you compile them and it from source?
Since apt-get / RPM / Pacman are a thing. Not everything is bloody Gentoo. If a program cannot be found with a package manager, it's probably not worth installing. Case in point: Discourse.
-
@atimson said in GTK's plan to fix everything: break compatibility every 6 months:
instead of making you compile them and it from source
If a program makes you do the latter and is not in the distro's default repositories, you immediately know it's shit.
-
@asdf Pretty much this.
-
@ben_lubar said in GTK's plan to fix everything: break compatibility every 6 months:
IS THE BUILD ENVIRONMENT SANE?
That is a silly question. The build environment is never sane. All you can do is check for expected levels of madness.
-
@dkf said in GTK's plan to fix everything: break compatibility every 6 months:
The build environment is never sane.
I once tried to clean up our build. It looked good at first. Then I learned about all kinds of weird requirements, variants and edge cases the old build supported. Now it's almost as incomprehensible as before, only a bit faster, more modular and easier to debug.
-
@asdf said in GTK's plan to fix everything: break compatibility every 6 months:
@atimson said in GTK's plan to fix everything: break compatibility every 6 months:
instead of making you compile them and it from source
If a program makes you do the latter and is not in the distro's default repositories, you immediately know it's shit.
I disagree. Sometime's it means that the distro sucks. And by "distro" I mean CentOS.
-
@atimson said in GTK's plan to fix everything: break compatibility every 6 months:
Since when do Linux programs ship with any dependencies, instead of making you compile them and it from source?
Have you travelled from the previous century in a timepod?
-
@another_sam said in GTK's plan to fix everything: break compatibility every 6 months:
Have you travelled from the previous century
Technically, yes.
@another_sam said in GTK's plan to fix everything: break compatibility every 6 months:
in a timepod?
Possibly.
Filed under: Define "pod."
-
@error said in GTK's plan to fix everything: break compatibility every 6 months:
@another_sam said in GTK's plan to fix everything: break compatibility every 6 months:
Have you travelled from the previous century
Technically, yes.
I came here from 1994 to say this: ARE THERE ANY BAGELS LEFT?
-
@ben_lubar said in GTK's plan to fix everything: break compatibility every 6 months:
I came here from 1994
I came here from a dystopian future: 1984.
-
@wft said in GTK's plan to fix everything: break compatibility every 6 months:
By the way, someone was asking in another thread, why CLIs are so immensely popular with open-source developers; here's a part of the answer. Not only is CLI simpler by a few orders of magnitude if all you want is scratching a specific itch, it also doesn't fucking break every six months only because a hipster twat thought it'd be fun.
At the expense of the UI never being allowed to change because it's also an API and millions of scripts depend on it.
-
@ben_lubar said in GTK's plan to fix everything: break compatibility every 6 months:
I came here from 1994
Holy crap you're young.
-
@Yamikuronue said in GTK's plan to fix everything: break compatibility every 6 months:
Holy crap you're young.
I know, right? Those damn whippersnappers. Not like us old farts hailing from 1993.
-
@pydsigner said in GTK's plan to fix everything: break compatibility every 6 months:
I disagree. Sometime's it means that the distro sucks. And by "distro" I mean CentOS.
CentOS never has the shit I want, and Ubuntu frequently has broken packages in their community repository. (main is supposedly better, but as incomplete as CentOS)
-
@Maciejasjmj I still have trouble realizing that people born in the 90s are adults now. Hell, I'm barely an adult. My brother was born in '91 and he's a little baby thing, right? >.>