Thursday, March 13, 2014

Upgrading from Anope 1.8 to Anope 2.0

Those who have been spending some time on the IRC network over the past few weeks have noticed that a lot more recently I was thinking about upgrading services on the network to services 2.o just a little ahead of schedule. The reason why the move was a little ahead of schedule was because Anope 2.0 actually isn't released yet. It it is still in its release candidate stages.

Upgrading from Anope 1.8

If you are a network owner and used Anope 1.8 on your network (like mine, but with some modifications), upgrading to Anope 2.o will carry almost no visual change. A lot of the changes have been under the hood.

One of the most major changes when moving from Anope 1.8 to 2.0 is how authentication is handled. Anope 2.0 uses an accounts based system, more in line with competitors like Atheme. What this means is that Anope 2.0 will treat your "display" nick as your account name. This means that you can now authenticate to your account by /msg NickServ identify <account name> <pass>. SASL support has also been added; you can refer to modules.conf for information on configuring SASL for your network.

A major recap of the changes can be found from Anope's website.

In my opinion, upgrading from Anope 1.8 to 2.0 is a very quick and easy process. If you follow their upgrade instructions, you should be fine. One bummer that you will encounter while upgrading is that you can't use your old configuration file. The configuration format has completely changed, and thus you must create new configuration files based on your old one, to preserve how services behaved before the upgrade.

One of the most important things I can say, though, is to back up your 1.8 databases to another location before upgrading. This makes sure that if something goes wrong, you have a backup in another location that you could continue using services with, in case the 2.0 transition goes haywire.

The second important thing is to check module compatibility. Since Anope 2.0 is not even released out, there has only been a few modules out that works with it, and almost all prior Anope 1.9.x (this was the dev build; the stable will be 2.0) modules will no longer work because of API changes. If your network has a module you want to have in 2.0, you have three options:

  1. Hire a developer to code you a module that works in 2.0
  2. Write a module yourself
  3. Wait for the original module author to make a public release for Anope 2.0
The third thing to check is data that is imported. Everyone that I know that used Anope 1.8 most likely used the default binary database format. While I personally have nothing against the database technology they used, what is really important is user data. Before you deploy a live update to your network, make a testnet and use a copy of your services database to work with, and check to make sure that settings and other data are transferred correctly. While I personally did this, I did forget to check one thing: channel entry messages. I upgraded services the day before Adam made a commit to add importing of ChanServ entry messages from Anope 1.8. This was a real bummer, but with help from logs I had in a few channels I was able to restore most of them. To be honest, not many users even noticed this.

One thing that currently you will in fact lose is NickServ AJOIN settings. In Anope 1.8, ns_ajoin was actually a very popular third party module, developed by the amazing Viper (I personally call him the Anope module god for the work he has done). In Anope 2.0, ns_ajoin was actually written into Anope by the Anope team, and they did not create a way to import ajoin's. I'll ask the Anope team to see if they will give this very popular third party module some love, or I'll ask Viper if he plans to make an importer. NickServ Ajoin on Anope 2.0 is also not as configurable. You cannot set default channels to add to ajoin on register, or have the ability to join unregistered users to certain channels like you could with the ns_ajoin module. These are bummers, but in reality their functionally isn't crucial.

Otherwise, upgrading from Anope 1.8 to Anope 2.0 is rather nice.

End of an era

With the upgrade from Anope 1.8 to 2.0, some users might or might not notice this but the upgrade marks an end of an era in Anope history. The Anope 1.x branch has existed for over a decade, and only a few years on github. When Anope 2.0 is released, 1.8 will receive ~1 year of support after the 2.0 release date, which can be extended if networks aren't making a speedy enough transition.

While it can be saddening to let 1.8 go, the benefits of 2.0 definitely will make you feel great that you upgraded. I certainly do.