diff --git a/images/posts/phabulous3.png b/images/posts/phabulous3.png new file mode 100644 index 0000000000000000000000000000000000000000..400703fb4635f3f2640859f2a530f80df8d616fc Binary files /dev/null and b/images/posts/phabulous3.png differ diff --git a/posts/2017-02-05-phabulous-3.md b/posts/2017-02-05-phabulous-3.md new file mode 100644 index 0000000000000000000000000000000000000000..ea5a873b69c2ecf77685e490a0cc3a9b15a94d7d --- /dev/null +++ b/posts/2017-02-05-phabulous-3.md @@ -0,0 +1,67 @@ +--- +title: Phabulous 3 +date: Sun Mar 05 20:36:38 UTC 2017 +author: Eduardo Trujillo +uuid: 1b952356-47e2-40aa-a689-4604819d38ae +--- + +**Phabulous** is a server written in Go capable of receiving event +notifications from [Phabricator][phab], a suite of developer tools and forward +them to a [Slack][slack] community, while also providing additional +functionality through a bot interface. + + + +The project started while I was working at [Seller Labs][sl] and Phabricator +was their repository hosting tool. We mainly wanted to have better integration +with Slack, just like GitHub and Bitbucket had. + +Over time, Seller Labs migrated to GitHub and other tools, so development on +Phabulous slowed down a bit since I wasn't using it on a daily basis any more. + +However, this does not mean the project is dead, I've quietly been finding some +spare time to work on improving Phabulous, and it has received a few +contributions through pull requests. + +I recently landed a large refactor of the project which should make future +contribution and extensions easier. I've reorganized how the code is structured +to make better use of Go interfaces. + +In a perfect world, I would have enough time to write an extensive test suite +for the project, but given my limited time, I've only been able to cover +certain simple part of the project. The transition to interfaces has allowed me +to improve the coverage of the project since dependencies can now be easily +mocked. + +Another side effect that came naturally from this transition was the increased +modularity of the code. Want to implement a connector for a different chat +protocol? Or do you want to add a new command? Just implement the interfaces. + +While still technically in beta, I'm happy to say that Phabulous has reached +v3.0.0. With this new release, you can expect the following new features: + +- **Experimental support for IRC**: The bot is now able to connect and work + over IRC networks. Functionality is almost on-par with what is available on + Slack. +- **Modules:** Commands and functionality are now split into modules. You can + enable/disable them in the configuration file, as well as implementing your + own modules when forking the project. +- **Improved integration between Slack and Phabricator:** Phabricator added a + new authentication provider that allows you to sign in with your Slack + account. Phabulous makes use of this new integration with a new extension. + This extension allows the bot to lookup Slack account IDs over the Conduit + API, which means the bot can properly mention users on the chat by using + their Slack username rather than their Phabricator username. +- **Summon improvements:** The summon command can now expand project members if + a project is assigned as a reviewer of a revision. Additionally, the lookup + algorithm has been optimized to perform less requests on the Conduit API. +- Many other small fixes and improvements. + +You can get the latest version of the bot by using [Docker][1] or by +downloading the latest release on [GitHub][2]. + +[phab]: https://www.phacility.com +[sl]: https://sellerlabs.com +[slack]: https://slack.com +[1]: https://github.com/etcinit/phabulous/wiki/Docker +[2]: https://github.com/etcinit/phabulous/releases