Hi Stef, Similarly to Philippe my feedback is based on a Seaside/web centric view of how I use Pharo.
I'd echo Philippe's concern about looking carefully at how much effort is required to rework Morphic vs using an existing UI library or WebView. From a web centric view I'd emphasis building a remote browsing interface over significant Morphic work. At FOSDEM this weekend I was impressed with the progress Craig Latta has made on spoon recently [1] [2]. Does his work on remote browsing and micro kernels fit into a future Pharo? As I develop with Pharo and deploy with Gemstone, maintaining some level of compatibility between Smalltalks is important. I note the problem raised with XML compatibility between dialects [3]. So the ability to maintain a compatibility layer such as Grease is important, as is the ability to re-use packages between Pharo and Gemstone. [1] http://thiscontext.wordpress.com/ [2] http://netjam.org/spoon/naiad/ [3] http://www.mail-archive.com/pharo-project@lists.gforge.inria.fr/msg56924.html On 5 February 2012 17:43, Philippe Marschall <kus...@gmx.net> wrote: > On 30.01.2012 09:24, Stéphane Ducasse wrote: > > OK, so here's my take. I try to not turn this into a wish list. > > Rich libraries > While I obviously agree that rich libraries are valuable I believe it's > important to have clear guidelines to what should be part of Pharo and what > not. In one extreme I could have everything from SqS be part of Pharo. I > don't think this is the idea. You don't want to have the same discussion > for every library whether it should be part of Pharo. > > FFI > First I think we need to have a problem statement. We want to be able to > use libraries written in C from Pharo. We don't implement them in Pharo > because we don't have the resources to develop them or Pharo is unsuited > for the task. This sucks because it's no longer "turtles all the way down" > but better than nothing. Since blocking C calls block the entire VM until > the call returns we need to have "threaded-FFI". > Yes, I do think that callbacks should be mentioned here. Currently the > situation as I understand it is: > - use FFI for call-outs > - use Alien for call-backs > - use NativeBoost for faster callouts? "portable plugins"? > It would be really nice to have a better, more integrated solution here. > If that results in something that's more than a one liner for a C call > that's fine with me. > > 64 bit > I think it's important to make a distinction between 64bit images and 64 > bit VMs. > > 64 bit VMs > Unless you on a small device current systems are 64bit. While most of them > offer some sort of way for running 32bit applications this cannot be the > way forward since: > - it clearly marks the application as legacy > - you can only talk to 32bit libraries (see FFI) > - we don't know how long this will still be supported (Apple anybody?) > I don't know how much work is required to make Cog run on 64bit. > > 64bit images > While it would be nice to have multi gigabyte images (maybe not) I don't > think it's realistic to assume we have the resources to come up with a GC > that can handle such images. > > SOAP > SOAP is a massive resource sink [1]. Yes it would be nice to have good > support but the cost is prohibitive and better spent on other things. > > Sockets > I don't think the socket layer is holding us back. Sure, it's ugly, sure, > it can — and should — be improved, but it's not holding us back. IMO it's > missing four things: > - better documentation with examples, this is important and relatively > easy to do > - SSL, this is "just" an issue for clients since servers are fronted > anyway. I know Sven's working on this. > - sendfile support. This would allow us to send files efficiently over > the network without touching user space. Since we're fronted anyway this is > not a big deal. > - asynchronous support. This would allow us to have a large amount of > open connections for things like WebSockets. May be too much work to get it > working on Mac/Linux/Windows. This alone doesn't give us WebSockets, we > still need to write quite some infrastructure on top of it so you'll > probably want to deprioritize if not drop this. > I know I have a narrow Seaside-centric focus here. > What would be nice is to have a generic client-server framework (how many > times have I written a socket-loop?) but I don't think this should be part > of Pharo. > > Load balancer > I don't think this needs to be part of Pharo. Apache already does this. > > UI frameworks: > Have you considered cutting your losses? You have your existing > infrastructure that requires more resources than you have and if you could > you rewrote it. Then in addition you have new requirements and you want to > come up with new paradigms. I feel this alone can consume more your entire > resources. > Options that I would consider: > - status quo, maintenance only, no further development > - drop UI entirely, go for something like embedded WebKit > - make it somebody else's problem, once you have better FFI generate > bindings for GTK/QT/… > This is not giving up. This is not fighting battles you cannot win. > > Plug Computer > Really? You have all the other places that need more resources and you > want to do even more. > > Now the things that aren't on your list: > > VM: > Better JIT, allocator, collector. No matter how good your VM is it's never > good enough and there's always useful stuff you can add like monitoring. > > #identityHash > It would certainly be nice to have more than 12 hash bits, especially form > a performance PoV. IIRC there was once talk of getting rid of compact > classes. I take an additional hash bit over an immutability bit any time. > > Infrastructure > If your tools and build infrastructure are holding you back fix them. I > would be quite happy if a year from now Pharo is exactly the same and the > only thing that changed is the infrastructure you use to build Pharo is way > better. I know Seaside sucks at this as well. > > Migration Support > Since you're changing quite a lot of things (SystemDictionary/**SmalltakImage, > file system, streams, …) it would be nice to have support to: > - tell the user where he uses deprecated code > - assist the user in migrating to new APIs > this can also help you migrate everything in Pharo to the new APIs. You > probably want to build on top of the rewrite engine of RB. Since you don't > have static types the migration can probably only done in a semi-automated > way presenting the user a list of possible matches and letting him select > the appropriate ones. The deprecation support has been discussed > previously. This is probably the only thing in this list that could be put > into research papers. > > Releases > I know Seaside sucks at this as well so this isn't a flame. To me as an > outsider the release process of Pharo is confusing. I find the release > process of Eclipse [2] [3] better. The main points are: > - One main release every year > - Two bugfix releases every year > - after the two bugfix releases a new main release is done and the old > main release becomes unsupported > The releases are date driven, not feature driven. The dates for the ga, rc > and milestone releases as well as feature and API freezes are set years in > advance. That has downsides. For example if your feature misses a deadline, > you have to wait for more than a year to see it in a release. But it makes > everything nicely planable. > > [1] http://www.innoq.com/soa/ws-**standards/poster/innoQ%20WS-** > Standards%20Poster%202007-02.**pdf<http://www.innoq.com/soa/ws-standards/poster/innoQ%20WS-Standards%20Poster%202007-02.pdf> > [2] > http://wiki.eclipse.org/**Simultaneous_Release<http://wiki.eclipse.org/Simultaneous_Release> > [3] > http://wiki.eclipse.org/**SimRel/Overview<http://wiki.eclipse.org/SimRel/Overview> > > Cheers > Philippe > > >