Which language to use for a groupware platform?

Hi,

I have not yet had any experience developing desktop software, so I'm having some trouble guiding an Open Source groupware project in the direction of a particular language and toolkit which would suit the project. This project, a groupware platform called Mira (http://wolphination.com/linux/category/software/mira/), will be designed to be an integrated desktop collaboration solution. To get a better idea of how Mira will work (or the plans we currently have for it), please read the introductory post (http://wolphination.com/linux/2007/02/13/proposing-an-open-source-groove-alternative/) and other posts (http://wolphination.com/linux/category/software/mira/) about it.

We're currently considering the following options:

C++ with wxWidgets (http://www.wxwidgets.org/)
Python with wxPython (http://wxpython.org/)
C#/Mono (http://www.mono-project.com/Main_Page)
Java

I was originally going to go for one of the bottom three combinations, because they allow for the most rapid development and are cross-platform, so require very little extra work (if any) to use on different Operating Systems or architectures. However, I recognise that there's a shortage of programming who specialise in these languages and toolkits, so I'm now considering the first option. One of the questions I'd like to ask is how cross-platform is C++ with wxWidgets? If this groupware platform's client application were developed using this combination, how much extra work would be required to develop it for Linux, Windows and OS X simultaneously? That, I believe, is the key factor: ease and speed of development.

Using a high-level language such as Java or C# would shorten development times because of the nature of these languages and because of some useful extras, such as garbage collection. Using the platform on alternative OSs would be, in both C#'s and Java's cases, a non-issue: as long as there were a JVM or Mono for that OS, the application would run (as far as I am aware).

However, there is probably a greater number of good C++ developers out there, so it might be beneficial to choose C++ (as long as there would not be too much of a problem with cross-compatibility). The advantages of using wxWidgets/wxPython and Mono is that the OS' or environment's own window borders and such may be drawn instead of having to implement a custom interface which would not allow the application to blend in with a user's desktop (can the same be done with Java?).

In summary, my question is: which programming language and toolkit should I put forward to develop this platform in? Which combination is the most complete in terms of providing the backends required for this platform's features, and would allow the developers to work most efficiently? Open Source IDE suggestions for that language/toolkit would be appreciated as well :)

Thanks in advance.
[2990 byte] By [J_K9] at [2007-11-20 5:45:23]
# 1 Re: Which language to use for a groupware platform?
I think you have pretty much answered your own questions.

I would recommend using C++ because of it wide usage in programming. You will have better resources as well as a more efficient language.

Java is slow and has greater limitations over it than the other three. I would do my best to steer clear of Java.

Just my two cents.
PeejAvery at 2007-11-9 12:18:56 >
# 2 Re: Which language to use for a groupware platform?
Thank you, PeejAvery, for your opinion. Would a lot of work be required to develop this app for three different OSs simultaneously, or is C++ almost entirely cross-platform in this respect (despite the code having to be compiled differently for each OS)?

By the way, if anyone else would like to recommend one of those combinations or another, please do - I would extremely appreciate any suggestions as to which combination of programming language and comprehensive toolkit would be best for this project :)
J_K9 at 2007-11-9 12:19:55 >
# 3 Re: Which language to use for a groupware platform?
Would a lot of work be required to develop this app for three different OSs simultaneously, or is C++ almost entirely cross-platform in this respect (despite the code having to be compiled differently for each OS)?
C++ is a Windows, Mac, and Linux programming language.
PeejAvery at 2007-11-9 12:20:59 >
# 4 Re: Which language to use for a groupware platform?
Oh - I was under the impression that minor modifications were required to run a Linux C++ application on Windows or another OS if the toolkit it used were cross-platform.

So you would recommend C++ with a cross-platform toolkit, then? Would wxWidgets be a good choice?

Thanks again.
J_K9 at 2007-11-9 12:21:53 >