From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (from majordomo@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id XAA18918; Fri, 18 Jul 2003 23:21:36 +0200 (MET DST) X-Authentication-Warning: pauillac.inria.fr: majordomo set sender to owner-caml-list@pauillac.inria.fr using -f Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id XAA10817 for ; Fri, 18 Jul 2003 23:21:35 +0200 (MET DST) Received: from pyramid.twistedmatrix.com (adsl-64-123-27-105.dsl.austtx.swbell.net [64.123.27.105]) by concorde.inria.fr (8.11.1/8.11.1) with ESMTP id h6ILLXf20439 for ; Fri, 18 Jul 2003 23:21:33 +0200 (MET DST) Received: from chris by pyramid.twistedmatrix.com with local (Exim 3.35 #1 (Debian)) id 19dcfC-0008GY-00 for ; Fri, 18 Jul 2003 16:21:14 -0500 Date: Fri, 18 Jul 2003 16:21:14 -0500 From: Chris Clearwater To: caml-list@inria.fr Subject: [Caml-list] Roadplan for world domination (or constructive criticism of ocaml facilities) Message-ID: <20030718212114.GA31599@pyramid.twistedmatrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.3.28i X-Loop: caml-list@inria.fr X-Spam: no; 0.00; criticism:01 gui:01 toolkits:01 widgets:01 practicality:01 31.:99 mingw:01 msdn:01 pricing:99 binaries:01 ocamlmake:01 python's:01 distutils:01 passing:01 ocamlsdl:01 Sender: owner-caml-list@pauillac.inria.fr Precedence: bulk I have come across the Ocaml language several months ago and after much investigation and trial coding I have come to several conclusions. Most importantly I think Ocaml is a wonderful language to program in. It has all the features I would expect from a modern language and on top of that it's compiled native code appears to rival that of C in many areas. It truly is the language of the future. Now that I have expressed how much I am growing to love Ocaml I would like to share with you my initial experiences as a new user. First I would like to single out some issues that I believe threaten Ocaml from being taken seriously and then i would like to offer some solutions that would improve the usability of ocaml greatly. - Support on win32 could certainly be much better - Compiling and distributing Ocaml source is a very delicate process - There exists much fragmentation among usage of different GUI toolkits and they are limited to C/C++ conventions. (Is it possible to create your own custom GTK widgets within ocaml?) And without further ado I present to you 10 steps to world domination: 1) Support for Ocaml on win32 (both as a development and target enviroment) is very crucial for the adoption and practicality of Ocaml. For example, look at the trouble some developers must go through to get their application running under win32: http://groups.yahoo.com/group/unison-hackers/message/31. Forutnately this doesn't have to be the case. The mingw32 toolset allow compilation and linking to be done very similarily to how it is done on Unix. Also, it enables one to develop win32 apps without shelling out hundeds of dollars to Microsoft: http://msdn.microsoft.com/visualc/howtobuy/pricing.aspx I propose mingw32 be made the default compiler/linker for native win32 binaries (or even drop MSVC support entirely). 2) Take the idea of ocamlmklib further to generalize the compilation of both Ocaml programs and libraries into a module called "Ocamlmake". Also create a binary of ocamlmake which makes use of the module for command line compiling and include these in the standard distribution on all platforms. 3) Now that we have a easy cross-platform way to compile ocaml applications we can just distibute our code with Makefiles that call ocamlmake! WRONG. Makefiles suck. Now we standardize on the idea of an Ocaml "package". Each package would include in it's toplevel directory a file called setup.ml (This is starting to resemble python's distutils indeed). setup.ml would make use of the Ocamlmake module by building a record and passing it to Ocamlmake.setup. This record might be static or it might be created by self-configuration. For example, the ocamlsdl package would call sdl-config to retrieve some compilation flags. You _would_ rather configure in ocaml than "portable shell script", right? Then to build the application you would execute "ocamlrun setup.ml build" and "ocamlrun setup.ml install" to install it. Also the record would contain meta-information such as the author, copyright, etc. 4) Change the ocaml distribution to compile using Ocamlmake :) (except for bootstrapping if you dont already have a previous version of ocaml installed) 5) Create a module called Framebuffer which parallels the primtives found in OpenGL/DirectX. The Graphics module is close, but the design doesn't match well with these two APIs (We want hardware acceleration). Implement for each platform a Framebuffer module (DirectX or OpenGL where available, Xlib or other native graphics system otherwise). Include this in the standard distribution. 6) Create a cross-platform Event module. Include this in the standard distribution. 7) Create a cross-platform Font module (wrap freetype or create an Ocaml implementation). Include this in the standard distribution. 8) Create a GUI on top of the Framebuffer, Event, and Font modules, implemented in Ocaml :) Include this in the standard distribution. 9) Now the big payoff, we write a standard Ocaml IDE, to be included with the Ocaml distribution. It would be well integrated with the distribution. Ocamlmake module for compiling, the ocaml lexer for syntax highlighting, exporting packages (setup.ml). This would make it incredably easy to get started creating cross-platform libraries and modules. Realating to point #1, now a win32 user need only grab the mingw32 and Ocaml distributions and they are set. They can even easily export their code to a ocaml package for distribution. Obviously the benefit extends to all other platforms as well. 10) World domination. I would greatly appreciate any feedback. ------------------- To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ Beginner's list: http://groups.yahoo.com/group/ocaml_beginners