Welcome to the jobsworth project management, support ticketing and CRM system. This software is licensed under the AGPLv3.
Jobsworth can be used for helpdesk support ticketing, customer liasion, resource management (eg. systems and password tracking) and has a range of CRM type functionality. Plan your projects, see your schedule, know if you’re slipping behind and why. Time Tracking and extensive reports help you show your clients exactly what you’ve done and for how long.
-
no restrictions or limits
-
interactive gantt chart & scheduling
-
flexible reporting
-
tracks and indexes all changes
-
notifications via email, rss & ical
-
ldap integration
-
accounting/billing system integration
-
custom attributes
-
inbound and outbound email integration
-
sophisticated access control
-
services (SLA)
-
resources
-
much much more
Further project details can be seen at Ohloh.
The primary support is through the mailing list or if you have a bug report, create an issue in the tracker. If you want to write up details of a new feature you’d like to see, please use the wiki.
Code contributions are welcome to this project and the best way to go about it is to fork the git repository:
https://github.com/ari/jobsworth
Naturally, code contributions are much more valuable if they come with a good set of tests. Jobsworth already has very good test coverage and we intend to keep it that way. If you want your fork accepted by the main branch you will need to release your changes under both the AGPLv3 and the MIT licenses. The final jobsworth product is released only under the AGPLv3. This allows me to provide a commercial hosted solution to help fund the development efforts and keep the code open source.
If you aren’t a developer you can still contribute. Look at the wiki and help flesh out some new ideas, develop user interface concepts or sketch out functionality. User interface design is just as hard as coding, often harder and more important.
You need to be running some type of Unix: OSX, Linux, Solaris, BSD. Windows will probably not work. You will also need a database. MySQL is recommended. Postgresql may work. You need to hava Java installed.
Install some basic packages for your operating system.
Do this as root:
portmaster graphics/ImageMagick java/openjdk6
First install the Macports system from www.macports.org. Then:
sudo port install ImageMagick mysql-server
Do this as root:
apt-get update apt-get upgrade apt-get install openjdk-6-jre mysql-server apache2 git-core imagemagick gcc libc6-dev g++ zip build-essential bison openssl libreadline6 libreadline6-dev curl zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev autoconf libcurl4-openssl-dev apache2-prefork-dev libcurl4-openssl-dev libaprutil1-dev libapr1-dev libxslt-dev libxml2-dev
Still as root, do this:
curl -L get.rvm.io | bash -s stable source ~/.rvm/scripts/rvm rvm package install readline rvm package install iconv rvm install 1.9.3 --with-iconv-dir=$HOME/.rvm/us rvm --default use 1.9.3 rvm gem install bundler
If you get stuck installing Ruby 1.9, consult the instructions here: rvm.io/rvm/install/
Install Phusion Passenger. You can instead use Mongrel, but it tends to be a little easier to set up with Phusion.
rvm gem install passenger rvm exec passenger-install-apache2-module
And follow the instructions you’ll be given about how to install the relevant config for Apache httpd.
Your Apache httpd virtual host DocumentRoot should point to the public directory in the installation directory.
<VirtualHost *:80> ServerName jobsworth.example.com.au RailsEnv production PassengerHighPerformance on DocumentRoot /usr/local/www/jobsworth/public CustomLog /var/log/www/myserver.example.com.au-access_log combined ErrorLog /var/log/www/myserver.example.com.au-access_log </VirtualHost>
You’ll need to allow access to the folder you specify if isn’t already inside your global httpd DocumentRoot. And MultiViews is bad for a Rails application.
<Directory /usr/local/www/jobsworth/public> AllowOverride All Options -MultiViews Order allow,deny Allow from all </Directory>
Naturally adjust the paths to suit your own environment.
The easiest way to get the source and easily update it from time to time is with git. You’ll need to install that on your machine and then run:
git clone git://github.com/ari/jobsworth.git /usr/local/www/jobsworth
It is very important that you run this command as the same user your Apache httpd server runs as. This is often the “www” user. You will want to put the source somewhere sensible depending on your operating system. On OSX that might be ~/Sites/jobsworth and on FreeBSD /usr/local/www/jobsworth. We’ll use the FreeBSD path in these instructions.
By default you are following the ‘master’ branch. Instead you might want to follow “dev” if you are working on the development of jobsworth. This branch will be frequently unstable and you should know quite a bit about Rails and jobsworth before you follow this one.
git checkout -b origin/dev
Or you may wish to just stick with a particular release which will remain static, such as
git checkout -b origin/v1.2
To go back to the ‘master’ branch which is the best for most people
git checkout master
Then in order to install all the gems we need. Again as the user your Apache httpd server runs as:
cd /usr/local/www/jobsworth rvm exec bundle install
If your install fails at nokogiri
Sometimes the install will fail (during the bundle install) at nokogiri, stating that you need to install the development tools. This is a false error, there is sometimes a problem with ruby 1.9.2 and rvm. To try and fix this, as root again, type the following:
rvm --force install 1.9.2 [This will reinstall the ruby intrepertor, just in case something got corrupted] gem install bundle [This will reinstall bundle using the default gem command, this usually fixes the error]
After you have done the above, login as your Apache HTTPD user again and retry the rvm exec bundle install
If you have trouble on OSX with the mysql gem (this seems to be an issue on 10.5), then try this
sudo env ARCHFLAGS="-arch i386" gem install mysql2 -- --with-mysql-include=/opt/local/include/mysql5 --with-mysql-lib=/opt/local/lib/mysql5 --with-mysql-config=/opt/local/lib/mysql5/bin/mysql_config
cp config/database.example.yml config/database.yml
Then edit this file and put in all the relevant details for your database. You will also want to create your database with a command something like this
CREATE DATABASE jobsworth DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; GRANT ALL ON jobsworth.* TO 'user'@'hostname' IDENTIFIED BY 'password'
Naturally, replace the database name, user name, hostname and password with your own choices.
Change directory into the top of the jobsworth installation folder and then run the set up script and the update script.
bundle exec lib/setup.rb
./update.sh
Jobsworth will send emails as tasks are updated. In order for this to work correctly, you need to edit the file config/environment.local.rb. Any SMTP server will do: it could be installed on the local host, on another server or at your ISP. Just make sure it is set to allow relaying from jobsworth to any external address and there isn’t a spam filter which drops some emails.
When jobsworth sends outgoing emails for task updates, they will have a reply address which looks like this:
task-1234@acme.domain.com.au
If a user hits reply to that email, you want it to go back and be appended to the task comments. It isn’t hard, but you’ll need a mail server you have some control over in order to get the magic to work. Firstly, let’s look at that email address. To the left of the @ we have a designator showing which task this email is relevant to. On the right ‘acme’ represents the name of the company you set up when you ran the setup.rb script and first installed jobsworth. And the final ‘domain.com.au’ part is defined in the environment.local.rb file in your config folder.
You need to set up your email software to pass all incoming emails for *@acme.domain.com.au to a special script. That ‘*’ means a wildcard: that is, any username at that hostname will be forwarded.
For example to configure sendmail, add an entry to /etc/mail/local-host-names for your hostname:
acme.domain.com.au
Add an entry to /etc/mail/aliases to create an alias that will hand off emails to the mailman script
jobsworth: "|/usr/local/www/jobsworth/script/rails runner -e production 'Mailman.receive(STDIN.read)'"
Add an entry to /etc/mail/virtusertable to redirect all emails to your domain to the above alias
@domain.com jobsworth
run “make; make restart” in /etc/mail
Communigate Pro puts it own headers on the top of each email which need to be stripped. A little script like this is dropped into /var/Communigate/Scripts and then added to the ‘helpers’ configuration with in the GUI. You’ll need a rule inside Communigate to pass all email to the appropriate hostname to this script.
#!/bin/sh RUBY=/usr/local/bin/ruby MAILSCRIPT="/usr/local/www/jobsworth/script/rails runner" # Strip the first 6 lines which are specific to Communigate /usr/bin/tail -n +7 $2 | ${RUBY} -W0 ${MAILSCRIPT} -e production 'Mailman.receive(STDIN.read)' > /dev/null exit 0;
This gets the mail sending daemon working and ensures everything is clean up and up to date.
sh update.sh
sh update.sh
- Project page
- Mailing list
Copyright © 2008-2012 Aristedes Maniatis. The trademark and any branding associated with the name jobsworth are not released under any license and may not be used without permission.
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License version 3 as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See LICENSE file for more details.