Why I Can't Take Smalltalk Seriously
Please notice that I wrote can't, not won't! I'm on the technical advisory board for a startup and they are intent on doing everything the right way. When we started to talk about web frameworks, everything was on the whiteboard for discussion: .Net, JSF, Tapestry, PHP, Ruby/Rails, Django, etc. I also mentioned WebObjects and Seaside. That caused a mix of puzzled looks and laughter. On the upside, the architecture we are proposing will allow them to consider Seaside but, this is the exception to the rule.
Meanwhile, back at my day job, I couldn't consider Seaside. We have billions of dollars worth of data and information stored in SQL Server, Oracle and DB2. That's a big, brick wall to hit. I need tools like JDBC, ODBC, JPA, Hibernate, iBatis, multi-threaded connection pools, drivers for each RDBMS (plus MySQL and Postgres would be nice) etc. Yes, I know there's GLORP but please ...
I also need scalability to tens of thousands of simultaneous users. That's also one of the reasons we can't use Ruby/Rails, either. When we need hundreds of servers to run a single application supporting thousands of users, cost of manageability becomes a very important factor. At this level, programmer productivity really counts for nothing. I'm far more interested in lowest cost of operation rather than cost of development. If it takes a dev a month or two longer to code something robust and manageable in Java or .Net, and the application is going to be in production for years, guess what wins? Just add more hardware is no longer a viable strategy when datacenters have been maxed out for both space and power consumption.
If I'm wrong about some points here, please let me know. Although, I did put some fair effort into researching how Smalltalk could meet some of these requirements but, I guess I was using the wrong keywords. Perhaps the Smalltalk community can help me get Smalltalk into at least one enterprise.

8 comments:
You know you could actually test out your theories instead of making rash assumptions. Pooled connections, for example, are something I've used for years in both VA Smalltalk and VisualWorks Smalltalk. Scaling wrt to Ruby/Rails is the same as in C# and Java frameworks. Tens of thousands of users are easily supported by one server.. I have a server supporting many more than that with full session state - in a seaside like framework - without the machine even breaking a sweat. So.. as a Smalltalker answering your plea here.. go and actually test this stuff out before you claim it cannot be done.
I'd suggest you have a look at dabbledb.com, and then rethink what is and isn't possible with Smalltalk.
Dabbledb is interesting but, not quite what I need.
As for tesing stuff out, I spend a lot of time doing that already (mostly my own, actually). I was hoping to maybe save some evenings and weekends for myself by seeing if anyone else has walked this path, before me.
As for RoR, we did beat it up in the lab and it did not scale for our needs, cost-effectively.
For scalability try also another Smalltalk web app server: Aida/Web (http://www.aidaweb.si). I benchmarked it recently and achieved 10.000 users/sessions consuming 220M of memory in a single Smalltalk image, serving up to 30requests/s for a dynamically generated 4KB test page. More about benchmark here: http://www.aidaweb.si/aidaweb-benchmarks.html
Thank-you, I'll check it out.
Seems that you have three problems --- PHP-style shared-nothing-ness to allow horizontal scaling, raw performance, and database drivers. All three of Smalltalk, .NET, and Java are fairly bad at the shared-nothing dance, but you can do it in any of them. Raw performance is best in Java and .NET, middling in Squeak (better in VA and VW), and pretty bad in Python, Perl, and Ruby. Database drivers, I know little about.
Look at ST/X
As far as development tools go, they are all there and the high productivity of smalltalk is there.
Scalability, I used to run a simulation of 1000s of telecoms equipment, on a Sun Enterprise server running to images of 500Mb+ serving 1000s of OSI and TCP/IP connections simultaneously.
Competing Java simulators took a farm of amchines to run, 5 times as many developers, and considerable expense on bought in libraries.
For speed, ST/X can compile to C. or you can write methods in C.
You cant run Seaside in ST/X but there are web frameworks in ST/X.
enjoy. ST/X makes all the rest loot like toys IMHO.
Thank-you, Keith! I'll certainly look into ST/X. It may be just what I'm looking for.
Post a Comment