Archive for the ‘IT integration’ Category
Integrating Teamwork calendar with the iPhone
In theory, being Teamwork integrated with the iCal format, it has always been possible to sync it with the iPhone, just like with Outlook and Google calendars. But as often happens, things turn out to be more complex, in particular if one wants to get a not only working, but also a comfortable solution. So we added generation of “.ics” urls, and now on the beta of the forthcoming (next week) release, our internal iPhone fanatics have syched calendars with our internal Teamwork application, which of course is also exposed on the web, so that one can sync both on wireless intranet access and on the web.
So check out next week release, it will be a free upgrade as usual for all Teamwork 4 users; the online users will get it without any kind of effort
Thanks to Federico Soldani, a new Teamwork employee, and some of our customers, for pushing for such integration.
The quoted products may be registered trademarks of their producers.
Third party integrations speeding up
There is a increasing trend in getting more and more contributions from third parties to Teamwork – which is great news for us! Just received a Polish translations, will soon release a Teamwork plug-in for Thunderbird, and there are at least two software houses that will use Teamwork as a module in a more extended application suite. We are building a dedicated section on the web site for contributors, you can get previews on Pietro’s twitter stream here
Teamwork, MySQL and UTF-8

Teamwork is MySQL partner.
This is a technical post about Teamwork and its databases.
Many Teamwork customers use MySQL as database for their data; Teamwork as web application supports UTF-8, which means that you can insert data in practically any language; but of course to save such data you need support along the “entire trip”, so your database must support UTF-8 data too. Now unfortunately MySQL default encoding is not UTF-8, but we found a way to work around that, which will be released with version 4.2: the Hibernate schema script generator will create UTF-8 encoding tables, as UTF-8 is supported also at table level (supported by MySQL 5), so it will work in all cases.
This is done by simply extending the Hibernate MySQL5InnoDBDialect with
@Override
public String getTableTypeString() {
return ” ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_general_ci”;
}
as suggested here.
Remember to use MySQL 5 with referential integrity on and to end you JDBC url with “?useUnicode=true&characterEncoding=UTF-8″!
This is particularly important for our future Chinese customers, now that a Chinese translation is forthcoming.
Installing Teamwork via console

A Debian console.
This is a post for Linux-console lovers.
We have done a big effort to obtain a reliable and friendly graphical installer; but still we received several requests for detailed instructions for hand installations in a non graphical environment, as this is often where Teamwork gets installed when out of the evaluation phase. So we provide here complete instructions, taken from the installation guide.
Complete installation by hand
We assume that you have Java’s JDK 5 or 6 already installed, and also a Tomcat running. If you don’t, download and install those first.
We are also assuming that you are not deploying as an unpacked war, as the web app needs to write in its folders, so if you want to use a war, you must use a “unpacked” war.
1. Download and extract the archive version of Teamwork here (zip, gz, or rpm)
2. Take the folder Teamwork, it contains the folders and files shown in the picture.

This is the web app you need to install (you may remove .install4j).
3. Copy the web application inside your Tomcat webapps, in a folder with the name you please, say “teamwork”. You must ensure that it is using JDK 5 or 6.
4. In WEB-INF/config.properties you must write the JDBC connection data and other configurations, an example config for MySQL:

5. In WEB-INF you must also create a file lic.properties file in which you paste the evaluation license, for example
# BEGIN TW4 ACTIVATION KEY – COPY FROM HERE ON
custCode=SAMPLE
expires=04/05/2009
licenses=10
enterprise=no
license=823CUM1C7F5FD29F55D3211448746KZ36235A1425E80452
# END ACTIVATION KEY – END COPY
The license can be generated any time here, by clicking on “Generate a free evaluation key”.
6. This done, you may launch the web app; if you did the deploy operations while Tomcat was running, you may need to restart the web app. If the JDBC configuration is correct (this is most frequent mistake), the application will start, create the tables and insert sample data; you may now browse to the web app and you’ll be asked for login.
7. DEBUG If the web application “started too soon”, and say the insertion of sample data failed, open
Commons/settings/global.properties
remove the lines
SETUP_DB_UPDATE_DONE=yes
SETUP_NOTIFIED_ADMIN_WIZARDS=yes
And restart the web app.
8. Remember to set the repository, file storage, indexing etc . paths in the admin pages.
If you are deploying under JBoss, take care of the Hibernate (including Annotations and Search) version you are using, Teamwork provides its own, and it must be the same.
How Teamwork is made with Teamwork
The guys developing Teamwork are indeed using Teamwork for managing work. How we do that? Well, even in our small group, people have different functions and habits. We have two areas, production and accounting; inside prodution, there are people with different roles, and consequently see and use different data, to which the interface adapts seamlessly. We extensively use the dashboard customization functionalities so that everybody sees what they want.

- Some issues editable in place.
Teamwork 4 has won the long-standing war with paper. We have to confess that for some short-lived issues, some of us (including me) were still using post-its and notes on paper as an integration of issues. But Teamwork 4 won: the Ajax issue multi-editor is just too practical. There is no more paper on our desks; add Balsamiq mockups for replacing paper interface drafts, and the coverage is complete.
We cross post issues and bugs, which we get notified thanks to the subscription engine.

- Worklog reads from Twitter and Subversion
Teamwork worklogs are inserted with help from Twitter and Subversion logs, which Teamwork 4 does natively.
A section which is widely used is the agenda integrated with meetings, which as it synchronizes with our e-mail clients, is quite practical.
We use boards too, for example to collect notes for our technical meetings. Careful collection of worklogs allows to monitor costs, and also comparison between releases, cost per team etc. .
For authentication, our Teamwork is integrated with our Active Directory. As we are “advanced users”
, we have added to the scheduled jobs a “SiteAliveTester” job which tests that our servers are up and sends e-mail alerts.

- Strategic company news.
We have added some parts to the defaults, such as RSS reader, user voice reader.
Of course we also use news, for example to publish scores of our table-tennis tournament!
Teamwork and multilinguism

Teamwork 4 interface in German
Teamwork’s translation in German is almost ready, thanks to Koelnticket, in particular Andreas Nebinger (thank you Andreas!). Let’s see a bit in detail how we dealt in general with internationalization issues in Teamwork; actually this set of problems will have to be met by any sufficiently powerful web application.
There are many senses in which an application might be said to “support multi-languages”, or be “internationalized”:
Interface. Labels and messages of the web interface are available in several languages. Teamwork contains a label editor, where you can create a new language and also modify existing labels. Teamwork is used in 43 countries, almost all using it in English; actually some project managers like to have it English as teams are made from people from different countries, so it encourages communication.

But as usual
Teamwork does more: it lets you change labels on the fly in the web interface, saving them on the database so that you don’t lose customizations on application update.

Data. Data inserted in the application can be inserted in any language. We have been careful about the encoding (always a problem in web applications), so that the full spectrum of UTF-8 supported languages is included, which means also Greek, Cyrillic, Arabic, Japanese… . This also assumes that the database on which Teamwork is running supports Unicode or UTF-8 data. THen you have the further problem that labels and data you have on the interface may need to be channeled on a different mean, e.g. exported in an Excel file, or in a PDF, and there again you may be plagued by encoding problems.
Search. (This is often forgotten) Full-text search requires multi-language stemming of contents: this is from our technical contribution, which is in the context of Hibernate (an object/relational tool) and Lucene (an indexing engine):
You need to know the language in which a document is written, in order to correctly index it; once you know the language, you can instantiate say the Snowball analyzer with the correct language stemmer. To make a practical system, you will need to guess the documents language from its content. We have found a very simple and effective solution [...].
In order to make a content “findable” also when searching from a language (say, German) a document in another language (say, English), we actually double indexed the content field, once with the nowball analyzer and once with the simple StopAnalyzer; so that if you are searching from German and you search “Telefunken”, which stemmed would be searched as “Telefunk”, will find also “Telefunken” in English documents ? .
See http://twproject.blogspot.com/2007/11/using-hibernate-search-with-complex.html and http://www.hibernate.org/432.html
So Teamwork’s full text search is language-aware. Actually search in Teamwork is much smarter than that, but this is a topic for another post.
Documentation. Documentation may be provided in several languages. In Teamwork’s case, as it is by now in 99% of the web applications, it is provided only in English. We also believe that it will be the “power user” of the application that will mostly need documentation, and we assume that she/he can read English.
So how can we evaluate Teamwork w.r.t. all these aspects?
| Feature | How it is dealt with in Teamwork |
| Interface | Available in English and Italian. German is almost ready, Spanish is planned. |
| Data | Data in all languages is supported (UTF-8 supported). |
| Search | Stemming is available for all Lucene analyzers: Teamwork provides out of the box English, Spanish, French, German, Portuguese, Italian, Swedish, Danish, Dutch, Norwegian, Russian, Finnish, but it is easy to include other Lucene extensions. |
| Documentation | This is provided only in English. |
A F.A.Q. on Teamwork’s site talks about changing labels: http://www.twproject.com/configurationFaq.page#conf5
Comments (4)




