Bugzilla:Languages

From MozillaWiki
Jump to navigation Jump to search

This is a basic overview of various possible languages that we could move to, for Bugzilla.

Of all of the ones I (mkanat) have used, I'm most in favor of Ruby, because I think it'd be the fastest to write code in and it seems well-designed for writing large applications.

In addition to looking at the languages themselves, we should also investigate various tookits available for the languages that would make our development easier. For example, Python has Pylons and lots of other frameworks, and Ruby has Rails and Nitro. If one particular language has a framework that would be perfect for us, that could swing the decision.

Perl

Pros

  • Lots of modules available in CPAN.
  • Relatively fast.
  • mod_perl is very mature and extremely fast.

Cons

See The Problems of Perl.

Perl6

Pros

  • Implements many features we'd like to have that Perl5 doesn't have.

Cons

  • Essentially vaporware. There is an interpreter written for it, but it's in Haskell and it's not shipped by any distro.

Python

Pros

  • Extremely popular.
  • Stable.
  • Actively developed.
  • Lots of modules.

Cons

  • Not having curly-braces on "if" statements and other blocks makes long blocks hard to read.
  • Poor Unicode handling--strings are ASCII by default, and are Unicode only if you prepend them with u, like u"string".
  • No standard way of installing modules like CPAN.
  • Python has no equivalent to Perl's "taint" mode.

Ruby

Pros

  • Extremely modern language, lots of great features built-in to the language.
  • RubyGems, a CPAN-like method of installing modules.
  • Becoming more and more popular.
  • Very easy to learn, development is very natural and very fast.
  • Very actively developed.
  • Has a taint mode, just like Perl.

Cons

  • Not yet as well-known as Python.
  • Good Unicode handling isn't coming out until 1.9, but that's the next release.

Java

Pros

  • Excellent "design by contract" features (compared to the other languages in this listing).
  • Very stable.
  • Fast.
  • Allows for easy web application installation.

Cons

  • Much slower to write in than scripting languages.
  • The Java Classpath is not FOSS.
  • Nothing like CPAN's client-side module installer.

C#

I hear lots of good things about C#, but I've never actually worked with it. Maybe somebody else could fill this in? I'm be slightly wary of it, since the Windows .NET stack will probably always be ahead of Mono (the *nix .NET stack), and thus the language is essentially controlled by Microsoft.