[ANN] (Re)Introducing Mars (Spec 2.0 Gtk3 bindings)
People that assisted to Pharo Days 2019 (or that follow my twitter account) already know this, but it needs to be formally announced: We are working on Spec 2.0, and it will provide not just the classic Morphic bindings but also a new option for developers: Gtk3 bindings! Why we want a Spec 2.0 with different backends? There are reasons that converged to decide us to make it: First, to provide a validated abstract Spec 2.0 that can be used with different backends, preparing Pharo to be able to switch backends without needing to recreate the full IDE from scratch each time (a problem we have partially now in our way to deprecate Morphic). Second, because we receive from different sources the requirement of having the possibility of developing real native-looking desktop applications. Yes, in moment where people talk about the cloud, SaaS and web-applications as the "next big thing" (something that is been declared since years, by the way), we believe is important to provide this, for two big reasons: Because there is still an important place for desktop applications market and most medium-size to big business still require them. Because Pharo itself is a desktop application! (And we need to provide the best experience possible on it). For us, this is a fundamental step to continue improving Pharo itself, and it matches also the work we are doing on going real-headless: Pharo users will be able to start the Morphic world, a Gtk application or the next backend to come. Why Gtk3? There are some other important players in the "native widgets scene", so why we choose Gtk3? Again, several reasons were taken into account: Gtk3 is cross platform. Yes, technically is just "native" in linux, but it works on Windows and macOS too. It is very mature and popular. It is made in plain C. Next step: tool migration The only way to know if you have covered what is needed is actually taking real-life use cases and implementing them. We have a list of tools that needs to be migrated and we are starting from them: Old GT tools will be replaced by new Spec tools (while preserving its power). Calypso UI needs to be rewritten in Spec 2.0 (it is in plain Morphic now). Pharo launcher as a standalone application is a good example of what you can do with the Gtk3 bindings. And that's it. Pharo 8.0 will come with Spec 2.0 and users will be able to benefit of it immediately :) A small screenshot of the new Inspector (WIP): Esteban
Ah yes⦠and same in morphic (but this is kind of boring ;):
On 18 Apr 2019, at 12:08, Esteban Lorenzano <estebanlm@gmail.com> wrote:
People that assisted to Pharo Days 2019 (or that follow my twitter account) already know this, but it needs to be formally announced:
We are working on Spec 2.0, and it will provide not just the classic Morphic bindings but also a new option for developers: Gtk3 bindings!
Why we want a Spec 2.0 with different backends?
There are reasons that converged to decide us to make it:
First, to provide a validated abstract Spec 2.0 that can be used with different backends, preparing Pharo to be able to switch backends without needing to recreate the full IDE from scratch each time (a problem we have partially now in our way to deprecate Morphic). Second, because we receive from different sources the requirement of having the possibility of developing real native-looking desktop applications. Yes, in moment where people talk about the cloud, SaaS and web-applications as the "next big thing" (something that is been declared since years, by the way), we believe is important to provide this, for two big reasons: Because there is still an important place for desktop applications market and most medium-size to big business still require them. Because Pharo itself is a desktop application! (And we need to provide the best experience possible on it).
For us, this is a fundamental step to continue improving Pharo itself, and it matches also the work we are doing on going real-headless: Pharo users will be able to start the Morphic world, a Gtk application or the next backend to come.
Why Gtk3?
There are some other important players in the "native widgets scene", so why we choose Gtk3?
Again, several reasons were taken into account:
Gtk3 is cross platform. Yes, technically is just "native" in linux, but it works on Windows and macOS too. It is very mature and popular. It is made in plain C.
Next step: tool migration
The only way to know if you have covered what is needed is actually taking real-life use cases and implementing them. We have a list of tools that needs to be migrated and we are starting from them:
Old GT tools will be replaced by new Spec tools (while preserving its power). Calypso UI needs to be rewritten in Spec 2.0 (it is in plain Morphic now). Pharo launcher as a standalone application is a good example of what you can do with the Gtk3 bindings.
And that's it. Pharo 8.0 will come with Spec 2.0 and users will be able to benefit of it immediately :)
A small screenshot of the new Inspector (WIP):
<Screenshot 2019-04-18 at 12.07.16.png>
Esteban
Great! Can you explain what is there, what somebody can load and what to expect. And even more important: what not to expect? I donât get any of the essential details from this mail. Norbert
Am 18.04.2019 um 12:08 schrieb Esteban Lorenzano <estebanlm@gmail.com>:
People that assisted to Pharo Days 2019 (or that follow my twitter account) already know this, but it needs to be formally announced:
We are working on Spec 2.0, and it will provide not just the classic Morphic bindings but also a new option for developers: Gtk3 bindings!
Why we want a Spec 2.0 with different backends?
There are reasons that converged to decide us to make it:
First, to provide a validated abstract Spec 2.0 that can be used with different backends, preparing Pharo to be able to switch backends without needing to recreate the full IDE from scratch each time (a problem we have partially now in our way to deprecate Morphic). Second, because we receive from different sources the requirement of having the possibility of developing real native-looking desktop applications. Yes, in moment where people talk about the cloud, SaaS and web-applications as the "next big thing" (something that is been declared since years, by the way), we believe is important to provide this, for two big reasons: Because there is still an important place for desktop applications market and most medium-size to big business still require them. Because Pharo itself is a desktop application! (And we need to provide the best experience possible on it).
For us, this is a fundamental step to continue improving Pharo itself, and it matches also the work we are doing on going real-headless: Pharo users will be able to start the Morphic world, a Gtk application or the next backend to come.
Why Gtk3?
There are some other important players in the "native widgets scene", so why we choose Gtk3?
Again, several reasons were taken into account:
Gtk3 is cross platform. Yes, technically is just "native" in linux, but it works on Windows and macOS too. It is very mature and popular. It is made in plain C.
Next step: tool migration
The only way to know if you have covered what is needed is actually taking real-life use cases and implementing them. We have a list of tools that needs to be migrated and we are starting from them:
Old GT tools will be replaced by new Spec tools (while preserving its power). Calypso UI needs to be rewritten in Spec 2.0 (it is in plain Morphic now). Pharo launcher as a standalone application is a good example of what you can do with the Gtk3 bindings.
And that's it. Pharo 8.0 will come with Spec 2.0 and users will be able to benefit of it immediately :)
A small screenshot of the new Inspector (WIP):
<Screenshot 2019-04-18 at 12.07.16.png>
Esteban
+1 to Norbert. In particular, does it mean that, from Pharo 8, we will be *required* to install Gtk3 backend to use Pharo? Peter Kenny From: Pharo-users <pharo-users-bounces@lists.pharo.org> On Behalf Of Norbert Hartl Sent: 18 April 2019 11:58 To: Pharo users users <pharo-users@lists.pharo.org> Cc: Pharo Dev <pharo-dev@lists.pharo.org> Subject: Re: [Pharo-users] [ANN] (Re)Introducing Mars (Spec 2.0 Gtk3 bindings) Great! Can you explain what is there, what somebody can load and what to expect. And even more important: what not to expect? I donât get any of the essential details from this mail. Norbert Am 18.04.2019 um 12:08 schrieb Esteban Lorenzano < <mailto:estebanlm@gmail.com> estebanlm@gmail.com>: People that assisted to Pharo Days 2019 (or that follow my twitter account) already know this, but it needs to be formally announced: We are working on Spec 2.0, and it will provide not just the classic Morphic bindings but also a new option for developers: Gtk3 bindings! Why we want a Spec 2.0 with different backends? There are reasons that converged to decide us to make it: * First, to provide a validated abstract Spec 2.0 that can be used with different backends, preparing Pharo to be able to switch backends without needing to recreate the full IDE from scratch each time (a problem we have partially now in our way to deprecate Morphic). * Second, because we receive from different sources the requirement of having the possibility of developing real native-looking desktop applications. Yes, in moment where people talk about the cloud, SaaS and web-applications as the "next big thing" (something that is been declared since years, by the way), we believe is important to provide this, for two big reasons: 1. Because there is still an important place for desktop applications market and most medium-size to big business still require them. 2. Because Pharo itself is a desktop application! (And we need to provide the best experience possible on it). For us, this is a fundamental step to continue improving Pharo itself, and it matches also the work we are doing on going real-headless: Pharo users will be able to start the Morphic world, a Gtk application or the next backend to come. Why Gtk3? There are some other important players in the "native widgets scene", so why we choose Gtk3? Again, several reasons were taken into account: * Gtk3 is cross platform. Yes, technically is just "native" in linux, but it works on Windows and macOS too. * It is very mature and popular. * It is made in plain C. Next step: tool migration The only way to know if you have covered what is needed is actually taking real-life use cases and implementing them. We have a list of tools that needs to be migrated and we are starting from them: 1. Old GT tools will be replaced by new Spec tools (while preserving its power). 2. Calypso UI needs to be rewritten in Spec 2.0 (it is in plain Morphic now). 3. Pharo launcher as a standalone application is a good example of what you can do with the Gtk3 bindings. And that's it. Pharo 8.0 will come with Spec 2.0 and users will be able to benefit of it immediately :) A small screenshot of the new Inspector (WIP): <Screenshot 2019-04-18 at 12.07.16.png> Esteban
On 18 Apr 2019, at 13:08, PBKResearch <peter@pbkresearch.co.uk> wrote:
+1 to Norbert. In particular, does it mean that, from Pharo 8, we will be *required* to install Gtk3 backend to use Pharo?
For now is in early development so there is no easy way to install (since there are things to replace/fix in current image). We will provide an install script soon (or maybe a prepared image, while we arrive to have a reliable baseline). And no, you will not need it. Gtk3 bindings are an extra. If you want to do a desktop application (for example Schmidt is doing it), maybe you will want to install it. Otherwise you will continue as before. And to be clear: Pharo 8 WILL NOT be a Gtk3 application. Even if eventually the IDE will be able to run with it (since it will be a Spec 2.0 based IDE), there are a lot of huge things that need to be migrated before (and the GTInspector is not big: Calypso is). And still then (maybe in Pharo 9), running with Gtk3 will be a choice. Esteban
Peter Kenny
From: Pharo-users <pharo-users-bounces@lists.pharo.org> On Behalf Of Norbert Hartl Sent: 18 April 2019 11:58 To: Pharo users users <pharo-users@lists.pharo.org> Cc: Pharo Dev <pharo-dev@lists.pharo.org> Subject: Re: [Pharo-users] [ANN] (Re)Introducing Mars (Spec 2.0 Gtk3 bindings)
Great!
Can you explain what is there, what somebody can load and what to expect. And even more important: what not to expect?
I donât get any of the essential details from this mail.
Norbert
Am 18.04.2019 um 12:08 schrieb Esteban Lorenzano <estebanlm@gmail.com <mailto:estebanlm@gmail.com>>:
People that assisted to Pharo Days 2019 (or that follow my twitter account) already know this, but it needs to be formally announced:
We are working on Spec 2.0, and it will provide not just the classic Morphic bindings but also a new option for developers: Gtk3 bindings!
Why we want a Spec 2.0 with different backends?
There are reasons that converged to decide us to make it:
First, to provide a validated abstract Spec 2.0 that can be used with different backends, preparing Pharo to be able to switch backends without needing to recreate the full IDE from scratch each time (a problem we have partially now in our way to deprecate Morphic). Second, because we receive from different sources the requirement of having the possibility of developing real native-looking desktop applications. Yes, in moment where people talk about the cloud, SaaS and web-applications as the "next big thing" (something that is been declared since years, by the way), we believe is important to provide this, for two big reasons: Because there is still an important place for desktop applications market and most medium-size to big business still require them. Because Pharo itself is a desktop application! (And we need to provide the best experience possible on it).
For us, this is a fundamental step to continue improving Pharo itself, and it matches also the work we are doing on going real-headless: Pharo users will be able to start the Morphic world, a Gtk application or the next backend to come.
Why Gtk3?
There are some other important players in the "native widgets scene", so why we choose Gtk3?
Again, several reasons were taken into account:
Gtk3 is cross platform. Yes, technically is just "native" in linux, but it works on Windows and macOS too. It is very mature and popular. It is made in plain C.
Next step: tool migration
The only way to know if you have covered what is needed is actually taking real-life use cases and implementing them. We have a list of tools that needs to be migrated and we are starting from them:
Old GT tools will be replaced by new Spec tools (while preserving its power). Calypso UI needs to be rewritten in Spec 2.0 (it is in plain Morphic now). Pharo launcher as a standalone application is a good example of what you can do with the Gtk3 bindings.
And that's it. Pharo 8.0 will come with Spec 2.0 and users will be able to benefit of it immediately :)
A small screenshot of the new Inspector (WIP):
<Screenshot 2019-04-18 at 12.07.16.png>
Esteban
That looks very cool For the text editor are you using GtkSourceView or something else? Greetings, Ronie El jue., 18 abr. 2019 a las 7:23, Esteban Lorenzano (<estebanlm@gmail.com>) escribió:
On 18 Apr 2019, at 13:08, PBKResearch <peter@pbkresearch.co.uk> wrote:
+1 to Norbert. In particular, does it mean that, from Pharo 8, we will be *required* to install Gtk3 backend to use Pharo?
For now is in early development so there is no easy way to install (since there are things to replace/fix in current image). We will provide an install script soon (or maybe a prepared image, while we arrive to have a reliable baseline).
And no, you will not need it. Gtk3 bindings are an extra. If you want to do a desktop application (for example Schmidt is doing it), maybe you will want to install it. Otherwise you will continue as before.
And to be clear: Pharo 8 WILL NOT be a Gtk3 application. Even if eventually the IDE will be able to run with it (since it will be a Spec 2.0 based IDE), there are a lot of huge things that need to be migrated before (and the GTInspector is not big: Calypso is). And still then (maybe in Pharo 9), running with Gtk3 will be a choice.
Esteban
Peter Kenny
*From:* Pharo-users <pharo-users-bounces@lists.pharo.org> *On Behalf Of *Norbert Hartl *Sent:* 18 April 2019 11:58 *To:* Pharo users users <pharo-users@lists.pharo.org> *Cc:* Pharo Dev <pharo-dev@lists.pharo.org> *Subject:* Re: [Pharo-users] [ANN] (Re)Introducing Mars (Spec 2.0 Gtk3 bindings)
Great!
Can you explain what is there, what somebody can load and what to expect. And even more important: what not to expect?
I donât get any of the essential details from this mail.
Norbert
Am 18.04.2019 um 12:08 schrieb Esteban Lorenzano <estebanlm@gmail.com>:
People that assisted to Pharo Days 2019 (or that follow my twitter account) already know this, but it needs to be formally announced:
*We are working on Spec 2.0, and it will provide not just the classic Morphic bindings but also a new option for developers: Gtk3 bindings!*
Why we want a Spec 2.0 with different backends?
There are reasons that converged to decide us to make it:
- First, to provide a validated abstract Spec 2.0 that can be used with different backends, preparing Pharo to be able to switch backends without needing to recreate the full IDE from scratch each time (a problem we have partially now in our way to deprecate Morphic). - Second, because we receive from different sources the requirement of having the possibility of developing real native-looking desktop applications. Yes, in moment where people talk about the cloud, SaaS and web-applications as the "next big thing" (something that is been declared since years, by the way), we believe is important to provide this, for two big reasons:
1. Because there is still an important place for desktop applications market and most medium-size to big business still require them. 2. Because Pharo itself is a desktop application! (And we need to provide the best experience possible on it).
For us, this is a fundamental step to continue improving Pharo itself, and it matches also the work we are doing on going real-headless: Pharo users will be able to start the Morphic world, a Gtk application or the next backend to come.
Why Gtk3?
There are some other important players in the "native widgets scene", so why we choose Gtk3?
Again, several reasons were taken into account:
- Gtk3 is cross platform. Yes, technically is just "native" in linux, but it works on Windows and macOS too. - It is very mature and popular. - It is made in plain C.
Next step: tool migration
The only way to know if you have covered what is needed is actually taking real-life use cases and implementing them. We have a list of tools that needs to be migrated and we are starting from them:
1. Old GT tools will be replaced by new Spec tools (while preserving its power). 2. Calypso UI needs to be rewritten in Spec 2.0 (it is in plain Morphic now). 3. Pharo launcher as a standalone application is a good example of what you can do with the Gtk3 bindings.
And that's it. Pharo 8.0 will come with Spec 2.0 and users will be able to benefit of it immediately :)
A small screenshot of the new Inspector (WIP):
<Screenshot 2019-04-18 at 12.07.16.png>
Esteban
Hi Ronie,
On 18 Apr 2019, at 18:56, Ronie Salgado <roniesalg@gmail.com> wrote:
That looks very cool
For the text editor are you using GtkSourceView or something else?
For now, we are using a plain GtkTextView but we will switch to GtkSourceView later (just because it provides some functionality like adornments for breakpoints and that the I do not want to do myself, even if it would be possible). Esteban
Greetings, Ronie
El jue., 18 abr. 2019 a las 7:23, Esteban Lorenzano (<estebanlm@gmail.com <mailto:estebanlm@gmail.com>>) escribió:
On 18 Apr 2019, at 13:08, PBKResearch <peter@pbkresearch.co.uk <mailto:peter@pbkresearch.co.uk>> wrote:
+1 to Norbert. In particular, does it mean that, from Pharo 8, we will be *required* to install Gtk3 backend to use Pharo?
For now is in early development so there is no easy way to install (since there are things to replace/fix in current image). We will provide an install script soon (or maybe a prepared image, while we arrive to have a reliable baseline).
And no, you will not need it. Gtk3 bindings are an extra. If you want to do a desktop application (for example Schmidt is doing it), maybe you will want to install it. Otherwise you will continue as before.
And to be clear: Pharo 8 WILL NOT be a Gtk3 application. Even if eventually the IDE will be able to run with it (since it will be a Spec 2.0 based IDE), there are a lot of huge things that need to be migrated before (and the GTInspector is not big: Calypso is). And still then (maybe in Pharo 9), running with Gtk3 will be a choice.
Esteban
Peter Kenny
From: Pharo-users <pharo-users-bounces@lists.pharo.org <mailto:pharo-users-bounces@lists.pharo.org>> On Behalf Of Norbert Hartl Sent: 18 April 2019 11:58 To: Pharo users users <pharo-users@lists.pharo.org <mailto:pharo-users@lists.pharo.org>> Cc: Pharo Dev <pharo-dev@lists.pharo.org <mailto:pharo-dev@lists.pharo.org>> Subject: Re: [Pharo-users] [ANN] (Re)Introducing Mars (Spec 2.0 Gtk3 bindings)
Great!
Can you explain what is there, what somebody can load and what to expect. And even more important: what not to expect?
I donât get any of the essential details from this mail.
Norbert
Am 18.04.2019 um 12:08 schrieb Esteban Lorenzano <estebanlm@gmail.com <mailto:estebanlm@gmail.com>>:
People that assisted to Pharo Days 2019 (or that follow my twitter account) already know this, but it needs to be formally announced:
We are working on Spec 2.0, and it will provide not just the classic Morphic bindings but also a new option for developers: Gtk3 bindings!
Why we want a Spec 2.0 with different backends?
There are reasons that converged to decide us to make it:
First, to provide a validated abstract Spec 2.0 that can be used with different backends, preparing Pharo to be able to switch backends without needing to recreate the full IDE from scratch each time (a problem we have partially now in our way to deprecate Morphic). Second, because we receive from different sources the requirement of having the possibility of developing real native-looking desktop applications. Yes, in moment where people talk about the cloud, SaaS and web-applications as the "next big thing" (something that is been declared since years, by the way), we believe is important to provide this, for two big reasons: Because there is still an important place for desktop applications market and most medium-size to big business still require them. Because Pharo itself is a desktop application! (And we need to provide the best experience possible on it).
For us, this is a fundamental step to continue improving Pharo itself, and it matches also the work we are doing on going real-headless: Pharo users will be able to start the Morphic world, a Gtk application or the next backend to come.
Why Gtk3?
There are some other important players in the "native widgets scene", so why we choose Gtk3?
Again, several reasons were taken into account:
Gtk3 is cross platform. Yes, technically is just "native" in linux, but it works on Windows and macOS too. It is very mature and popular. It is made in plain C.
Next step: tool migration
The only way to know if you have covered what is needed is actually taking real-life use cases and implementing them. We have a list of tools that needs to be migrated and we are starting from them:
Old GT tools will be replaced by new Spec tools (while preserving its power). Calypso UI needs to be rewritten in Spec 2.0 (it is in plain Morphic now). Pharo launcher as a standalone application is a good example of what you can do with the Gtk3 bindings.
And that's it. Pharo 8.0 will come with Spec 2.0 and users will be able to benefit of it immediately :)
A small screenshot of the new Inspector (WIP):
<Screenshot 2019-04-18 at 12.07.16.png>
Esteban
"Because there is still an important place for desktop applications market and most medium-size to big business still require them." Really? Most things run on browsers these days. Why would I need a GTK layer? (btw, GTK is yet another dependency on a 3rd party package) In my opinion the most versatile and advanced user application interface is: almost any internet browser! Through all these many years, internet browsers have evolved into excellent GUIs with endless possibilities for style (css) formatting, fonts, colors, buttons etc. Extremely flexible. you can even include all sorts of plugins, Also you can use image morphs for graphs etc. What runs in a browser is computer independent, you'd cover many devices (phones, pads, pc, macs, tv, etc) in one go. In many cases, you don't even have to manage layout, browser does it for you. What more to wish for? I could ask then, why implement similar GUI stuff, writing tons of classes that interact with GTK, when internet browsers offer already a myriad of far more advanced features? Why re-invent the wheel? The combination Pharo with Seaside (or equivalent) is very powerful. Sure, there might be some situations where using a browser as user interface is not desired or adequate, but currently I can't think of one. So Imho best thing to do is: ***Always make any user app as a web app!*** Which of course you can run "stand alone" with Pharo/Seaside as server e.g. localhost:8080/yourApp If one day a user would like to use their app via the internet, then no changes are needed because the app was already initially made for an internet browser as GUI, so it will run anywhere. To make apps that way the Pharo IDE as it is now stand alone is a pleasure. I am currently restarting my app dev with Pharo/Seaside. The image is a start of the dental app I am making, far from complete, but I am sure you'll get the general idea. Regards Ted <http://forum.world.st/file/t230630/Screen_Shot_2019-04-19_at_18.png> -- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
"Because there is still an important place for desktop applications market and most medium-size to big business still require them." Really? Most things run on browsers these days.
Why would I need a GTK layer? (btw, GTK is yet another dependency on a 3rd party package) In my opinion the most versatile and advanced user application interface is: almost any internet browser!
Maybe but desktop apps feel nice to me. Maybe because the web wasnât designed for apps... Iâm ok with them but I want desktop apps these days. My 2 cents
Hi,
On 19 Apr 2019, at 19:17, TedVanGaalen <tedvga@gmail.com> wrote:
"Because there is still an important place for desktop applications market and most medium-size to big business still require them." Really? Most things run on browsers these days.
I say same: Really? How many web applications do you use regularly? Because I see my own desktop, I use a lot of applications and none of them is a desktop application: - the apps I use to program: desktop. - the apps I use to communicate: desktop (and yes, there is gmail but I use mail, and there is discord web, but the desktop app is better⦠and all the others I use). - the apps I use to write: desktop. - the apps to play: desktop. - the apps I use to play: desktop. If I check⦠the only web application I use is my home banking app. And that, when I go through my laptop, because if I use my phone I have an app who is a native app (so is assimilable to âdesktopâ). You may say âbut you are you and thatâs not the generalityâ. Well, maybe, but: - I check my girlfriendâs computer (she is a sociology professor⦠nothing to do with software): she uses Ulysses to write (a desktop app), pages and office (desktop, forget about 365 or others). Here other tools: chat, discord, mail. Always desktop. - I talk with my brother in law (he works at facebook, but in the âcontrolâ part): they use a desktop app. - I go to a restaurant: they use a desktop app. - I talk with a friend of mine who owns a real state business: desktop apps to manage them. For area: - programming tools: web IDEs are at least for now just a toy. - productivity tools: all in desktop (web versions do not match them) - graphical tools: desktop. - games: desktop. (And I can continue) Really, people: how many web applications have *for real* replaced the desktop apps? They have enlarge the possibilities: yes. They are useful in certain scenarios: yes. They are preferred for big business: (seems to) yes. But that is just a small part of that. All the rest is desktop. Do not fool yourself. 15 years ago people were already talking about the web-apps revolution. And we are still talking about. It may or may not happen, but we are still far from it.
Why would I need a GTK layer? (btw, GTK is yet another dependency on a 3rd party package)
Breaking news: if you donât want it, you donât use it. (But even then, you are already relying in 3rd party packages)
In my opinion the most versatile and advanced user application interface is: almost any internet browser!
Already answered. I find that sentence at least an exaggeration (and a misread of reality).
Through all these many years, internet browsers have evolved into excellent GUIs with endless possibilities for style (css) formatting, fonts, colors, buttons etc. Extremely flexible. you can even include all sorts of plugins, Also you can use image morphs for graphs etc. What runs in a browser is computer independent, you'd cover many devices (phones, pads, pc, macs, tv, etc) in one go. In many cases, you don't even have to manage layout, browser does it for you. What more to wish for?
I could ask then, why implement similar GUI stuff, writing tons of classes that interact with GTK, when internet browsers offer already a myriad of far more advanced features? Why re-invent the wheel?
And I could ask you: Why nobody has done it as reliable as a desktop app? But hey! Nothing forbids us to do a web based spec backend. Is just the decision of someone to implement it.
The combination Pharo with Seaside (or equivalent) is very powerful. Sure, there might be some situations where using a browser as user interface is not desired or adequate, but currently I can't think of one.
Matter of opinions. I canât think on a situation when I would prefer a web app over a desktop app.
So Imho best thing to do is: ***Always make any user app as a web app!*** Which of course you can run "stand alone" with Pharo/Seaside as server e.g. localhost:8080/yourApp
The moment you say âalwaysâ you are already taking a fanatic decision that reality can prove it wrong. There is no silver bullet: - I do not think everything has to be desktop - Nor I think the solution for everything is web By implementing the Spec 2 backend what we are doing is putting Pharo in a position of switching backends if we decide it. By implementing the Gtk3 backend we are empowering the vast majority of Pharo users by giving to them a way to do something they couldnât before (and yes, there is already people using it to develop their business).
If one day a user would like to use their app via the internet, then no changes are needed because the app was already initially made for an internet browser as GUI, so it will run anywhere.
Yeah, well. Until you have a functionality implemented that is not supported in your browser (and then you need to update/change browsers). And then tell me: who is relying in a 3rd party software?
To make apps that way the Pharo IDE as it is now stand alone is a pleasure. I am currently restarting my app dev with Pharo/Seaside. The image is a start of the dental app I am making, far from complete, but I am sure you'll get the general idea.
I get it. I just think you are not taking into account the problem others may have but your own needs here. - we want YOU to succeed on making a web application (and that means probably seaside+pharo in someway) - but we also want to give you the best tools to develop⦠in Pharo. And Pharo is a desktop application and it will continue like that for many time. Then we invest in Spec2: to make the best UI layer we can provide. As aligned with state of the art desktop developments as we can. Esteban
Regards Ted <http://forum.world.st/file/t230630/Screen_Shot_2019-04-19_at_18.png>
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
On 19 Apr 2019, at 19:55, Esteban Lorenzano <estebanlm@gmail.com> wrote:
Hi,
On 19 Apr 2019, at 19:17, TedVanGaalen <tedvga@gmail.com <mailto:tedvga@gmail.com>> wrote:
"Because there is still an important place for desktop applications market and most medium-size to big business still require them." Really? Most things run on browsers these days.
I say same: Really? How many web applications do you use regularly? Because I see my own desktop, I use a lot of applications and none of them is a desktop application: None of the is a *web* application ;)
- the apps I use to program: desktop. - the apps I use to communicate: desktop (and yes, there is gmail but I use mail, and there is discord web, but the desktop app is better⦠and all the others I use). - the apps I use to write: desktop. - the apps to play: desktop. - the apps I use to play: desktop. If I check⦠the only web application I use is my home banking app. And that, when I go through my laptop, because if I use my phone I have an app who is a native app (so is assimilable to âdesktopâ).
You may say âbut you are you and thatâs not the generalityâ. Well, maybe, but:
- I check my girlfriendâs computer (she is a sociology professor⦠nothing to do with software): she uses Ulysses to write (a desktop app), pages and office (desktop, forget about 365 or others). Here other tools: chat, discord, mail. Always desktop. - I talk with my brother in law (he works at facebook, but in the âcontrolâ part): they use a desktop app. - I go to a restaurant: they use a desktop app. - I talk with a friend of mine who owns a real state business: desktop apps to manage them.
For area: - programming tools: web IDEs are at least for now just a toy. - productivity tools: all in desktop (web versions do not match them) - graphical tools: desktop. - games: desktop. (And I can continue)
Really, people: how many web applications have *for real* replaced the desktop apps? They have enlarge the possibilities: yes. They are useful in certain scenarios: yes. They are preferred for big business: (seems to) yes.
But that is just a small part of that. All the rest is desktop. Do not fool yourself.
15 years ago people were already talking about the web-apps revolution. And we are still talking about. It may or may not happen, but we are still far from it.
Why would I need a GTK layer? (btw, GTK is yet another dependency on a 3rd party package)
Breaking news: if you donât want it, you donât use it. (But even then, you are already relying in 3rd party packages)
In my opinion the most versatile and advanced user application interface is: almost any internet browser!
Already answered. I find that sentence at least an exaggeration (and a misread of reality).
Through all these many years, internet browsers have evolved into excellent GUIs with endless possibilities for style (css) formatting, fonts, colors, buttons etc. Extremely flexible. you can even include all sorts of plugins, Also you can use image morphs for graphs etc. What runs in a browser is computer independent, you'd cover many devices (phones, pads, pc, macs, tv, etc) in one go. In many cases, you don't even have to manage layout, browser does it for you. What more to wish for?
I could ask then, why implement similar GUI stuff, writing tons of classes that interact with GTK, when internet browsers offer already a myriad of far more advanced features? Why re-invent the wheel?
And I could ask you: Why nobody has done it as reliable as a desktop app? But hey! Nothing forbids us to do a web based spec backend. Is just the decision of someone to implement it.
The combination Pharo with Seaside (or equivalent) is very powerful. Sure, there might be some situations where using a browser as user interface is not desired or adequate, but currently I can't think of one.
Matter of opinions. I canât think on a situation when I would prefer a web app over a desktop app.
So Imho best thing to do is: ***Always make any user app as a web app!*** Which of course you can run "stand alone" with Pharo/Seaside as server e.g. localhost:8080/yourApp
The moment you say âalwaysâ you are already taking a fanatic decision that reality can prove it wrong. There is no silver bullet: - I do not think everything has to be desktop - Nor I think the solution for everything is web
By implementing the Spec 2 backend what we are doing is putting Pharo in a position of switching backends if we decide it. By implementing the Gtk3 backend we are empowering the vast majority of Pharo users by giving to them a way to do something they couldnât before (and yes, there is already people using it to develop their business).
If one day a user would like to use their app via the internet, then no changes are needed because the app was already initially made for an internet browser as GUI, so it will run anywhere.
Yeah, well. Until you have a functionality implemented that is not supported in your browser (and then you need to update/change browsers). And then tell me: who is relying in a 3rd party software?
To make apps that way the Pharo IDE as it is now stand alone is a pleasure. I am currently restarting my app dev with Pharo/Seaside. The image is a start of the dental app I am making, far from complete, but I am sure you'll get the general idea.
I get it. I just think you are not taking into account the problem others may have but your own needs here.
- we want YOU to succeed on making a web application (and that means probably seaside+pharo in someway) - but we also want to give you the best tools to develop⦠in Pharo. And Pharo is a desktop application and it will continue like that for many time. Then we invest in Spec2: to make the best UI layer we can provide. As aligned with state of the art desktop developments as we can.
Esteban
Regards Ted <http://forum.world.st/file/t230630/Screen_Shot_2019-04-19_at_18.png <http://forum.world.st/file/t230630/Screen_Shot_2019-04-19_at_18.png>>
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html <http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html>
Hi Esteban let me write an example: (lots of time at the moment) -------- Hypothetical CASE 1 Stand Alone Solution: Currently it's just a pilot/study project, but let's assume for a moment that after a year so of really hard working on it in Pharo, I finally completed my dental application system, that is, as as a stand-alone desktop application... After splatting a few initial bugs, the dental clinic is happy with my new dental application, and they paid my bill. Mods were relatively easy to implement, because it is Smalltalk, not to mention the fantastic debugger facilities, simply very cool. They need to run the app simultaneously on 4 computers: that is 4 stand alone apps running their own separated Smalltalk images. Using a Postgress server as a DB on one of their PCs tied everything together. Apart from having to install live Smalltalk images om each computer, backing them up etc. not much of a problem, one would think, right? So far so good. ...apart from having to install and maintain the app on each and every computer they use, that is... Two weeks later after my app went real: The clinic is expanding and another 3 computers will be added soon, meaning yet even more to install and maintain. Hey! also a new update of Pharo arrives, I need to update 7 images import my apps packages in the new images again. ( let alone the many system updates on especially Windows machines) Test if everything works ok again etc. Having no down-time is crucial: all done outside of the clinic's working hours, of course. Great. Oh, I almost forgot: they will install a iPads and/or Android tablets soon, which will mounted close near each patient chair. They do that anyway because analytical imaging apps and a drill controlling app of other firms run on these tablets. They would be happy if they could run my dental app on these tablets too, so they don't have walk back and forth to their PCs all the time. Jikes! Now I am really stuck! Because I wrote a stand alone app that doesn't run on these tablets! What can I do? Write special versions of my app for Androids and iPads? Impossible! this would take me a year or so. Nightmare. In the end the clinic dumped my app and thus me, and bought another app from another firm, which runs on all devices because it is a web app. How could I be so stupid not to make it a web browser app in the first place? -------- Hypothetical CASE 2: App as Web Browser App: Took a more modern approach: programmed my app for user access via a web browser, A web browser is, if you really look at it, in fact nothing more than a very advanced user terminal with endles GUI possibilities. Which btw allowed me to style the app esthetically in any way my customer likes. Now the cool thing is, on many devices, whether PCs, Macs, Android and Apple tablets and Phones the user GUI presentation and interaction is nearly identical. Which implies, I have to write my dental app only once, and it will run on any device that is connected to an intranet or internet. Not only that, there is just *one* single Pharo Image running instead of many stand alone apps on an ever changing nr of computers. .When installing a new Pharo version or update the app, I test it on another Pharo/Seaside server and can switch seamlessly between the two. The dental clinic is happy because it runs flawlessly on all devices they have and expanding or shrinking the number of devices is no problem. Not only that, In case of problems one can switch in no time to the shadow server app so we have continuity here. There is another important advantage as well. The users interacts with the app in a browser window only, (a thin client) that means they don't have access to the real application, that is, the delicate Smalltalk image of the Pharo/Seaside server app which runs 24/7 on a reasonably fast computer in a locked room with an emergency power supply of course, together with its friend the Database, and the room is only accessible by a responsible employee(s). I am happy too, not only because the customer is, but also because I avoided a nightmare and can do maintenance and updates, say, in 5 % of the time needed when I had to do maintenance for e.g. 7 stand alone apps running om separate computers. --------- So far for my hypothetical examples, just to illustrate. Note that on the internet, each site that you might visit is of course a web app of its own. So you probably interact with more web apps than you'd realize. Note that some are really advanced like e.g. web shops like Amazon. There are many good websites that function really great, but a lot are almost depressing. You're absolutely right that a lot of it is inferior, but you might have noticed also that things are slowly improving. This bad quality with (still) many web apps/sites is because as you know these are mostly built with chaotic hybrid systems/tools and unsafe languages like Javascript, ever changing packages, interfaces, tools etc. Compared to that, building web apps with Pharo/Seaside is a lot more straight forward and reliable, because everything is done in the Smalltalk image. Note that the web browser is not the limit itself, but rather the web app using the browser GUI. You can really design and build beautiful and ergonomically sound web apps, because there are so many possibilities. However, the main reason for choosing to make apps as web apps is that it is the only way to get your app and data accessible op nearly all devices. Build it once and run it everywhere. You see, this is a typical application developer's perspective, not that far from reality, I can tell you that. Kindly asking Tool Developers to learn more about the people and their environment they build tools for. because it's not only tech but a lot of things around it too. In any case Smalltalk/Pharo/Seaside is a great to build apps with. Unfortunately a lot of people still don't know this. Kind Regards Ted -- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
Doing a web only app is a solution but not the best one to me. And there are ways to update a desktop app, especially if pharo based. Ok for mobile but I think also this deserve specific dev. The holy grail of writing once deploy everywhere is nice but in my limited experience this is more a question of compromise and at the end you get something pretty annoying and inconsistent. If you cannot develop native (or even hybrid) on tablet, then pure web is an option but not a cool one. Last point is I want now distributed apps that work offline and online. Itâs doable with web apps but kind of more difficult to manage. In your hypothetical example, no connection = no app ? Another solution is using a local web server but it doesnât feel very native again. There are solutions like electron too but still, even if I find them quite nice, I cannot stand the launch time... So, to me, Iâm really happy that SPEC provides now native windows. And as you say there is seaside and all other web stack lib like zinc etc... so best of both world. My 2 cents, Cédrick
Le 19 avr. 2019 à 23:50, TedVanGaalen <tedvga@gmail.com> a écrit :
Hi Esteban let me write an example: (lots of time at the moment) -------- Hypothetical CASE 1 Stand Alone Solution:
Currently it's just a pilot/study project, but let's assume for a moment that after a year so of really hard working on it in Pharo, I finally completed my dental application system, that is, as as a stand-alone desktop application...
After splatting a few initial bugs, the dental clinic is happy with my new dental application, and they paid my bill. Mods were relatively easy to implement, because it is Smalltalk, not to mention the fantastic debugger facilities, simply very cool.
They need to run the app simultaneously on 4 computers: that is 4 stand alone apps running their own separated Smalltalk images. Using a Postgress server as a DB on one of their PCs tied everything together. Apart from having to install live Smalltalk images om each computer, backing them up etc. not much of a problem, one would think, right? So far so good. ...apart from having to install and maintain the app on each and every computer they use, that is...
Two weeks later after my app went real: The clinic is expanding and another 3 computers will be added soon, meaning yet even more to install and maintain. Hey! also a new update of Pharo arrives, I need to update 7 images import my apps packages in the new images again. ( let alone the many system updates on especially Windows machines) Test if everything works ok again etc. Having no down-time is crucial: all done outside of the clinic's working hours, of course. Great.
Oh, I almost forgot: they will install a iPads and/or Android tablets soon, which will mounted close near each patient chair. They do that anyway because analytical imaging apps and a drill controlling app of other firms run on these tablets. They would be happy if they could run my dental app on these tablets too, so they don't have walk back and forth to their PCs all the time.
Jikes! Now I am really stuck! Because I wrote a stand alone app that doesn't run on these tablets! What can I do? Write special versions of my app for Androids and iPads? Impossible! this would take me a year or so. Nightmare.
In the end the clinic dumped my app and thus me, and bought another app from another firm, which runs on all devices because it is a web app. How could I be so stupid not to make it a web browser app in the first place? -------- Hypothetical CASE 2: App as Web Browser App:
Took a more modern approach: programmed my app for user access via a web browser, A web browser is, if you really look at it, in fact nothing more than a very advanced user terminal with endles GUI possibilities. Which btw allowed me to style the app esthetically in any way my customer likes. Now the cool thing is, on many devices, whether PCs, Macs, Android and Apple tablets and Phones the user GUI presentation and interaction is nearly identical. Which implies, I have to write my dental app only once, and it will run on any device that is connected to an intranet or internet. Not only that, there is just *one* single Pharo Image running instead of many stand alone apps on an ever changing nr of computers. .When installing a new Pharo version or update the app, I test it on another Pharo/Seaside server and can switch seamlessly between the two. The dental clinic is happy because it runs flawlessly on all devices they have and expanding or shrinking the number of devices is no problem. Not only that, In case of problems one can switch in no time to the shadow server app so we have continuity here.
There is another important advantage as well. The users interacts with the app in a browser window only, (a thin client) that means they don't have access to the real application, that is, the delicate Smalltalk image of the Pharo/Seaside server app which runs 24/7 on a reasonably fast computer in a locked room with an emergency power supply of course, together with its friend the Database, and the room is only accessible by a responsible employee(s).
I am happy too, not only because the customer is, but also because I avoided a nightmare and can do maintenance and updates, say, in 5 % of the time needed when I had to do maintenance for e.g. 7 stand alone apps running om separate computers. --------- So far for my hypothetical examples, just to illustrate.
Note that on the internet, each site that you might visit is of course a web app of its own. So you probably interact with more web apps than you'd realize. Note that some are really advanced like e.g. web shops like Amazon. There are many good websites that function really great, but a lot are almost depressing. You're absolutely right that a lot of it is inferior, but you might have noticed also that things are slowly improving.
This bad quality with (still) many web apps/sites is because as you know these are mostly built with chaotic hybrid systems/tools and unsafe languages like Javascript, ever changing packages, interfaces, tools etc.
Compared to that, building web apps with Pharo/Seaside is a lot more straight forward and reliable, because everything is done in the Smalltalk image.
Note that the web browser is not the limit itself, but rather the web app using the browser GUI. You can really design and build beautiful and ergonomically sound web apps, because there are so many possibilities.
However, the main reason for choosing to make apps as web apps is that it is the only way to get your app and data accessible op nearly all devices. Build it once and run it everywhere.
You see, this is a typical application developer's perspective, not that far from reality, I can tell you that.
Kindly asking Tool Developers to learn more about the people and their environment they build tools for. because it's not only tech but a lot of things around it too.
In any case Smalltalk/Pharo/Seaside is a great to build apps with. Unfortunately a lot of people still don't know this. Kind Regards Ted
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
Hi, [...] On 19/04/19 4:50 p. m., TedVanGaalen wrote:
However, the main reason for choosing to make apps as web apps is that it is the only way to get your app and data accessible op nearly all devices. Build it once and run it everywhere.
You see, this is a typical application developer's perspective, not that far from reality, I can tell you that.
[...] I'm with Esteban on this. Most of the apps I use are not web apps (not even for mail, where my client is Thunderbird most of the time). My thesis was wrote in a desktop app (TeXstudio), my outlining program (Leo), the text editor (text adept), the PDF reader (okular), the desktop UI (Awesome) and I could go on. The only exception is my Markdown editor (and of course the web browser), which is Zettlr, which is an electron app. BTW, Atom and other web based editors running electron are kind of slow compared with native desktop apps (with the exception of the pretty focused and light Zettlr). The only think I like from the web ubiquity is the "universal" good rendering for fronts and graphics, but as a paradigm for development is pretty fractured and lacks cohesion. There are some efforts, like PhosphorJS to have sane web interface. For me is kind of awesome how the last decades of development are kind of reinventing the desktop in the web... I would like something like Guacamole[1] for running "Pharo containers" and native desktop UIs in the web, without investing a lot of time on rewriting the desktop in the web, but having the possibility to run a self contained desktop app when connectivity is low, like in many places of the Global South, where most of the half+ of humanity without Internet lives, and even those of us who have it, know that net in only reliable on major cities of the Global South and not in every place of such cities. [1] https://guacamole.apache.org/ So the "typical application developer's perspective" depends on the place where such "typical" person is located. Having a robust native app looking for Pharo will be a strong selling point for the future for the humanity that will be connecting to the web in the decades to come (I just whish a way to embed web components in the GTK native app, but I think that such combinations will be possible). Cheers, Offray
Hi, First, your examples are biased :) Still, you do not get the point: the point is that not everything has same requirements. Pharo is a tool to allow users to provide answers in a general cases, not just the two or twenty you can think about. Also, to counter your âCaseâ, here what I think: - âMostâ applications nowadays have autoupdate mechanism that works perfectly fine to keep the applications up to date. Pharo in particular is particularly suitable for this kind of behaviour (I implemented this autoupdate mechanisms ten years ago, when autoupdate was still not âa thingâ). - By doing a web application you may âsave" the distribution of updates version better, but you are âbuyingâ the cost of maintenance of an hybrid application that will rely⦠guess what? In third party frameworks! (Starting for JQuery, but a lot others if you want your app to look modern and cool). - Tablets: yes this is a constraint (still, is just a constraint not present âin general"). But if you think a web application will work out of the box in a tablet you are fooling yourself (thinking on UX here). - âPrepare 3 new imagesâ: if you are doing this manually today, you are doing something wrong. Also, if you need to install your images from scratch for each new user (instead just copying them), you are also doing something wrong. Let me put this counter example: Some years ago before I came to work for pharo I made this app called âthe lawsuit trackerâ to a legal office in Argentina. Since they had two offices in different regions I proposed a web application as a first solution which they rejected because âis uncomfortableâ. So I took wha I had in hand there and I made an app that mixed Magritte with Glamour (this was the origin of Voyage framework, btw). - I added an autoupdate mechanism (they query for packages in a particular ftp location and they install them if new are found), - local configuration was in an external file. - I packaged it a âone-clickâ image with some extensions to verify which libc they where using (they target was to move to linux from windows in some couple of years). And I "installed itâ by sending a mail saying âdownload this, unpack and clickâ. So, each time there was a new version I was producing the same (with a script), and already installed versions were updating automatically. (Ah, btw I was collecting errors by fuelizing them and saving them in the database, so I was able to dig into errors later). This was 2011. By 2012 I came to work for Pharo. Last time I went to Argentina (last year) I talked with the guy that is responsible of doing the âtechnical serviceâ of that place (he is a friend of mine): they are still using the same application (and very happy with it). In the same time they opened two new offices so the user number passed from 18 to 35. They completed the migration to linux. Everything is still working: - Pharo 1.4 - Stack VM - MongoDB 3 to centralise information over a secure connection. So⦠I have a very successful installation of a Pharo desktop application (even in moments were doing this was not easy, I needed to hack a lot to âcloseâ the image). And not an hypothetical case, a real life case. Still: I DO NO SAY THIS SHOULD BE THE GENERAL CASE. I say this has to be possible. And I also say: there is a lot more use cases out there when this âwebâ answer just does not applies. And of course there are other tons of cases were the web application is the right solution. Why you want to constraint yourself to just one solution? When you develop an application you have to decide the best architecture possible taking into account the constraints you have, not some ideas of how things should be. Esteban
On 19 Apr 2019, at 23:50, TedVanGaalen <tedvga@gmail.com> wrote:
Hi Esteban let me write an example: (lots of time at the moment) -------- Hypothetical CASE 1 Stand Alone Solution:
Currently it's just a pilot/study project, but let's assume for a moment that after a year so of really hard working on it in Pharo, I finally completed my dental application system, that is, as as a stand-alone desktop application...
After splatting a few initial bugs, the dental clinic is happy with my new dental application, and they paid my bill. Mods were relatively easy to implement, because it is Smalltalk, not to mention the fantastic debugger facilities, simply very cool.
They need to run the app simultaneously on 4 computers: that is 4 stand alone apps running their own separated Smalltalk images. Using a Postgress server as a DB on one of their PCs tied everything together. Apart from having to install live Smalltalk images om each computer, backing them up etc. not much of a problem, one would think, right? So far so good. ...apart from having to install and maintain the app on each and every computer they use, that is...
Two weeks later after my app went real: The clinic is expanding and another 3 computers will be added soon, meaning yet even more to install and maintain. Hey! also a new update of Pharo arrives, I need to update 7 images import my apps packages in the new images again. ( let alone the many system updates on especially Windows machines) Test if everything works ok again etc. Having no down-time is crucial: all done outside of the clinic's working hours, of course. Great.
Oh, I almost forgot: they will install a iPads and/or Android tablets soon, which will mounted close near each patient chair. They do that anyway because analytical imaging apps and a drill controlling app of other firms run on these tablets. They would be happy if they could run my dental app on these tablets too, so they don't have walk back and forth to their PCs all the time.
Jikes! Now I am really stuck! Because I wrote a stand alone app that doesn't run on these tablets! What can I do? Write special versions of my app for Androids and iPads? Impossible! this would take me a year or so. Nightmare.
In the end the clinic dumped my app and thus me, and bought another app from another firm, which runs on all devices because it is a web app. How could I be so stupid not to make it a web browser app in the first place? -------- Hypothetical CASE 2: App as Web Browser App:
Took a more modern approach: programmed my app for user access via a web browser, A web browser is, if you really look at it, in fact nothing more than a very advanced user terminal with endles GUI possibilities. Which btw allowed me to style the app esthetically in any way my customer likes. Now the cool thing is, on many devices, whether PCs, Macs, Android and Apple tablets and Phones the user GUI presentation and interaction is nearly identical. Which implies, I have to write my dental app only once, and it will run on any device that is connected to an intranet or internet. Not only that, there is just *one* single Pharo Image running instead of many stand alone apps on an ever changing nr of computers. .When installing a new Pharo version or update the app, I test it on another Pharo/Seaside server and can switch seamlessly between the two. The dental clinic is happy because it runs flawlessly on all devices they have and expanding or shrinking the number of devices is no problem. Not only that, In case of problems one can switch in no time to the shadow server app so we have continuity here.
There is another important advantage as well. The users interacts with the app in a browser window only, (a thin client) that means they don't have access to the real application, that is, the delicate Smalltalk image of the Pharo/Seaside server app which runs 24/7 on a reasonably fast computer in a locked room with an emergency power supply of course, together with its friend the Database, and the room is only accessible by a responsible employee(s).
I am happy too, not only because the customer is, but also because I avoided a nightmare and can do maintenance and updates, say, in 5 % of the time needed when I had to do maintenance for e.g. 7 stand alone apps running om separate computers. --------- So far for my hypothetical examples, just to illustrate.
Note that on the internet, each site that you might visit is of course a web app of its own. So you probably interact with more web apps than you'd realize. Note that some are really advanced like e.g. web shops like Amazon. There are many good websites that function really great, but a lot are almost depressing. You're absolutely right that a lot of it is inferior, but you might have noticed also that things are slowly improving.
This bad quality with (still) many web apps/sites is because as you know these are mostly built with chaotic hybrid systems/tools and unsafe languages like Javascript, ever changing packages, interfaces, tools etc.
Compared to that, building web apps with Pharo/Seaside is a lot more straight forward and reliable, because everything is done in the Smalltalk image.
Note that the web browser is not the limit itself, but rather the web app using the browser GUI. You can really design and build beautiful and ergonomically sound web apps, because there are so many possibilities.
However, the main reason for choosing to make apps as web apps is that it is the only way to get your app and data accessible op nearly all devices. Build it once and run it everywhere.
You see, this is a typical application developer's perspective, not that far from reality, I can tell you that.
Kindly asking Tool Developers to learn more about the people and their environment they build tools for. because it's not only tech but a lot of things around it too.
In any case Smalltalk/Pharo/Seaside is a great to build apps with. Unfortunately a lot of people still don't know this. Kind Regards Ted
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
I agree to everything Esteban said. It is about options. And Web is not the answer to everything, quite to contrary. For us Web is a limitation of power, you struggle mostly with backend connectivity (reaching out for your objects) and if you want to do something nice you end up doing it in javascript with a lot of libraries. It is hard to write something nice in a web environment and maintenance is hell. Norbert
Am 20.04.2019 um 10:43 schrieb Esteban Lorenzano <estebanlm@gmail.com>:
Hi,
First, your examples are biased :) Still, you do not get the point: the point is that not everything has same requirements. Pharo is a tool to allow users to provide answers in a general cases, not just the two or twenty you can think about.
Also, to counter your âCaseâ, here what I think: - âMostâ applications nowadays have autoupdate mechanism that works perfectly fine to keep the applications up to date. Pharo in particular is particularly suitable for this kind of behaviour (I implemented this autoupdate mechanisms ten years ago, when autoupdate was still not âa thingâ). - By doing a web application you may âsave" the distribution of updates version better, but you are âbuyingâ the cost of maintenance of an hybrid application that will rely⦠guess what? In third party frameworks! (Starting for JQuery, but a lot others if you want your app to look modern and cool). - Tablets: yes this is a constraint (still, is just a constraint not present âin general"). But if you think a web application will work out of the box in a tablet you are fooling yourself (thinking on UX here). - âPrepare 3 new imagesâ: if you are doing this manually today, you are doing something wrong. Also, if you need to install your images from scratch for each new user (instead just copying them), you are also doing something wrong.
Let me put this counter example: Some years ago before I came to work for pharo I made this app called âthe lawsuit trackerâ to a legal office in Argentina. Since they had two offices in different regions I proposed a web application as a first solution which they rejected because âis uncomfortableâ. So I took wha I had in hand there and I made an app that mixed Magritte with Glamour (this was the origin of Voyage framework, btw). - I added an autoupdate mechanism (they query for packages in a particular ftp location and they install them if new are found), - local configuration was in an external file. - I packaged it a âone-clickâ image with some extensions to verify which libc they where using (they target was to move to linux from windows in some couple of years).
And I "installed itâ by sending a mail saying âdownload this, unpack and clickâ.
So, each time there was a new version I was producing the same (with a script), and already installed versions were updating automatically.
(Ah, btw I was collecting errors by fuelizing them and saving them in the database, so I was able to dig into errors later).
This was 2011. By 2012 I came to work for Pharo.
Last time I went to Argentina (last year) I talked with the guy that is responsible of doing the âtechnical serviceâ of that place (he is a friend of mine): they are still using the same application (and very happy with it). In the same time they opened two new offices so the user number passed from 18 to 35. They completed the migration to linux.
Everything is still working: - Pharo 1.4 - Stack VM - MongoDB 3 to centralise information over a secure connection.
So⦠I have a very successful installation of a Pharo desktop application (even in moments were doing this was not easy, I needed to hack a lot to âcloseâ the image). And not an hypothetical case, a real life case.
Still: I DO NO SAY THIS SHOULD BE THE GENERAL CASE. I say this has to be possible. And I also say: there is a lot more use cases out there when this âwebâ answer just does not applies. And of course there are other tons of cases were the web application is the right solution. Why you want to constraint yourself to just one solution?
When you develop an application you have to decide the best architecture possible taking into account the constraints you have, not some ideas of how things should be.
Esteban
On 19 Apr 2019, at 23:50, TedVanGaalen <tedvga@gmail.com> wrote:
Hi Esteban let me write an example: (lots of time at the moment) -------- Hypothetical CASE 1 Stand Alone Solution:
Currently it's just a pilot/study project, but let's assume for a moment that after a year so of really hard working on it in Pharo, I finally completed my dental application system, that is, as as a stand-alone desktop application...
After splatting a few initial bugs, the dental clinic is happy with my new dental application, and they paid my bill. Mods were relatively easy to implement, because it is Smalltalk, not to mention the fantastic debugger facilities, simply very cool.
They need to run the app simultaneously on 4 computers: that is 4 stand alone apps running their own separated Smalltalk images. Using a Postgress server as a DB on one of their PCs tied everything together. Apart from having to install live Smalltalk images om each computer, backing them up etc. not much of a problem, one would think, right? So far so good. ...apart from having to install and maintain the app on each and every computer they use, that is...
Two weeks later after my app went real: The clinic is expanding and another 3 computers will be added soon, meaning yet even more to install and maintain. Hey! also a new update of Pharo arrives, I need to update 7 images import my apps packages in the new images again. ( let alone the many system updates on especially Windows machines) Test if everything works ok again etc. Having no down-time is crucial: all done outside of the clinic's working hours, of course. Great.
Oh, I almost forgot: they will install a iPads and/or Android tablets soon, which will mounted close near each patient chair. They do that anyway because analytical imaging apps and a drill controlling app of other firms run on these tablets. They would be happy if they could run my dental app on these tablets too, so they don't have walk back and forth to their PCs all the time.
Jikes! Now I am really stuck! Because I wrote a stand alone app that doesn't run on these tablets! What can I do? Write special versions of my app for Androids and iPads? Impossible! this would take me a year or so. Nightmare.
In the end the clinic dumped my app and thus me, and bought another app from another firm, which runs on all devices because it is a web app. How could I be so stupid not to make it a web browser app in the first place? -------- Hypothetical CASE 2: App as Web Browser App:
Took a more modern approach: programmed my app for user access via a web browser, A web browser is, if you really look at it, in fact nothing more than a very advanced user terminal with endles GUI possibilities. Which btw allowed me to style the app esthetically in any way my customer likes. Now the cool thing is, on many devices, whether PCs, Macs, Android and Apple tablets and Phones the user GUI presentation and interaction is nearly identical. Which implies, I have to write my dental app only once, and it will run on any device that is connected to an intranet or internet. Not only that, there is just *one* single Pharo Image running instead of many stand alone apps on an ever changing nr of computers. .When installing a new Pharo version or update the app, I test it on another Pharo/Seaside server and can switch seamlessly between the two. The dental clinic is happy because it runs flawlessly on all devices they have and expanding or shrinking the number of devices is no problem. Not only that, In case of problems one can switch in no time to the shadow server app so we have continuity here.
There is another important advantage as well. The users interacts with the app in a browser window only, (a thin client) that means they don't have access to the real application, that is, the delicate Smalltalk image of the Pharo/Seaside server app which runs 24/7 on a reasonably fast computer in a locked room with an emergency power supply of course, together with its friend the Database, and the room is only accessible by a responsible employee(s).
I am happy too, not only because the customer is, but also because I avoided a nightmare and can do maintenance and updates, say, in 5 % of the time needed when I had to do maintenance for e.g. 7 stand alone apps running om separate computers. --------- So far for my hypothetical examples, just to illustrate.
Note that on the internet, each site that you might visit is of course a web app of its own. So you probably interact with more web apps than you'd realize. Note that some are really advanced like e.g. web shops like Amazon. There are many good websites that function really great, but a lot are almost depressing. You're absolutely right that a lot of it is inferior, but you might have noticed also that things are slowly improving.
This bad quality with (still) many web apps/sites is because as you know these are mostly built with chaotic hybrid systems/tools and unsafe languages like Javascript, ever changing packages, interfaces, tools etc.
Compared to that, building web apps with Pharo/Seaside is a lot more straight forward and reliable, because everything is done in the Smalltalk image.
Note that the web browser is not the limit itself, but rather the web app using the browser GUI. You can really design and build beautiful and ergonomically sound web apps, because there are so many possibilities.
However, the main reason for choosing to make apps as web apps is that it is the only way to get your app and data accessible op nearly all devices. Build it once and run it everywhere.
You see, this is a typical application developer's perspective, not that far from reality, I can tell you that.
Kindly asking Tool Developers to learn more about the people and their environment they build tools for. because it's not only tech but a lot of things around it too.
In any case Smalltalk/Pharo/Seaside is a great to build apps with. Unfortunately a lot of people still don't know this. Kind Regards Ted
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
@Esteban: Of course you are right that there are cases a standalone app would be more convenient e.g. as you mentioned: graphical (image processing) apps, digital audio workstations, like Cubase. In most cases these are the kind of apps that deal with personal (local) data, which mostly is not connected to a central data storage on a hosting system. In other cases that is for users having real time access to data stored on a central point, web apps are preferable. Like the banking app, Internet shops. Also on a smaller scale as browser intranet apps e.g. small independent firms, clinics Law firms, accountancies and so on. Of course these should have web apps running in the firm's intranet only. These used to be client server apps, mostly with thin clients or ven just terminals (VT100) for example running on a mini computer e.g. DEC PDP 11/xx. Even today, mainframe applications all run on the host. Access is by terminal only. This is the most secure environment you can get. I initially grew up with mainframe application programming btw. So to me, it seems logical that -at least in a business environment- a single application (or a group of those) running on a central system (server) is preferable. There are many blogs and articles on the web that describe the pro and contra of web apps versus standalone apps. For example this blog: http://www.paulgraham.com/road.html (It's a bit of a long read, but I do recommend it) Paul Graham describes this theme much better than I ever can do. Note that this blog is written 18 years ago and he had to work with the technical limitations of 2000 and before. Today web technology is far more advanced, enabling us to make really professional web apps. Most limitations are gone. Seen in this perspective, Pharo (or some other Smalltalk versions) combined with Seaside are excellent tools to create versatile web apps in a relatively short amount of time. I think the limitations of designing and building professional web apps are perhaps much less than one might think. Like with many other challenges, one gets better by actually doing it. Some other points I'd like to react on: Dependency on 3rd party tools in combination with Pharo/Seaside? As far as I know now, in Seaside itself that would be only Javascript and jQuery? It is unlikely that these will disappear because the whole web world depends on these two. In Pharo image itself that would in most cases be at least a database like Postgress. If the need arises for special GUI web elements, these could be made relatively easy in Smalltalk. And of course it all relies heavily on CSS which is very advanced, but that's a good thing! A good book about CSS is helpful. Yet another reason for me to make -even stand alone- apps with Pharo as Seaside web apps is, that (at least for me) it is much harder to make a native GUI app within Pharo. Using the browser as GUI is much easier. Honestly, I doubt if this would be better if GTK is deployed as GUI? Also one would be bound to the GTK style/appearance and some themes they might provide. No such limitations exist using Seaside with good CSS styling. Also GTK does not work on mobile devices. So for me GTK or any other native GUI are out because of that. On a Mac (similar on Windows btw) GTK needs an extra layer. It uses the Quartz backend. GTK is not feature complete, riddled with bugs e.g. Wacom tablets with GIMP), new releases are not compatible etc. See for yourself. Don't stick your heads in a wasp nest. I don't understand why one would have to, because Pharo has excellent GUI elements. You could subclass Morph classes.? (I am not aware of most further GUI enhancements in Pharo, because I still cannot run Pharo 7 on my mac mini due to a VM problem since 2017, same with Squeak btw. (see other thread) still using pre-Spur Pharo 5) Imho, by coupling GTK to Pharo one creates an unstable big dependency situation. This stands opposite on having Smalltalk as autonomously and independent as possible. Errm, note btw that if you change addressing me as "fanatic" into "racing a bit too fast" i can accept this :o) (By "fanatic" I think of much worse things happening on our planet all the time. So sad) The "always as web app, whenever possible" is something I strive for, not that the whole world must do this. Thanks TedvG -- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
Hi Esteban, This is fantastic! We are eager to investigate how Roassal3 can run in an external window. Alexandre
On Apr 18, 2019, at 6:08 AM, Esteban Lorenzano <estebanlm@gmail.com> wrote:
People that assisted to Pharo Days 2019 (or that follow my twitter account) already know this, but it needs to be formally announced:
We are working on Spec 2.0, and it will provide not just the classic Morphic bindings but also a new option for developers: Gtk3 bindings!
Why we want a Spec 2.0 with different backends?
There are reasons that converged to decide us to make it:
⢠First, to provide a validated abstract Spec 2.0 that can be used with different backends, preparing Pharo to be able to switch backends without needing to recreate the full IDE from scratch each time (a problem we have partially now in our way to deprecate Morphic). ⢠Second, because we receive from different sources the requirement of having the possibility of developing real native-looking desktop applications. Yes, in moment where people talk about the cloud, SaaS and web-applications as the "next big thing" (something that is been declared since years, by the way), we believe is important to provide this, for two big reasons: ⢠Because there is still an important place for desktop applications market and most medium-size to big business still require them. ⢠Because Pharo itself is a desktop application! (And we need to provide the best experience possible on it).
For us, this is a fundamental step to continue improving Pharo itself, and it matches also the work we are doing on going real-headless: Pharo users will be able to start the Morphic world, a Gtk application or the next backend to come.
Why Gtk3?
There are some other important players in the "native widgets scene", so why we choose Gtk3?
Again, several reasons were taken into account:
⢠Gtk3 is cross platform. Yes, technically is just "native" in linux, but it works on Windows and macOS too. ⢠It is very mature and popular. ⢠It is made in plain C.
Next step: tool migration
The only way to know if you have covered what is needed is actually taking real-life use cases and implementing them. We have a list of tools that needs to be migrated and we are starting from them:
⢠Old GT tools will be replaced by new Spec tools (while preserving its power). ⢠Calypso UI needs to be rewritten in Spec 2.0 (it is in plain Morphic now). ⢠Pharo launcher as a standalone application is a good example of what you can do with the Gtk3 bindings.
And that's it. Pharo 8.0 will come with Spec 2.0 and users will be able to benefit of it immediately :)
A small screenshot of the new Inspector (WIP):
<Screenshot 2019-04-18 at 12.07.16.png>
Esteban
participants (8)
-
Alexandre Bergel -
Cédrick Béler -
Esteban Lorenzano -
Norbert Hartl -
Offray Vladimir Luna Cárdenas -
PBKResearch -
Ronie Salgado -
TedVanGaalen