Re: createing a client with a core and cross-platform gui

  • From: Kerneels Roos <kerneels@xxxxxxxxx>
  • To: programmingblind@xxxxxxxxxxxxx
  • Date: Tue, 01 Feb 2011 17:04:24 +0200

Each system has it's own unique needs and hence will be best suited with a architecture and code / project organisation carefully thought out exactly for the system at hand. By seperating server and clients into their own projects you force yourself to use a generalised communications regime / protocol which enhances the value of the overall system and increase the likelyhood of all sorts of fantastical clients being developed that are all compliant with your protocol.


With separate projects for each platform you can harness the individual strenghts of each platform as aposed to be tied down with the lowest common denominator. Us blindies forget how superior some GUI toolkits appear over others. Some people just won't use OpenOffice because they think it looks old, out dated and not interesting -- for example -- while technical people couldn't care less as long as it works.

As much as you want to write one GUI for all platforms, this is rarely a success and reminds me why many people thought Java stuff looked so terrible for so long -- it looked the same on all platforms -- terrible. Let me correct this, it was fine for me but people with artistic inclinations didn't think so. I thought and still think that former Sun did a fantastic job though.

All depends on your audience really, but don't forget that people that can see pritty colors, animations and funky shadings / gradients want to see those eye candy :) But not too much of it either -- it really is art and very hard to get right.

I can't see much, but I can tell you that some GUIs just don't sit well amongst all the other apps on a particular system. I can't really say exactly why because I'm not a graphical designer. Maybe the odd ones stick out like sore thumbs -- I don't know.

Have fun!

What system do you want to build bro?

On 2/1/2011 4:11 PM, Littlefield, Tyler wrote:
Well, the server runs on *nix. it'll be using python, twisted and postgresql/sqlite. But a separate project per is just a waste of code, if you can use wxWidgets or somehow design your core so that other GUIs can be wrapped around it.
On 1/31/2011 11:29 PM, Kerneels Roos wrote:
The server side doesn't really have to be cross platform since you have more choice over where and on what it is going to run, yet if you use APIs that are already cross platform like boost for example, even your server could be mostly portable. I would say concentrate all the heavy lifting and complexity in the server and then create custom clients for each new platform you desire to support. Make separate projects for each of these clients so that you can use whatever GUI toolkit you want, and so that you can drop any particular client if it doesn't work out as expected.

GUIs are like flowers; they are pritty and valuable, but they are here today and gone tomorrow.

On 1/29/2011 12:11 PM, Lex wrote:
28.01.2011 23:33, Littlefield, Tyler пишет:
I am developing a client-server app, and I want the client to run on windows, Linux and Mac. So here was y idea: I will develop the core in c++, then just use whatever library I want to per OS and compile it for that. So I'll have different "gui" folders that will hold the code for each separate gui, and then when I compile on anything I'll just include that into the project I'm compiling. Is this a viable solution? Are there other ways to do what I want?

You can use a cross-platform GUI library. WXWidgets seems to be quite accessible, because it uses native widgets on each platform. We're using it to manage GUI in NVDA screen reader.


Lex
__________
View the list's information and change your settings at //www.freelists.org/list/programmingblind





--
Kerneels Roos
Cell: +27 (0)82 309 1998
Skype: cornelis.roos

"There are only two kinds of programming languages in the world; those everyone 
complains about, and those nobody uses."

__________
View the list's information and change your settings at //www.freelists.org/list/programmingblind

Other related posts: