thanks Philippe.
I worked more on the document but I will integrate your ideas in it and will 
send it again.


Stef
On Feb 5, 2012, at 6:43 PM, Philippe Marschall 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
> [2] http://wiki.eclipse.org/Simultaneous_Release
> [3] http://wiki.eclipse.org/SimRel/Overview
> 
> Cheers
> Philippe
> 
> 


Reply via email to