- Centralised authentication -- log into every application with one username and password rather than having a different password for each application.
- Everything in the cloud -- so that people can work from office, home, or wherever they happen to be around the world (as long as they can get online).
- git based source code control.
- Ticketing system.
- Real time chat.
setting that up here and it works pretty well. I also added a self service password manager and a web based administration program to allow me to easily create new users.
Of course I could have used Active Directory but that costs money and requires a Windows server, which I don't think is such a good idea on the cloud. OpenLDAP is another option but I currently think that 389 Directory Server has better features for the money (which is of course $0 as it is free software).
Gitlab has most of the basic features of github including the usual git features such as branching & merging, as well as teams & team permissions, code reviews, etc. Also deploying our own private gitlab server means we can tie authentication into LDAP.
Redmine needs quite a few plugins to make it more usable on agile projects, and so I installed this list (in alphabetical order):
- Clipboard image paste -- allows us to upload images via copy-and-paste from the clipboard, for non-technical users.
- Redmine Agile plugin (Light version) from redminecrm.com
- Redmine CKEditor plugin -- for projects that want to use a WYSIWYG editor rather than the wiki style editing that comes by default with Redmine.
- Redmine per project formatting plugin -- definitely necessary, because not every project wants to use WYSIWYG formatting.
- Redmine Rocket.chat -- for rocket.chat integration. This allows us to have "feed" channels in rocket.chat for each project where ticket updates can be announced, rather than having to have everyone listen in via email.
- Redmine Tagging Plugin -- although the project manager who asked for this plugin has never used it, except to repeatedly ask me to install it (even though it's already installed).
- Redmine User-Specific Theme Plugin -- allowed me to install a number of Redmine themes and allow users to select their own. Project managers have a weird idea that themes allow extra functionality (they don't, they just change the look and feel such as colours and fonts) so they often ask for weird themes to give them better access to features (apparently some features can't be accessed unless they are in exactly the correct colour, who knew), whereas developers usually just want a plain theme where they can see the tickets that are assigned to them.
This application and the desktop and mobile apps that go with it are not without their bugs but they work well enough for us.
There were some issues with LDAP integration -- in particular it seems to be set up mostly for AD integration. 389 DS doesn't make use of the displayName attribute, and out of the box the LDAP integration in ownCloud required that to be able to find the users. A bit of fiddling with the advanced and expert settings had that fixed, including having to restart ownCloud a few times.
Again I get complaints from a certain project manager saying that this is too hard for him and why can't he email his 120MB project dashboard files to everyone on the project every day? I try to ignore that sort of thing although I'm wondering whether it would not just be a significant improvement to replace every project manager in the software industry with a kanban board, or a to-do list.
Email ServerWe don't have one of those!
Seriously though, I have no idea why anyone would want to run their own mail server any more. Gmail is perfectly OK for this sort of thing, and if you don't trust google then try one of the more boutique providers such as 25mail.st. If I was going to set up a team email server then I would probably use Zimbra but it's a headache to set up and maintain and I would rather not have that amount of extra work on my plate.
Email communication is inherently problematic for a bunch of reasons (including security) and I try to discourage it amongst my development teams.