We have spoiled you with many new fea­tures in recent weeks, but I sus­pect that today’s announce­ment is like­ly to be the hit… For a few days now, new shared accounts, VPS and ded­i­cat­ed servers are run­ning on our brand new soft­ware infra­struc­ture. What does it bring us? Let’s find it out.

(Much) more recent versions

Our new infra­struc­ture runs under the lat­est ver­sion of Debian (Jessie), which brings an update of all soft­ware and libraries avail­able, from git or Vim to Apache or Java. Software and lan­guages ​​have also been added, such as Go or R.

But the heart of the change is Python and Ruby: we have evolved our pack­age man­age­ment to no longer depend on the ver­sions pro­posed by Debian, which allows us to offer:

  • For Python, from ver­sion 3.6 to 3.3 and 2.7 to 2.4.
  • For Ruby, from ver­sion 2.4 to 1.8.7.
  • For PHP, noth­ing changes: we were already offer­ing the lat­est ver­sion (7.1), and we keep all the ver­sions since 5.2, and even 4.4 for the (slight­ly) late­com­ers.

Simplified package installation

Whether for Python or Ruby, the instal­la­tion of pack­ages (via pip or gem) required some efforts, min­i­mal but some­times con­fus­ing for the least expe­ri­enced. It was some­times nec­es­sary to spec­i­fy an option or define an envi­ron­ment vari­able, or even cre­ate a file (.bash_profile) for new com­mands to be exe­cut­ed direct­ly.

Now pip install and gem install work direct­ly with­out any con­fig­u­ra­tion. Even bet­ter: you will not even need to add any path for your appli­ca­tions to find libraries: it is auto­mat­ic.

We also thought of PHP and its PECL exten­sions: indi­cate in the com­mand ad_install_pecl (a home-made script) the name of the PECL exten­sion you want to install, it will deal with the download/configure/compile steps: all you will have to wor­ry about is upload­ing the .so file from the sec­tion Environment > PHP in the always­da­ta admin­is­tra­tion.

A pristine environment

Again, this applies main­ly to Python and Ruby: so far, some libraries were installed glob­al­ly on our sys­tems, includ­ing Django and Ruby on Rails. This posed a num­ber of prob­lems, so we decid­ed to remove them. You will now start with a pris­tine envi­ron­ment, but we saw in the pre­vi­ous sec­tion that installing libraries was now triv­ial.

UWSGI-powered Python and Ruby sites

WSGI (Python) or Ruby Rack and Ruby on Rails sites were man­aged by Apache (via mod_wsgi or Passenger). They are now man­aged by uWSGI, an appli­ca­tion serv­er with sev­er­al advan­tages. This change is large­ly trans­par­ent for our cus­tomers, but new options (all option­al) appear in the con­fig­u­ra­tion form of a site:

  • Force a par­tic­u­lar ver­sion of Python or Ruby.
  • Environment vari­ables to be defined.
  • Working direc­to­ry.
  • For Python, the vir­tualenv to be used.
  • For Ruby, use the application’s Gemfile.

Soon, new languages

This new infra­struc­ture paves the way for sup­port­ing new lan­guages, in par­tic­u­lar for run­ning web appli­ca­tions. Node.js will def­i­nite­ly be the first, but oth­ers should fol­low very soon.

How to benefit?

Right now, by open­ing a new shared account, VPS or ded­i­cat­ed serv­er. Older cus­tomers will have to wait a lit­tle longer: we are prepar­ing the migra­tion phase that will start in the com­ing weeks, togeth­er with the migra­tion to our own hard­ware infra­struc­ture (for the old­est shared accounts). Every cus­tomer will be noti­fied by email before­hand and will have at their dis­pos­al:

  • A doc­u­men­ta­tion page list­ing major changes that may cause incom­pat­i­bil­i­ties.
  • Tools to par­tial­ly sim­u­late their account under the new infra­struc­ture.

The more adven­tur­ous, how­ev­er, can ask for a migra­tion via a sup­port tick­et now, but at their own risk and with­out the pos­si­bil­i­ty of going back. Needless to say, if you have any­thing in pro­duc­tion, go your way and wait for the offi­cial migra­tion. If you want thrills, jump in para­chute.

And after?

We designed this new infra­struc­ture to be much more flex­i­ble than the pre­vi­ous one, and no longer find our­selves in a sit­u­a­tion with old soft­ware. Although we can­not always offer the lat­est ver­sions as soon as they are released, for many rea­sons (lack of sta­bil­i­ty, block­ing bugs, unavail­able depen­den­cies), this new flex­i­bil­i­ty will allow us, for exam­ple, to reduce the wait for Python 3.7 and Ruby 2.5 to just a few days!