discuss-gnustep
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Consider GtkCore as UI


From: Gregory Casamento
Subject: Re: Consider GtkCore as UI
Date: Tue, 19 Dec 2023 16:07:26 -0500

Albert,

On Tue, Dec 19, 2023 at 12:23 PM Albert Palacios <optimisme@gmail.com> wrote:
Hi, 

I have tried to develop a 'modern' looking theme for GNUstep, but I always end up 'overwriting' base functions in ridiculous ways and finding obstacles that discourage me. 

This is our fault because our documentation has been woefully out of date due to issues with autogsdoc (our tool for documentation generation).   Also, the documentation is kind of in an obscure place, so it's no wonder you missed it.  For future reference it is here...


That documentation is a bit old, but it is better than what you have now. ;) Which is nothing at all.


Especially because I think that when changes are made to the original code, the theme will fail. 

Overriding or category-smashing the code is the absolute worst way.   We have created a class called GSTheme to which all GUI objects delegate their drawing functions.   This class can be loaded at runtime so as to allow the GUI to assume a different theme.   Since it is done using a bundle and the way it is done is by delegating to the GSTheme class it doesn't break the existing code.
 
The themes only work if they are pixel-based and do not change the spacing or positioning of the elements, meaning you have a 90s application with condensed elements and background textures, whereas now the trend is towards spaced elements, flat colors, rounded contours, and transparencies (yes, I know that for transparency you need a suitable compositor...).


Not true.  The Windows theme and native GTK theme are both code-based which use the native widgets of the OS.  As are several other themes that are available.  They are not restricted to just pixel-based themes.

Additionally, Mr. Cardoza, who wrote earlier in this list.  Thought as you do about the theming stuff and I helped him with understanding what could be done by pointing him to the code.  He contributed code to handle the menu padding (PRECISELY THE ISSUE YOU POINTED OUT) to GSTheme about two months ago.
 
For example, I have never managed to add more 'padding' to the menus. The photo of Agora Desktop a bit further up is completely unrealistic with the current GNUStep code. The only way to change the menu items padding is overwriting the original functions:

#import "GV+NSMenuItemCell.h"
#import "GVTheme.h"

@interface NSMenuItemCell (GVThemePrivate)
- (NSSize)_sizeKeyEquivalentText:(NSString *)text;
- (NSString *)_keyEquivalentString;
@end

@implementation NSMenuItemCell (GVTheme)

- (void) calcSize
{  // … original code ...
  // Change width
  _titleWidth = _titleWidth + 50;

  // TODO How to change height ???
}

@end


This is an example of what I mentioned earlier (category smashing).  You don't need to do this.   You should be able to find what you need in the GSTheme class.
 
You can look at the code I've worked with here, although it's probably completely wrong due to lack of documentation.

https://github.com/optimisme/GNUStep-Theme

This is not an attack, I really would like to contribute, at least to modernize the appearance of GNUStep and/or improve the website (which is another huge disaster).

Nor it is being taken as one.  Just don't interpret frank responses as any sort of an attack on you.  None is meant.   I agree that the website needs some updating.

But seeing your attitude, the main developers, who always vehemently defend your opinions, I think it's not really worth it. 

See.... this is the kind of thing I hate.  Someone comes with a stupid suggestion like

1) It's ugly
2) Use GTK 
3) Abandon all of your work and just re-write it...
4) You guys suck

... and when we give them sane feedback it is seen as "vehemently defend your opinions" when all we are trying to do is give friendly feedback and guidance to people who are not doing things properly.   Again, that is our fault, since we don't document things well.

If you *actually* engage the community by reporting bugs or even by submitting code you will find that we are a very welcoming and friendly group.  Don't take redirection as a rebuke of your opinions.  WE WANT YOUR FEEDBACK.  What we don't want is feedback that is not useful (e.g. Consider GTK as GUI) because it tells us NOTHING that is going wrong.

Especially regarding aesthetics, it's enough to follow the history of this mailing list to see a constant pattern:

• Someone opines that GNUStep is ugly.
• Then a series of messages like: GNUStep is super customizable, look at these beautiful screenshots...

Here is the thing...
* The default look is NOT GOING TO CHANGE... it is what it is.  GSTheme draws it when no other theme is available.
* GNUstep IS customizable, but it is not well documented... so the reason you don't see a lot of themes is because as you demonstrated no one knows how to write them.
* The reason you get the responses you do is because the people in the project have a much different experience than you do because we know the project better.   This needs to change.

A few things need to be done:
* The website needs to be improved.
* Documentation needs to be more readily available to users.
* GNUstep needs to make a desktop distribution. (this is something we are working on)

It would be less ridiculous if you stopped saying that GNUStep is beautiful and customizable, because it's not. If it were, there would be more updated themes and applications. Maybe even a desktop.

It is customizable, as pointed out above.... and on that second thing... well, you can blame ME personally for that last one I suppose.  It was me who years ago decided to make GNUstep an API ONLY and NOT as desktop.  This was so that we could focus on being as cross-platform as possible.  Arguably we have done that.  GNUstep is used by many different projects and companies (Keysight [ https://eggplant.io ], Algoriddim [ https://algoriddim.com ], etc).  

We are only now circling back to the idea that we need to create a reference distribution so that it will help people understand what GNUstep is truly capable of.

Look, in the end, the project is yours, and I suppose it has been profitable for you. Why argue, it's not worth it.

No one is arguing with you.  This is called a discussion which is an exchange of ideas.  A difference of opinion or correcting you where you are wrong does not imply an argument.   If you feel as though anything I have said to you or anyone else has said to you or Bruce is wrong or confrontational or argumentative I ask that you please point it out.   I will say the same thing to you that I said REPEATEDLY to Bruce:

SUBMIT BUGS... IF YOU FIND SOMETHING WRONG... SUBMIT BUGS!!!!  TELL US WHAT WE ARE MESSING UP ON!!!  People will be GLAD to engage with you if you do this.  Try it, you might learn something. :) 

Yours, GC


Albert



El 19 des. 2023, a les 16:46, bruce <darkoverlordofdata@gmail.com> va escriure:

Riccardo, I can agree with everything you say. I’ve looked at pictures of gnustep running on mac and windows, and it looks sleek and modern, and native.

My experience on unix like does not track with that. It looks brutalistic. Not native - it never fits in the desktop. What I hear from most people that have tried it is “the 90’s are calling, they want their desktop back”. I see a big disconnect between the way gnustep looks on mac/windows, and the way it looks on linux/freebsd.

Yes, these are all aesthetic value judgements. But aesthetics matter - ask any mac user. I can see if you’re using a business app, ok. But for other users, it is often a non-starter. 

My experience has been:
• Wow this is cool
• Wow this has got a lot of gui glitches
• Wow this looks old
• Wow this is hard to use
• Install something else

But I like the language. I’ve been coding c for 40 years, and objc is awesome. I want to code the version with features like arc. Fortunately, the freebsd repo has that version. But the linux repos don’t. That complicates targeting any app. And I want people to use my app. But computer users see these gui issues, and say the app is buggy. I say it’s not my app, it’s the way it presents on your os. So they use another app. So much for platform agnostic. So much for marketability.



On Tue, Dec 19, 2023 at 3:00 PM Riccardo Mottola <riccardo.mottola@libero.it> wrote:
Hi,

bruce wrote:
> I've tried using libobjc2 with the other runtimes from the linux repo. I
> couldn't get it to work, but it sounds like other people have under
> certain circumstances.

Building libobjc2 can be from easy, "just works" to a nightmare,
depending on a platform.

Best, of course, is if it comes ready for your OS.

> Hm, I'll give that a try,.
> But to build a product, I want to know that my users can install it
> without all the monkey business. Otherwise it becomes a support nightmare.

GCC almost always "just works" if the operating system provides it. If
you don't need Obj-C2 features for your app, it is usually a very easy
path and that's why I love it. Except FreeBSD, where you mention
working. THhere the situation is complicated, because GCC provided has
its obj-c runtime removed, supposing you to use libobjc2, which won't
work. SO I abandoned that path, but compiled libobjc2 from sources.

Riccardo


--

Bruce Davidson




--
Gregory Casamento
GNUstep Lead Developer / OLC, Principal Consultant
http://www.gnustep.org - http://heronsperch.blogspot.com
https://www.patreon.com/bePatron?u=352392 - Become a Patron
https://www.openhub.net/languages/objective_c - OpenHub standings

Sender notified by
Mailtrack
12/19/23, 03:38:45 PM

reply via email to

[Prev in Thread] Current Thread [Next in Thread]