4 ms·
> This is why you see 'everyone' build chat from ejabberd. Erlang makes code for this kind of service fairly simple, and hotloading means you can fix bugs witho
by takeda 3y ago
> This is why you see 'everyone' build chat from ejabberd. Erlang makes code for this kind of service fairly simple, and hotloading means you can fix bugs without kicking everyone off to restart.
Sadly in practice I saw people avoid hotloading. I saw this behavior with Riak data store, in my company's product and also ejabberd in FreeBSD ports (this one is especially annoying as the port demands uninstalling the package before it even starts building it[1] which is even worse experience than with alternatives). Why almost everyone (from my experience) is doing this?
[1] https://github.com/freebsd/freebsd-ports/blob/9d74858de3b5e458c52662107d2294a6f92100e9/net-im/ejabberd/Makefile#L158-L164 https://github.com/freebsd/freebsd-ports/blob/9d74858de3b5e4...
- toast0 3y agoWell, hotloading is very powerful, and can really mess things up in a hurry. You've got to plan for it. I wouldn't expect ejabberd to be built to hotload between releases (unless the docs say you can) But for hotfixes, it's great. And for code you write, it's often possible to structure even large changes for hotloading. A lot of people have built deployment around the limitations of other technology, and it's a hard thing to get them to hotload. But if you can, it really reduces the cycle time between when you detect an issue and when its fixed and deployed. Short cycles are great because for many issues you can pick the issue up, fix it, deploy it, verify the fix, and be done without having to switch tasks. Additionally, a short cycle reduces the duration of impact for simple bugs, which means you need to spend less effort on finding them before deploy (probably not no effort though). Complex bugs that persist broken state are still difficult to remedy, so you should still spend significant effort on finding those before deployment. (Also, I'm really not sure why having the port installed would interfere with building a new one, but I've always built Erlang with make and erlc which is maybe a bit unusual)
- takeda 3y ago> (Also, I'm really not sure why having the port installed would interfere with building a new one, but I've always built Erlang with make and erlc which is maybe a bit unusual) It looks like this happens because the ejabberd is installed into system's erlang lib directory and that impacts the build process. I'm wondering why author of the port opted to force un-installation instead of just install it in another directory? Is there a benefit of doing it this way? I was thinking to suggest that, but I don't know enough about erlang if that even makes sense.