On Sun, Sep 14, 2014 at 10:07 AM, Nicolai Hess <[hidden email]> 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).
best, Eliot
|
On Mon, Sep 15, 2014 at 12:31 PM, Craig Latta <[hidden email]> wrote:
I don't want to talk for Vassili, but he had done the prototype for Pollock, the new window system for VW that was squandered by Cincom management. In this he architected full conversion between native and non-native windows, both dynamically and over snapshot. So when he came to implement the GUI for Newspeak he used that experience. I don't see the same architectural support in Graphics-External-Ffenestri it doesn't even support snapshot and resume on the same window system. Here's the relevant extract from HostWIndowProxy's class comment: "This is a proxy for a Host OS window and as such is considered a disposable item. When an image is restarted the client must recreate suitable instances from the information they hold." So I expect Vassili didn't even think of using it. Vassili's work doesn't need any VM support beyond the ability to ask the VM to /not/ respond to GUI events. It is based on the FFI and uses callbacks to receive events. In any case Vassili's work is the best candidate that I've ever seen for a proper native windows integration for Smalltalk systems that ave a history of non-native windows. thanks, best, Eliot
|
> ...I expect Vassili didn't even think of using it... In any case > Vassili's work is the best candidate that I've ever seen for a proper > native windows integration for Smalltalk systems that have a history > of non-native windows. Fair enough. :) Thanks! -C -- Craig Latta netjam.org +31 6 2757 7177 (SMS ok) + 1 415 287 3547 (no SMS) |
In reply to this post by Eliot Miranda-2
(this probably won’t get to the pharo list unless someone forwards it)
On 15-09-2014, at 12:40 PM, Eliot Miranda <[hidden email]> wrote: > > > On Mon, Sep 15, 2014 at 12:31 PM, Craig Latta <[hidden email]> wrote: > Hoooold on there... :) Does this mean that Vassili tried Ffenestri > and found it unusable? If so, why? Details, please. > > I don't want to talk for Vassili, but he had done the prototype for Pollock, the new window system for VW that was squandered by Cincom management. In this he architected full conversion between native and non-native windows, both dynamically and over snapshot. So when he came to implement the GUI for Newspeak he used that experience. I don't see the same architectural support in Graphics-External-Ffenestri it doesn't even support snapshot and resume on the same window system. Absolutley. Ffenestri is/was just the basic low-level support that allowed host windows (and menus on windows/mac) to be used. John & I did it as part of the early work for Sophie and so far as I recall it never got actually used. Since people had been whining (loudly, frequently, and annoyingly) about how desperately host windows were needed we released the code with working trivial demos and … nothing. I don't think anybody ever even reported trying it out. This was around ten years ago, so evidently it was a really really urgent thing. If there is actually functional code that can be adopted into Squeak we should go with it. tim -- tim Rowledge; [hidden email]; http://www.rowledge.org/tim Strange OpCodes: CPM: Change Programmer's Mind |
> 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. -C -- Craig Latta netjam.org +31 6 2757 7177 (SMS ok) + 1 415 287 3547 (no SMS) |
On 15-09-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. Well ok, but you’re hardly ‘anybody’. :-) tim -- tim Rowledge; [hidden email]; http://www.rowledge.org/tim When all else fails, let a = 7. If that doesn't help, then read the manual. |
In reply to this post by ccrraaiigg
Hi Craig,
On Mon, Sep 15, 2014 at 1:40 PM, Craig Latta <[hidden email]> wrote: --
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
|
In reply to this post by timrowledge
The problem with "new" code is you need some example/demo code, Ffenestri don't have that.
What about some demo code showing how you can send the "world menu" to the real mac menu bar, then I can adapt that demo in my own "apps". On 15/09/2014, at 15:47, tim Rowledge <[hidden email]> wrote: > > On 15-09-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. > > Well ok, but you’re hardly ‘anybody’. :-) > > tim > -- > tim Rowledge; [hidden email]; http://www.rowledge.org/tim > When all else fails, let a = 7. If that doesn't help, then read the manual. > > > |
In reply to this post by Eliot Miranda-2
> [Ffenestri] does not constitute a replacement for the current window > system though does it? But Vassili's work can be. Of course. Until a couple of hours ago, though, I didn't know it existed. > 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? Of course not. :) Whoa, you seem to be under the impression I'm advocating for Ffenestri here in 2014. I'm not; I only wanted some detail as to why it's no longer interesting. > 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. Yikes, I never thought you got anywhere near insulting anyone. Yes, criticism is essential, that's why I asked to hear some. :) thanks again, -C -- Craig Latta netjam.org +31 6 2757 7177 (SMS ok) + 1 415 287 3547 (no SMS) |
In reply to this post by Eliot Miranda-2
On 15-09-2014, at 2:11 PM, Eliot Miranda <[hidden email]> wrote: > 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. Not insulting at all. As I said, John & I did the most basic low-level stuff in preparation for more advanced work by other people (for general use) and ourselves (for Sophie). We didn’t get to ever go back to it for Sophie (which foundered on the all too common altar of “it must be rewritten in java” and died) and despite the claims about how important the host window thing was nobody took it up. It will be interesting to see if anyone will be able to do anything with Vassili’s work. tim -- tim Rowledge; [hidden email]; http://www.rowledge.org/tim Oxymorons: Found missing |
> It will be interesting to see if anyone will be able to do anything > with Vassili’s work. And whether, after Anyone does, Someone will acknowledge that simple fact. This stuff matters. -C -- Craig Latta netjam.org +31 6 2757 7177 (SMS ok) + 1 415 287 3547 (no SMS) |
In reply to this post by timrowledge
On 15.09.2014, at 22:47, tim Rowledge <[hidden email]> wrote:
> On 15-09-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. > > Well ok, but you’re hardly ‘anybody’. :-) And me neither? I made it work again not so long ago. DisplayHostWindow examplePaint inspect even did survive an image save/restart. - Bert - smime.p7s (5K) Download Attachment |
In reply to this post by Eliot Miranda-2
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. |
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 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
|
>> 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? I wonder what those manager folks who shunned the non-native-but-perfectly-usable-and-in-some-cases-better widgets are asking for now? :) |
In reply to this post by Eliot Miranda-2
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/ |
What Torsten said. When I get the darn CMake stuff done, I will be turning to REPL work and multi-core work (assuming I develop the chops to get it done) Put a factory pattern in place where morphic currently launches and provide a 'seaside' gui rendering engine using the renderContentOn: aCanvas idiom as an option. Use both for the web and the desktop and let CSS folks design their looks and feels. my $0.02. cordially, tty Hi Eliot, |
In reply to this post by Chris Muller-4
On Tue, Sep 16, 2014 at 2:55 PM, Chris Muller <[hidden email]> wrote:
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 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
|
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, That's a great summary. +1. But in the past customer also asked for COM/COM+, CORBA and webservices while today 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. 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 +1. Again that's central to our efforts. - single small base image but fast loadable binary code components (modules, maybe using the 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 This we'll leave to the web framework designers, but it seems eminently doable no?
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
|
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: +1000. With the above scheme you could build components, some of them portable, others 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 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. 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? thanks again. And give serious thought to carefully enunciating these requirements/this design sketch? -- best, Eliot
|
Free forum by Nabble | Edit this page |