Posted by: 2stepsback | April 12, 2007

Porting Ideas

Porting code from one platform to another is a good source of work and possibly revenue. That the idea has immense value is proved by projects like:

  • Nant – from Java Ant
  • MSBuild – inspired by both Nant and Ant
  • ActivePerl – Perl for Windows
  • ScintillaNET – original Scintilla source code editing control ported to .Net
  • Mono – developed to run on both on Windows and Linux – it’s Microsoft/Novell’s shot at Java
  • Phalanger – PHP that compiles on .Net – yes you heard me right – the stated aim of the Project was to ensure that the tool one-click converted PHP source into running IL assemblies – to the extent that “at least one popular PHP opensource project should get correctly converted to .Net and can be run with ASP.Net”. And, I tried it, it works!
  • Bambalam – convert PHP code into command line windows executables
  • Java2cpp – grab your Java source code and run a single build operation (one dos command) and your Java source code gets converted into C++ code – it has some limitations, but for most Java sources it should be OK. YMMV.
  • ScriptSharp – write code in C# and it compiles to make cross-browser Javascript source code which you can then include those in your web sites
  • Visual Webgui – similar to ScriptSharp, but the maker is a large organisation unlike Scriptsharp, which is a one-man effort, but he’s a big man – M$ product manager or something
  • Quercus – PHP source compiles to Java bytecode – so if you are not happy learning Java and you want its stability, this is for you.
    NOTE: Mashups like these could present problems while debugging. I’ve yet to try out these myself. But I think if their makers have put so much effort into these things, they’ve likely got a set of tools for all the issues that such cross-compilation can produce.
  • IKVM.Net – allows Java to run on .Net.
  • I’ve been reading all sorts of ads from apparently big companies like Grasshopper for example, saying that interop is the future – one server running multiple interacting platforms – for example, your awesome J2EE app that you coded last year will run on JBoss, your supercool ASP.Net Web app will run on IIS and these two will run on the same server machine, but using some kind of bridge technology (like Grasshopper) they will interact as well.
  • Enter Linux-migration (due to M$’s Vista blunders) and you will have more demand for porting. (OK, I know I’m sounding like those hyped-up marketing-types (which I’m farthest from, btw ) but these things could actually help someone looking for ideas to make new programs.
  • Then of course, there are virtual machines – M$ Virtual PC, VMWare, Parallels, and Linux related emulators like Qemu, Bochs, and Wine (winehq)
  • Now, go a little further and add Mozilla-based XUL to the whole picture and you get a superb bowlful of technology spaghetti. See “Mozilla Amazon Browser”.
  • Still not dizzy? Then, take this: MozzIE – “It is a free plugin for Internet Explorer which adds the capability to display XHTML, CSS 2.1, XForms, SVG and MathML to the user”
  • When you’ve finished cursing or admiring me, or, suspecting my sanity, go to NanoHttp Server (web server written in PHP) and PriadoBlender (does the same as Bambalam above)
  • We still haven’t come to Javascript/AJAX frameworks and cool web2.0 apps!!
    And Flash seems to be about to make a smashing return in the form of Apollo and Flex. There is also FlashDevelop which is *very* good, IMO.

    Legal Note: It’s essential that you respect the licenses of programs you intend to port. After all, it just attribution. Most of the above (not all) come with permissive MIT/X11/Apache/BSD/PHP licenses, which allow you to use them in your commercial applications without being bound by the GPL code revealing complusion, but subject to correct attribution. Respecting that is important and it differentiates a citizen ( or netizen, in this case) from a thief. Imagine the months of work the original programmer put in and then made it liberally licensed.



    %d bloggers like this: