The Dilemma: Building a Futuristic GUI for Ephestos

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
61 messages Options
1234
Reply | Threaded
Open this post in threaded view
|

Re: The Dilemma: Building a Futuristic GUI for Ephestos

sebastianconcept@gmail.co

On Sep 15, 2014, at 3:54 PM, Eliot Miranda <[hidden email]> wrote:

The native windows contain morphs, but anything, including MVC, can be present. This provides native Win32 Windows (doing other platforms is merely work) /and/ the ability to snapshot and bring back up windows on a different platform (e.g. open in win32, snapshot and bring up in Squeak/Pharo Morphic windows, or vice verse), and the ability to do this dynamically.  Is anyone motivated to port the Newspeak code back to Squeak/Pharo?

Well, a while ago in the business list I’ve raised the idea that making Pharo able to do native OS windows would help it to gain market space (as in the opposite of staying at the margins of it).

So, I’d be very positively curious about being able to use Pharo to do multiplatform native apps


Reply | Threaded
Open this post in threaded view
|

Re: The Dilemma: Building a Futuristic GUI for Ephestos

Esteban A. Maringolo
2014-09-16 14:37 GMT-03:00 Sebastian Sastre <[hidden email]>:

> Well, a while ago in the business list I’ve raised the idea that making
> Pharo able to do native OS windows would help it to gain market space (as in
> the opposite of staying at the margins of it).
>
> So, I’d be very positively curious about being able to use Pharo to do
> multiplatform native apps

The trend is shifting to mobile devices, iOS and Android are eating
the whole market. So if it is about the potential market size, native
mobile (tablets/phones/TVs) should come as the first option, before
desktop.

For development, native windows could prove very useful.

Regards!

Reply | Threaded
Open this post in threaded view
|

Re: The Dilemma: Building a Futuristic GUI for Ephestos

Chris Muller-3
On Tue, Sep 16, 2014 at 2:18 PM, Esteban A. Maringolo
<[hidden email]> wrote:

> 2014-09-16 14:37 GMT-03:00 Sebastian Sastre <[hidden email]>:
>
>> Well, a while ago in the business list I’ve raised the idea that making
>> Pharo able to do native OS windows would help it to gain market space (as in
>> the opposite of staying at the margins of it).
>>
>> So, I’d be very positively curious about being able to use Pharo to do
>> multiplatform native apps
>
> The trend is shifting to mobile devices, iOS and Android are eating
> the whole market. So if it is about the potential market size, native
> mobile (tablets/phones/TVs) should come as the first option, before
> desktop.

+1.  Desktop apps are "dead" aren't they?  I'm doubtful that native
windows would help Smalltalk's popularity, as evidenced, I guess, by
the fact VA and VW have supported them for a long time; did they take
over the world yet?

> For development, native windows could prove very useful.

How so?  For me, one of the worst aspects of trying to develop in
VisualAge or VisualWorks *is* the multiple host windows.  It makes it
virtually impossible to work in more than one image, and reinforces
the "grand cathedral" thinking about Smalltalk; e.g. you're not
supposed to want or need anything outside your one, true, image.
Dinosaur!

I constantly work in multiple images, not only for separate projects
but for the ability to quickly and easily fork images for multicore
processing on the same project.  Other times simply to try something
temporary and possibly dangerous.  The memory isolation is critical
for productivity, the UI isolation for usability, and the multi-core
capability for performance.

I think we should focus on how to move to more and smaller
intercommunicating images rather than one big image.  I understand its
appeal for _deploying_ an off-the-shelf desktop app, but I'm not aware
of any other use-cases where multiple host windows would be preferable
to one host window per image.

Reply | Threaded
Open this post in threaded view
|

Re: [squeak-dev] re: The Dilemma: Building a Futuristic GUI for Ephestos

Eliot Miranda-2
In reply to this post by kilon.alios
Hi Kilon,



On Tue, Sep 16, 2014 at 5:38 AM, kilon alios <[hidden email]> wrote:
The problem with relying for everything on smalltalk code and not using existing technology is two fold

a) You cannot compete with existing solution, they come with more manpower , have more features, better documention, more bug fixes, more, more ...... more

b) One day the authors of the library decide to give up on the library because they went off to other things and of course it falls to the shoulders of others that are much less motivated and have other things in their plate too with higher priority for them. The library continues to improve but at a glacial pace. 

Its perfectly ok to try your own things and follow your own road. Everyone loves to experiment and do things his own way and that has many positive. But the general refusal to embrace existing technologies even problematic ones make the job of spreading the Smalltalk appeal much harder. Makes it harder for people to transition from other languages too.

This smalltalk mentality is wrong. The end. 

I don't understand how your comment relates to the below.  Can you fill in the gaps?
 

On Tue, Sep 16, 2014 at 12:11 AM, Eliot Miranda <[hidden email]> wrote:
Hi Craig,

On Mon, Sep 15, 2014 at 1:40 PM, Craig Latta <[hidden email]> wrote:

> I don't think anybody ever even reported trying [Ffenestri].

     I did; it worked. And I just said so again a few messages ago. Hm.

OK.  It opens windows.  But a snippet in a workspace can do that.  It does not constitute a replacement for the current window system though does it?  But Vassili's work can be.  We had it in production at customer sites.  We could use it for development.  It was complete, in the sense that one could open arbitrary system windows as native windows, switch them back to "virtual" windows, snapshot etc and everything would keep working.  That's "working".  With great respect to Tim and John, their work in Ffenestri is not the same thing, is it?  By the same criteria I don't think what Qwaq did constituted a real system; it allowed the login WIndow to be displayed natively, but it didn't support development tools and it certainly didn't support snapshot or dynamic switching.  Being critical is not being insulting.  It's merely being objective.  At least I hope I'm being objective and not insulting anyone.  It is not my intent.

--
best,
Eliot




--
best,
Eliot
Reply | Threaded
Open this post in threaded view
|

Re: [squeak-dev] Re: The Dilemma: Building a Futuristic GUI for Ephestos

Eliot Miranda-2
In reply to this post by Chris Muller-3


On Tue, Sep 16, 2014 at 2:19 PM, Chris Muller <[hidden email]> wrote:
On Tue, Sep 16, 2014 at 2:18 PM, Esteban A. Maringolo
<[hidden email]> wrote:
> 2014-09-16 14:37 GMT-03:00 Sebastian Sastre <[hidden email]>:
>
>> Well, a while ago in the business list I’ve raised the idea that making
>> Pharo able to do native OS windows would help it to gain market space (as in
>> the opposite of staying at the margins of it).
>>
>> So, I’d be very positively curious about being able to use Pharo to do
>> multiplatform native apps
>
> The trend is shifting to mobile devices, iOS and Android are eating
> the whole market. So if it is about the potential market size, native
> mobile (tablets/phones/TVs) should come as the first option, before
> desktop.

+1.  Desktop apps are "dead" aren't they?  I'm doubtful that native
windows would help Smalltalk's popularity, as evidenced, I guess, by
the fact VA and VW have supported them for a long time; did they take
over the world yet?

> For development, native windows could prove very useful.

How so?  For me, one of the worst aspects of trying to develop in
VisualAge or VisualWorks *is* the multiple host windows.  It makes it
virtually impossible to work in more than one image, and reinforces
the "grand cathedral" thinking about Smalltalk; e.g. you're not
supposed to want or need anything outside your one, true, image.
Dinosaur!

I constantly work in multiple images, not only for separate projects
but for the ability to quickly and easily fork images for multicore
processing on the same project.  Other times simply to try something
temporary and possibly dangerous.  The memory isolation is critical
for productivity, the UI isolation for usability, and the multi-core
capability for performance.

I think we should focus on how to move to more and smaller
intercommunicating images rather than one big image.  I understand its
appeal for _deploying_ an off-the-shelf desktop app, but I'm not aware
of any other use-cases where multiple host windows would be preferable
to one host window per image.

That all makes sense from an experienced Smalltalker's POV.  But for people exploring the technology the lack of native windows is usually a huge turn-off and often reason to reject the technology.  The nice thing about Vassili's work is that it allows one to have *both*, without losing window state, and one can switch dynamically, and, IIRC, mix both, e.g. for development.  So it isn't an exclusive choice.

Re VisualWorks' support for native windows it was an essential component to VW staying in the market-place.  If it hadn't supported native windows it would have died the commercial death long ago.  Pre-web, one /had/ to have native windows for industry, and now with mobile native look and feel is even more important.  Further, VWs huge lack in its GUI was lack of support for native widgets.  We always used to tout MSWord's use of emulated widgets (apparently for performance reasons) as a defence but it didn't convince. The customer was always provided with poor emulations and a limited supply.  IMO, native widgets would have made a big difference in hwo well-received VW was for GUI applications, where those using Windows could always turn to VSE.

--
best,
Eliot
Reply | Threaded
Open this post in threaded view
|

Re: [squeak-dev] Re: The Dilemma: Building a Futuristic GUI for Ephestos

Torsten Bergmann
Hi Eliot,

Yes - in the past most Smalltalks did not have native widgets and usually emulated
the L&F. I remember VW on a Sun Sparc with Windows or Mac look. While it was cool
to run 1:1 on another machine it would have been to much manpower for the vendor
to reimplement all the nice widgets to really look like the native system. Especially
when the L&F changed very often between Win95/96/XP/Win7/Win8 at Microsoft.
 
Even with good looking widgets/icons one could see from the speed and repainting issues
(white rectangles for damage areas) that Smalltalk was not native. Also native widgets had
other nice features like virtual modes for TreeViews/ListViews used if you want to display
many nodes.

Java faced the same problem - even with Swing and JavaFX today the Java UIs and especially
the ugly JFileDialog never had this "Native look and easy navigation feeling". And yes
there is SWT in Java providing native widgets - but how many applications are based on
it? Only a few.

On the ST side Smalltalk/MT and Dolphin use native widgets but were not portable. And if
you look at others like VW, VAST or Smalltalk/X you will see that engineers are good at
creating powerfull systems but often fail when it comes to UI design and usability. Squeak
was special and flexible with Morphic (even without multiple windows) - but looked too toyish.

So yes - customers of commercial Smalltalk vendors asked for "Native" because if you had
built a UI in Smalltalk it was part of a rich client application and often people compared
it to other native applications or new widgets found in MS Office.

But in the past customer also asked for COM/COM+, CORBA and webservices while today
it is often much easier to exchange data or call functionality via HTTP, REST, ...

So time and expectations have changed a lot meanwhile. Especially for the UI's.
Desktop platforms unite with the web and in the web it is also possible to look more
like platforms or style to look like a native app. See [1] and [2] for two simple examples.

While the browsers and JS engines become faster this will also change more the way
we think about applications: no installation, styleable, clear look. The google
chrome experiments are a good page to see how this will soon look like. And we will
be independent from devices and screen resolution. In fact more and more applications
we use today run on a computers webbrowser, tablet or a smartphone (often the same way).

With Morphic (even when it has Fenestri) we can not compete agains HTML/CSS on the
UI side. The Canvas element and WebGL will also drive this forward.
Even if one does not like web technologies - it currently is the platform where
you reach people easily.

Smalltalk should/could have a place in this (web centric) world:

  1. As a backend to serve the web
  2. On the client
  3. Combining 1. and 2.

For the first we have Seaside, TeaPot, Aida, ...
For the seond: as it will not happen that browser vendors agree and threw out JavaScript in
favour of ST runtimes, maybe we can build on top like Amber or SqueakJS do.

But we should also rethink Smalltalk to find a better place as a scripting language. What
I still would like to see:

 - tiny and fast VM with a command line and REPL
 - one unified and easy to use FFI with callbacks so one can use the platform, maybe
   others will write the bindings then
 - single small base image but fast loadable binary code components (modules, maybe using the
   LoadLibrary trick), similar to what David had with SmallScript or what BeeSmalltalk is doing with SLL's
 - but still with the ability to bootstrap up to a full saveable image
 - ability to serve the web with easy callbacks into Smalltalk for implementing functionality
   (especially with this we may catch 90% of the usual UI cases).

Bye
T.

[1] Metro theme Bootstrap http://talkslab.github.io/metro-bootstrap/components.html
[2] jQuery Desktop http://desktop.sonspring.com/
[3] Chrome Experiments http://www.chromeexperiments.com/

Reply | Threaded
Open this post in threaded view
|

Re: [squeak-dev] Re: The Dilemma: Building a Futuristic GUI for Ephestos

Sean P. DeNigris
Administrator
In reply to this post by Eliot Miranda-2
Eliot Miranda-2 wrote
without losing window
state, and one can switch dynamically, and, IIRC, mix both
That /is/ cool :)
Cheers,
Sean
Reply | Threaded
Open this post in threaded view
|

Re: [squeak-dev] Re: The Dilemma: Building a Futuristic GUI for Ephestos

Esteban A. Maringolo
In reply to this post by Torsten Bergmann
2014-09-16 20:12 GMT-03:00 Torsten Bergmann <[hidden email]>:

> Smalltalk should/could have a place in this (web centric) world:
>
>   1. As a backend to serve the web
>   2. On the client
>   3. Combining 1. and 2.

1. This is were I see it stronger today, and I'm sure it is the
majority of Pharo based solutions.

2. I can't tell.
I really don't know if there are any software products built with
Pharo/Squeak that DEPEND on Morphic exclusive features other than
Qwac/Teleplace and Pharo/Squeak itself.

Unless you're building something crazy/amazing I don't see the
advantage of Morphic/Custom drawn UI over traditional widgets, even
HTML widgets.

> But we should also rethink Smalltalk to find a better place as a scripting language. What
> I still would like to see:
>
>  - tiny and fast VM with a command line and REPL

The Pharo VM is really fast, and according to all I'm reading here
regarding Sista and the CogVM itself is going to get faster.
It's startup time is fast even for a 40 MB image, smaller images boot faster.

The REPL is doable with today's version, I even think there was a REPL
implementation out there.
The scripting part needs some tweaks to current CommandLineHandlers,
maybe using getops like parameters.

>  - single small base image but fast loadable binary code components (modules, maybe using the
>    LoadLibrary trick), similar to what David had with SmallScript or what BeeSmalltalk is doing with SLL's

VisualSmalltalk also had SLL's that could load lots of code really
fast. And the VM itself was fast too.
I developed with VSE and it was really cool being able to deploy
"parts" of your app and bind them at demand and/or update only a
particular module. As any library, it also introduced some dependency
hell, so it had its tradeoffs.

>  - but still with the ability to bootstrap up to a full saveable image

>  - ability to serve the web with easy callbacks into Smalltalk for implementing functionality
>    (especially with this we may catch 90% of the usual UI cases).

You mean async I/O?
If you look at the HTTP2/SPDY drafts or discussions, what I see is
that it is going to speed up communications a lot, it will still be
text based, but I think binary data is going to be there too, so the
cost of HTTP messaging for intercommunication is going to be cheaper
in the future.

Regards!



Esteban A. Maringolo

Reply | Threaded
Open this post in threaded view
|

Re: [squeak-dev] Re: The Dilemma: Building a Futuristic GUI for Ephestos

HilaireFernandes
Le 17/09/2014 05:13, Esteban A. Maringolo a écrit :

>> Smalltalk should/could have a place in this (web centric) world:
>> >
>> >   1. As a backend to serve the web
>> >   2. On the client
>> >   3. Combining 1. and 2.
> 1. This is were I see it stronger today, and I'm sure it is the
> majority of Pharo based solutions.
>
> 2. I can't tell.
> I really don't know if there are any software products built with
> Pharo/Squeak that DEPEND on Morphic exclusive features other than
> Q


Dr.Geo and iStoa are other successfull examples. But true, for DrGeo I
want to move part of it to the web client.

Hilaire


--
Dr. Geo - http://drgeo.eu
iStoa - http://istao.drgeo.eu


Reply | Threaded
Open this post in threaded view
|

Re: [squeak-dev] Re: The Dilemma: Building a Futuristic GUI for Ephestos

Sean P. DeNigris
Administrator
In reply to this post by Esteban A. Maringolo
Esteban A. Maringolo wrote
I don't see the
advantage of Morphic/Custom drawn UI over traditional widgets, even
HTML widgets.
From an "IDE for business apps" perspective, there may be little. But I only find "Pharo is a better IDE" moderately interesting. The blue plane idea is that Pharo is a Dynabook implementation. Here uniformity, liveness, and directness make all the difference in the world *.

For example, as a brand new Smalltalker, I hated that the dialog window for adding a new directory repo in the MC Browser always started in a standard directory. Since I always use the same root repo folder, this required extra work for me to navigate there every time. But how to start implementing this?

Morphic provided the answer... to my dreams! Instead of asking on the list, hunting around the system code for a hook, or reading through documentation, like I would in almost any other system I was able to do the same thing I would do to understand a physical object in the real world!! I "took apart" the +Repository button and figured out how it worked by bringing up the halos, inspecting the model, and the button action was revealed for understanding and modification.

As important as it is to find "what Pharo is good for" in the pink plane, I have certainly not invested so much time, energy, and emotion for incremental improvement, and would find a system without beautiful blue plane ideas like Morphic (or a successor that sticks to its principles) much less interesting.

* My concern with Spec is that huge layers of symbol interpretation logic subvert these properties
Cheers,
Sean
Reply | Threaded
Open this post in threaded view
|

Re: [squeak-dev] Re: The Dilemma: Building a Futuristic GUI for Ephestos

Eliot Miranda-2
In reply to this post by Eliot Miranda-2


On Tue, Sep 16, 2014 at 2:55 PM, Chris Muller <[hidden email]> wrote:
>> On Tue, Sep 16, 2014 at 2:18 PM, Esteban A. Maringolo
>> <[hidden email]> wrote:
>> > 2014-09-16 14:37 GMT-03:00 Sebastian Sastre
>> > <[hidden email]>:
>> >
>> >> Well, a while ago in the business list I’ve raised the idea that making
>> >> Pharo able to do native OS windows would help it to gain market space
>> >> (as in
>> >> the opposite of staying at the margins of it).
>> >>
>> >> So, I’d be very positively curious about being able to use Pharo to do
>> >> multiplatform native apps
>> >
>> > The trend is shifting to mobile devices, iOS and Android are eating
>> > the whole market. So if it is about the potential market size, native
>> > mobile (tablets/phones/TVs) should come as the first option, before
>> > desktop.
>>
>> +1.  Desktop apps are "dead" aren't they?  I'm doubtful that native
>> windows would help Smalltalk's popularity, as evidenced, I guess, by
>> the fact VA and VW have supported them for a long time; did they take
>> over the world yet?
>>
>> > For development, native windows could prove very useful.
>>
>> How so?  For me, one of the worst aspects of trying to develop in
>> VisualAge or VisualWorks *is* the multiple host windows.  It makes it
>> virtually impossible to work in more than one image, and reinforces
>> the "grand cathedral" thinking about Smalltalk; e.g. you're not
>> supposed to want or need anything outside your one, true, image.
>> Dinosaur!
>>
>> I constantly work in multiple images, not only for separate projects
>> but for the ability to quickly and easily fork images for multicore
>> processing on the same project.  Other times simply to try something
>> temporary and possibly dangerous.  The memory isolation is critical
>> for productivity, the UI isolation for usability, and the multi-core
>> capability for performance.
>>
>> I think we should focus on how to move to more and smaller
>> intercommunicating images rather than one big image.  I understand its
>> appeal for _deploying_ an off-the-shelf desktop app, but I'm not aware
>> of any other use-cases where multiple host windows would be preferable
>> to one host window per image.
>
>
> That all makes sense from an experienced Smalltalker's POV.  But for people
> exploring the technology the lack of native windows is usually a huge
> turn-off and often reason to reject the technology.  The nice thing about
> Vassili's work is that it allows one to have *both*, without losing window
> state, and one can switch dynamically, and, IIRC, mix both, e.g. for
> development.  So it isn't an exclusive choice.

Ah, good.  Choice is good.  :)

> Re VisualWorks' support for native windows it was an essential component to
> VW staying in the market-place.  If it hadn't supported native windows it
> would have died the commercial death long ago.  Pre-web, one /had/ to have
> native windows for industry, and now with mobile native look and feel is
> even more important.  Further, VWs huge lack in its GUI was lack of support
> for native widgets.  We always used to tout MSWord's use of emulated widgets
> (apparently for performance reasons) as a defence but it didn't convince.
> The customer was always provided with poor emulations and a limited supply.
> IMO, native widgets would have made a big difference in hwo well-received VW
> was for GUI applications, where those using Windows could always turn to
> VSE.

Yes, I don't doubt that at all, especially during the time when
Windows NT / XP was the defacto platform one could expect anywhere and
everywhere.

I am curious now, however, in this technologically-splintered world
where Windows XP dying out, Windows 7 barely hanging on, everybody
hating Windows 8, and the promise of cheap upgrade to Windows 9, Plus
don't forget OSX widgets and then all the "widgets" people use on
their phones and tablets being basically different from app to app:
what IS "native" widgets these days? 

Native widgets means simply use of the platforms native widget set in constructing user interfaces.  I don't dsee different widgets across iOS devices.  I see lots of consistency.
 
I wonder what those manager
folks who shunned the
non-native-but-perfectly-usable-and-in-some-cases-better widgets are
asking for now?   :)

I assume good looking applications using native widgets in the host look-and-feel that follow the platform's style and usability guidelines.  Thats a reasonable request.  Look at how coherent and well-engineered the interface components in something like Apple's iOS is are and one soon realises one the one hand the interface quality is high and on the other that the only feasible way to construct interactive applications in that context is to build it out of those widgets, not emulate, not provide an alternative.  There are exceptions, e.g. parts of games where all one needs is touch events and all imagery is custom.  But for stereotypical interaction one surely has to use native widgets.

--
best,
Eliot
Reply | Threaded
Open this post in threaded view
|

Re: [squeak-dev] Re: The Dilemma: Building a Futuristic GUI for Ephestos

Eliot Miranda-2
In reply to this post by Torsten Bergmann
Hi Torsten,

On Tue, Sep 16, 2014 at 4:12 PM, Torsten Bergmann <[hidden email]> wrote:
Hi Eliot,

Yes - in the past most Smalltalks did not have native widgets and usually emulated
the L&F. I remember VW on a Sun Sparc with Windows or Mac look. While it was cool
to run 1:1 on another machine it would have been to much manpower for the vendor
to reimplement all the nice widgets to really look like the native system. Especially
when the L&F changed very often between Win95/96/XP/Win7/Win8 at Microsoft.

Even with good looking widgets/icons one could see from the speed and repainting issues
(white rectangles for damage areas) that Smalltalk was not native. Also native widgets had
other nice features like virtual modes for TreeViews/ListViews used if you want to display
many nodes.

Java faced the same problem - even with Swing and JavaFX today the Java UIs and especially
the ugly JFileDialog never had this "Native look and easy navigation feeling". And yes
there is SWT in Java providing native widgets - but how many applications are based on
it? Only a few.

On the ST side Smalltalk/MT and Dolphin use native widgets but were not portable. And if
you look at others like VW, VAST or Smalltalk/X you will see that engineers are good at
creating powerfull systems but often fail when it comes to UI design and usability. Squeak
was special and flexible with Morphic (even without multiple windows) - but looked too toyish.

So yes - customers of commercial Smalltalk vendors asked for "Native" because if you had
built a UI in Smalltalk it was part of a rich client application and often people compared
it to other native applications or new widgets found in MS Office.

That's a great summary. +1.
 
But in the past customer also asked for COM/COM+, CORBA and webservices while today
it is often much easier to exchange data or call functionality via HTTP, REST, ...

Sure, but that's invisible glue; not the same as UI components for the user.  So there's a bit of a non-sequitur extrapolating from UI (user to system) to system to system connectivity.
 
So time and expectations have changed a lot meanwhile. Especially for the UI's.
Desktop platforms unite with the web and in the web it is also possible to look more
like platforms or style to look like a native app. See [1] and [2] for two simple examples.

While the browsers and JS engines become faster this will also change more the way
we think about applications: no installation, styleable, clear look. The google
chrome experiments are a good page to see how this will soon look like. And we will
be independent from devices and screen resolution. In fact more and more applications
we use today run on a computers webbrowser, tablet or a smartphone (often the same way).

With Morphic (even when it has Fenestri) we can not compete agains HTML/CSS on the
UI side. The Canvas element and WebGL will also drive this forward.
Even if one does not like web technologies - it currently is the platform where
you reach people easily.

Smalltalk should/could have a place in this (web centric) world:

  1. As a backend to serve the web
  2. On the client
  3. Combining 1. and 2.

For the first we have Seaside, TeaPot, Aida, ...
For the seond: as it will not happen that browser vendors agree and threw out JavaScript in
favour of ST runtimes, maybe we can build on top like Amber or SqueakJS do.

But we should also rethink Smalltalk to find a better place as a scripting language. What
I still would like to see:

 - tiny and fast VM with a command line and REPL

We're getting there with fast.  Tiny needs more definition, but the core Cog/Spur VM on Mac minus plugins and GUI code is 568k, 506k code, 63k data; the newspeak VM which has fewer primitives but support for two bytecode sets is 453k, 386k code, 68k data.  That includes the interpreter, JIT, core primitives and memory manager/GC. Add on several k for the FFI, C library et al and a VM in a megabyte is realistic.  Is that in the right ball park?

 - one unified and easy to use FFI with callbacks so one can use the platform, maybe
   others will write the bindings then

+1.  Again that's central to our efforts.
 
 - single small base image but fast loadable binary code components (modules, maybe using the
   LoadLibrary trick), similar to what David had with SmallScript or what BeeSmalltalk is doing with SLL's

Yep.  But personally I think Fuel is better and just as fast.  Certainly that's the parcels experience.
 
 - but still with the ability to bootstrap up to a full saveable image

+1.
 
 - ability to serve the web with easy callbacks into Smalltalk for implementing functionality
   (especially with this we may catch 90% of the usual UI cases).

This we'll leave to the web framework designers, but it seems eminently doable no?
 

Bye
T.

[1] Metro theme Bootstrap http://talkslab.github.io/metro-bootstrap/components.html
[2] jQuery Desktop http://desktop.sonspring.com/
[3] Chrome Experiments http://www.chromeexperiments.com/

I love the circle game but oh boy does the implementation show through in the pauses.  My old 5.x Safari pauses noticeably every two seconds or so. Chrome is smooth.

--
best,
Eliot
Reply | Threaded
Open this post in threaded view
|

Re: [squeak-dev] Re: The Dilemma: Building a Futuristic GUI for Ephestos

Esteban A. Maringolo
2014-09-17 14:07 GMT-03:00 Eliot Miranda <[hidden email]>:

>>  - tiny and fast VM with a command line and REPL

> We're getting there with fast.  Tiny needs more definition, but the core
> Cog/Spur VM on Mac minus plugins and GUI code is 568k, 506k code, 63k data;
> the newspeak VM which has fewer primitives but support for two bytecode sets
> is 453k, 386k code, 68k data.  That includes the interpreter, JIT, core
> primitives and memory manager/GC. Add on several k for the FFI, C library et
> al and a VM in a megabyte is realistic.  Is that in the right ball park?

Those sizes are impressively small!
All those features in less than a megabyte are small even if we go
back in time ten years from now.

I'm eager to see and use those futuristic VMs even for mundane tasks.

Esteban A. Maringolo

Reply | Threaded
Open this post in threaded view
|

Re: [squeak-dev] Re: The Dilemma: Building a Futuristic GUI for Ephestos

Torsten Bergmann
In reply to this post by Eliot Miranda-2
Eliot wrote:
>We're getting there with fast.  Tiny needs more definition, but the core Cog/Spur VM on Mac minus plugins and GUI >code is 568k, 506k code, 63k data; the newspeak VM which has fewer primitives but support for two bytecode sets is >453k, 386k code, 68k data.  That includes the interpreter, JIT, core primitives and memory manager/GC. Add on >several k for the FFI, C library et al and a VM in a megabyte is realistic.  Is that in the right ball park?

Yes, wet's my appetite :)

Tiny means easy to download and use for scripting, no other dependencies
for the out of the box REPL experience. But still powerfull to built one on another
and scale up to large programs.

Initially you provide just a simple VM executable for a "tiny smalltalk" (ts), for simple
things like:

   c:\myscripts\ts.exe -e 3+4
   7

where ts.exe is the VM in a few kB including a small initial kernel image (as part of
the PE DATA section). It should be able to run scripts:

   c:\myscripst\ts.exe automate.st

It should be possible to easily build components (either with or without the sources):

   ts.exe sunit.st -o sunit.sll
   ts.exe sunit.st -noSource -o sunit.sll

So you can either include other scripts

   ts.exe -i sunit.st  mytests.st  

or link the previously built binary components to form something new.

   ts.exe -l junit.sll mytests.st

But it should be possible to build another vm+image easily:

      ts.exe -i mykillerapp.st  -o killerapp.exe
 or   ts.exe -l mykillerapp.sll -o killerapp.exe

by writing a new PE file for Windows either including a new kernel image or a combined
one based on the already built-in initial kernel of the previous one.
So I can deploy a killerapp or reassemble it to form the next language version.

SmallScript was very close to that and it was a nice thing to work with.
Especially since usually Smalltalk usually throws things out at the end - but
one never builds a house by carving it out of a rock. We need bricks to assemble.

With the above scheme you could build components, some of them portable, others
explicitly non-portable as the code includes native calls. The later have to
be rebuilt on the other platform - so if you have good design abstractions you
can implement a UI lib on Windows and one on Mac.

Some of the components are with the source code packaged in for debugging
(but not changeable), for closed source components you leave it out.

And still it should support pinnable objects (not moved by GC for callouts),
sandboxing, Classes with UUIDs to allow for side by side loading/migration
and an extensible meta-scheme as this is where Smalltalk is still the hero of all
und metaprogramming will be our future.

Also the VM should be available as a shared component - so it can run in-process
in other programs like a web browser. Always wished to write:

   <script type="text/tinyscript">
         BrowserLog write: 'HelloWorld'.
   </script>

directly in HTML.

And this is only the beginning of the wish list...

>Yep.  But personally I think Fuel is better and just as fast.  Certainly that's the parcels experience.
>  - but still with the ability to bootstrap up to a full saveable image

Yes, Fuel would be an option. At least it would be platform independent. Not sure
about other options (quick loading by mapping component using memory mapped files etc.)
  
>This we'll leave to the web framework designers, but it seems eminently doable no?

For sure.

Bye
Torsten

Reply | Threaded
Open this post in threaded view
|

Re: [squeak-dev] Re: The Dilemma: Building a Futuristic GUI for Ephestos

Eliot Miranda-2
Hi Torsten,

    wow, what a great summary.  Thanks.  See below.

On Wed, Sep 17, 2014 at 12:09 PM, Torsten Bergmann <[hidden email]> wrote:
Eliot wrote:
>We're getting there with fast.  Tiny needs more definition, but the core Cog/Spur VM on Mac minus plugins and GUI >code is 568k, 506k code, 63k data; the newspeak VM which has fewer primitives but support for two bytecode sets is >453k, 386k code, 68k data.  That includes the interpreter, JIT, core primitives and memory manager/GC. Add on >several k for the FFI, C library et al and a VM in a megabyte is realistic.  Is that in the right ball park?

Yes, wet's my appetite :)

Tiny means easy to download and use for scripting, no other dependencies
for the out of the box REPL experience. But still powerfull to built one on another
and scale up to large programs.

Initially you provide just a simple VM executable for a "tiny smalltalk" (ts), for simple
things like:

   c:\myscripts\ts.exe -e 3+4
   7

where ts.exe is the VM in a few kB including a small initial kernel image (as part of
the PE DATA section). It should be able to run scripts:

   c:\myscripst\ts.exe automate.st

It should be possible to easily build components (either with or without the sources):

   ts.exe sunit.st -o sunit.sll
   ts.exe sunit.st -noSource -o sunit.sll

So you can either include other scripts

   ts.exe -i sunit.st  mytests.st

or link the previously built binary components to form something new.

   ts.exe -l junit.sll mytests.st

But it should be possible to build another vm+image easily:

      ts.exe -i mykillerapp.st  -o killerapp.exe
 or   ts.exe -l mykillerapp.sll -o killerapp.exe

by writing a new PE file for Windows either including a new kernel image or a combined
one based on the already built-in initial kernel of the previous one.
So I can deploy a killerapp or reassemble it to form the next language version.

SmallScript was very close to that and it was a nice thing to work with.
Especially since usually Smalltalk usually throws things out at the end - but
one never builds a house by carving it out of a rock. We need bricks to assemble.

+1000.

With the above scheme you could build components, some of them portable, others
explicitly non-portable as the code includes native calls. The later have to
be rebuilt on the other platform - so if you have good design abstractions you
can implement a UI lib on Windows and one on Mac.

Some of the components are with the source code packaged in for debugging
(but not changeable), for closed source components you leave it out.

And still it should support pinnable objects (not moved by GC for callouts),
sandboxing, Classes with UUIDs to allow for side by side loading/migration
and an extensible meta-scheme as this is where Smalltalk is still the hero of all
und metaprogramming will be our future.

So so far I have pinning.  But I'd love to hear more detail on sandboxing.  I'm not sure about UUIDs.  What about other mechanisms, namespaces, ClassBoxes?  UUID sounds too much like an implementation to me.  No one is proposing qualifying class names with UUIDs (Array:c5c09212-0c7d-44f3-81b7-18ae5d7f14d9 new: 5 ????).  How about reitierating this more abstractly?


Also the VM should be available as a shared component - so it can run in-process
in other programs like a web browser. Always wished to write:

   <script type="text/tinyscript">
         BrowserLog write: 'HelloWorld'.
   </script>

directly in HTML.

And this is only the beginning of the wish list...

Please, I'd love to have you write a fuller list.  We could add it to the list at Cog Projects or add it to a "Directions" page or some such.  But capturing these ideas is importasnt.

>Yep.  But personally I think Fuel is better and just as fast.  Certainly that's the parcels experience.
>  - but still with the ability to bootstrap up to a full saveable image

Yes, Fuel would be an option. At least it would be platform independent. Not sure
about other options (quick loading by mapping component using memory mapped files etc.)

Well, mapping finished images a la VW's PermSpace is probably easier.  The memory mapping in .Nt is extremely complex.  But I get the requirement; ultra-fast start-up of small components.
 
>This we'll leave to the web framework designers, but it seems eminently doable no?

For sure.

Bye
Torsten

thanks again.  And give serious thought to carefully enunciating these requirements/this design sketch? 

--
best,
Eliot
Reply | Threaded
Open this post in threaded view
|

Re: The Dilemma: Building a Futuristic GUI for Ephestos

abergel
In reply to this post by kilon.alios
Hi Kilon,

Not sure what you are trying to do.

Try this:
-=-=-=-=-=-=-=-=-=-=-=-=
forms := Form allInstances.
v := RTView new.
t := 1.
e := (RTBitmap new form: [ :index | forms at: index ]) elementOn: t.

v add: e.
v open.

[
        50 timesRepeat: [
                t := t + 1.
                e model: t.
                e updateShape.
                (Delay forMilliseconds: 500) wait.
                v signalUpdate ]
] fork.
-=-=-=-=-=-=-=-=-=-=-=-=

Cheers,
Alexandre


On Sep 14, 2014, at 1:22 AM, kilon alios <[hidden email]> wrote:

> so I tried to animate in Roassal having two different images display with a delay for few millisecond but it only displays the second image with this code
>
> form1 :=Form fromFileNamed:'/Users/kilon/Pictures/pharo.png'.
> form2 :=Form fromFileNamed:'/Users/kilon/Pictures/box.png'.
> v := RTView new.
> c := v canvas.
> s := TRBitmapShape new.
> s form: form1.
> c addShape: s.
> v  open.
>
> (1 to: 100) do: [ :index|
> s form: form1.
> s signalUpdate .
> "(Delay forMilliseconds: 1000 ) wait."
> s form: form2.
> s signalUpdate .
> (Delay forMilliseconds: 1000) wait.].
>
> I looked into RTAnimation but dont know how to use it for this example. Any help ? Does Roassal 2 support such animations ?
>
> if I do s form: and then s signalUpdate for each form separately it works fine but inside the loops does not seem to work , I tried bigger delays with no effect.
>
> On Sun, Sep 14, 2014 at 10:57 AM, stepharo <[hidden email]> wrote:
> Ronie when you ready I can help writting a chapter for the nex book.
>
> Stef
>
>
> On 13/9/14 21:42, Ronie Salgado wrote:
>> Hello,
>>
>> On 13/9/14 20:11, Enrico Schwass wrote:
>>> Hi
>>>
>>> another option could be the verse protocol. There was a plugin for Maya and Blender to do realtime rendering. Dont know if there is some automatic Swig-like wrapper for smalltalk but FFI might work.
>>
>> There is Wig like wrapper for Pharo done by ronie salgado.
>>
>> I have an adapted version of Swig for Pharo NativeBoost here: https://github.com/ronsaldo/swig
>>
>> Currently I am using it to generate my Bullet bindings (available here: https://github.com/ronsaldo/bullet-pharo) that can be used as an example of using Swig.
>> I still have to improve more my Swig generator, by writing documentation and fixing some bugs.
>>
>> Greetings,
>> Ronie
>>
>> 2014-09-13 16:11 GMT-03:00 stepharo <[hidden email]>:
>>
>> On 13/9/14 20:11, Enrico Schwass wrote:
>>> Hi
>>>
>>> another option could be the verse protocol. There was a plugin for Maya and Blender to do realtime rendering. Dont know if there is some automatic Swig-like wrapper for smalltalk but FFI might work.
>>
>> There is Wig like wrapper for Pharo done by ronie salgado.
>>
>> Stef
>>
>>
>>>
>>> http://youtu.be/c_D2YJSNj8I
>>>
>>> Almost a decade ago I did some ruby bindings by hand. It was working out of the box
>>>
>>> Bye
>>> Enno
>>>
>>> Am 13.09.2014 um 16:11 schrieb kilon alios <[hidden email]>:
>>>
>>>>
>>>> " I am curious. You mean rendering Bitmap from blender, for later use in Pharo UI? "
>>>>
>>>> yes exactly. Blender can render in all popular graphics files, most used are png. Animation frames can be rendered each frame in its own file.
>>>>
>>>> So basically its a lot like the average games out there.
>>>>
>>>> "I will suggest bare bone Morphic mainly, then Athens when you need vectorial drawing."
>>>>
>>>> ok
>>>>
>>>> "For iStoa I decided to go purely Morphic, I have a lot of bitmap. Bitmap source is SVG, then converted to PNG, overscaled for production use. Then from iStoa, depending on the application window extent, the bitmap are downscaled accordingly, I am pretty satisfied by the result."
>>>>
>>>> I fail to understand how your bitmap source is SVG for me bitmap is a raster graphic format svg is  procedural graphic format. Two opposite things.
>>>>
>>>> "Sure. The downpoint, you will depend on one additional layer."
>>>>
>>>> dependency is not an issue. Afterall the graphic files themselves will be far bigger download even more so if the GUI becomes very large.
>>>>
>>>> "Nice.  What will be the expected outcomes of such API, I am not sure to understand and I am curious."
>>>>
>>>> Well Blender besides creating 3d objects (which can be used as 2d objects too) it can also create 3d unrendable objects. That means that objects produce no graphics and have the role of placeholders or helpers, for example when you want an emitter of light or emitter of a physical power like gravity or wind. Those are called dummy objects and I could use them to give characteristics to the graphics , for example I could use a dummy to define the are of influence of a mouse click , or what type of event the bitmap will respond to. That means you wont have to import the graphics manually to pharo and create a separate morph for each bitmap and then set the events but rather press a button in blender and then Ephestos will import then bitmaps to pharo , set the events and create the morphs automagically.
>>>>
>>>> So basically you will be using Blender as a GUI designer.
>>>>
>>>> "Use fuel to store the state of your application objects."
>>>>
>>>> ah nice so fuel is a good candidate.
>>>>
>>>> I will also take a look at Dr Geo and Phratch , both apps have custom GUIs and use only Morphic (Dr Geo using Athens for the geometry primitives) .
>>
>>
>
>

--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel  http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.




Reply | Threaded
Open this post in threaded view
|

Re: The Dilemma: Building a Futuristic GUI for Ephestos

abergel
In reply to this post by Nicolai Hess
Well… Porting Roassal3d to Woden is almost straightforward :-)
We can help on this.

Effort behind Woden, Roassal, GraphET are not to simply tools. But instead producing an effective solution for a given problem. So, they will always be changing :-)

Cheers,
Alexandre


On Sep 14, 2014, at 7:28 AM, Nicolai Hess <[hidden email]> wrote:

> Sometimes it is a bit dangerous to trust on "bleeding edge" pharo frameworks.
> I did some work based on Roassal3D just to found out there won't be any further development.
> The same happens with Roassal and GraphET.
> The same can happen with Woden too :)

--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel  http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.




Reply | Threaded
Open this post in threaded view
|

Re: The Dilemma: Building a Futuristic GUI for Ephestos

Martin McClure-2
In reply to this post by Eliot Miranda-2
On 09/15/2014 11:54 AM, Eliot Miranda wrote:


> Agreed.  But one real problem with the Squeak/Pharo UI is the lack of
> native windows.  There is an old project Graphics-External-Ffenestri but
> AFAICT it isn't being used.  But there /is/ a really good prototype of a
> native window system above Squeak done by Vassili Bykov in Newspeak.
>   The native windows contain morphs, but anything, including MVC, can be
> present. This provides native Win32 Windows (doing other platforms is
> merely work) /and/ the ability to snapshot and bring back up windows on
> a different platform (e.g. open in win32, snapshot and bring up in
> Squeak/Pharo Morphic windows, or vice verse), and the ability to do this
> dynamically.  Is anyone motivated to port the Newspeak code back to
> Squeak/Pharo?
>
>
> If you're interested, contact me, or Vassili, or Bob Westergaard and ask
> about Brazil (think plumbing).
>

By coincidence, this week I dusted off my project (shelved about a year
and a half ago) to port Brazil and Hopscotch to Smalltalk. And have made
some progress, though it's still very early stages.

If anyone else is interested in helping move this forward more quickly,
let me know...

Regards,

-Martin

Reply | Threaded
Open this post in threaded view
|

Re: [squeak-dev] Re: The Dilemma: Building a Futuristic GUI for Ephestos

stepharo
In reply to this post by Torsten Bergmann
Torsten

we are 100% in sync on that vision :)

Stef

> Eliot wrote:
>> We're getting there with fast.  Tiny needs more definition, but the core Cog/Spur VM on Mac minus plugins and GUI >code is 568k, 506k code, 63k data; the newspeak VM which has fewer primitives but support for two bytecode sets is >453k, 386k code, 68k data.  That includes the interpreter, JIT, core primitives and memory manager/GC. Add on >several k for the FFI, C library et al and a VM in a megabyte is realistic.  Is that in the right ball park?
> Yes, wet's my appetite :)
>
> Tiny means easy to download and use for scripting, no other dependencies
> for the out of the box REPL experience. But still powerfull to built one on another
> and scale up to large programs.
>
> Initially you provide just a simple VM executable for a "tiny smalltalk" (ts), for simple
> things like:
>
>     c:\myscripts\ts.exe -e 3+4
>     7
>
> where ts.exe is the VM in a few kB including a small initial kernel image (as part of
> the PE DATA section). It should be able to run scripts:
>
>     c:\myscripst\ts.exe automate.st
>
> It should be possible to easily build components (either with or without the sources):
>
>     ts.exe sunit.st -o sunit.sll
>     ts.exe sunit.st -noSource -o sunit.sll
>
> So you can either include other scripts
>
>     ts.exe -i sunit.st  mytests.st
>
> or link the previously built binary components to form something new.
>
>     ts.exe -l junit.sll mytests.st
>
> But it should be possible to build another vm+image easily:
>
>        ts.exe -i mykillerapp.st  -o killerapp.exe
>   or   ts.exe -l mykillerapp.sll -o killerapp.exe
>
> by writing a new PE file for Windows either including a new kernel image or a combined
> one based on the already built-in initial kernel of the previous one.
> So I can deploy a killerapp or reassemble it to form the next language version.
>
> SmallScript was very close to that and it was a nice thing to work with.
> Especially since usually Smalltalk usually throws things out at the end - but
> one never builds a house by carving it out of a rock. We need bricks to assemble.
>
> With the above scheme you could build components, some of them portable, others
> explicitly non-portable as the code includes native calls. The later have to
> be rebuilt on the other platform - so if you have good design abstractions you
> can implement a UI lib on Windows and one on Mac.
>
> Some of the components are with the source code packaged in for debugging
> (but not changeable), for closed source components you leave it out.
>
> And still it should support pinnable objects (not moved by GC for callouts),
> sandboxing, Classes with UUIDs to allow for side by side loading/migration
> and an extensible meta-scheme as this is where Smalltalk is still the hero of all
> und metaprogramming will be our future.
>
> Also the VM should be available as a shared component - so it can run in-process
> in other programs like a web browser. Always wished to write:
>
>     <script type="text/tinyscript">
>           BrowserLog write: 'HelloWorld'.
>     </script>
>
> directly in HTML.
>
> And this is only the beginning of the wish list...
>
>> Yep.  But personally I think Fuel is better and just as fast.  Certainly that's the parcels experience.
>>    - but still with the ability to bootstrap up to a full saveable image
> Yes, Fuel would be an option. At least it would be platform independent. Not sure
> about other options (quick loading by mapping component using memory mapped files etc.)
>    
>> This we'll leave to the web framework designers, but it seems eminently doable no?
> For sure.
>
> Bye
> Torsten
>
>
>


Reply | Threaded
Open this post in threaded view
|

Re: The Dilemma: Building a Futuristic GUI for Ephestos

stepharo
In reply to this post by Martin McClure-2
HI martin

I'm because this is important to be able to learn

Stef

On 19/9/14 06:36, Martin McClure wrote:

> On 09/15/2014 11:54 AM, Eliot Miranda wrote:
>
>
>> Agreed.  But one real problem with the Squeak/Pharo UI is the lack of
>> native windows.  There is an old project Graphics-External-Ffenestri but
>> AFAICT it isn't being used.  But there /is/ a really good prototype of a
>> native window system above Squeak done by Vassili Bykov in Newspeak.
>>   The native windows contain morphs, but anything, including MVC, can be
>> present. This provides native Win32 Windows (doing other platforms is
>> merely work) /and/ the ability to snapshot and bring back up windows on
>> a different platform (e.g. open in win32, snapshot and bring up in
>> Squeak/Pharo Morphic windows, or vice verse), and the ability to do this
>> dynamically.  Is anyone motivated to port the Newspeak code back to
>> Squeak/Pharo?
>>
>>
>> If you're interested, contact me, or Vassili, or Bob Westergaard and ask
>> about Brazil (think plumbing).
>>
>
> By coincidence, this week I dusted off my project (shelved about a
> year and a half ago) to port Brazil and Hopscotch to Smalltalk. And
> have made some progress, though it's still very early stages.
>
> If anyone else is interested in helping move this forward more
> quickly, let me know...
>
> Regards,
>
> -Martin
>
>


1234