The Design of Software (CLOSED)

A public forum for discussing the design of software, from the user interface to the code architecture. Now closed.

The "Design of Software" discussion group has been merged with the main Joel on Software discussion group.

The archives will remain online indefinitely.

Need an advice on selecting the right tool for a project

I have a great idea for even greater product. This product is supposed to contain a server side (including a database), a web interface and client side program. Both the server side and the client side need to be cross-platform (win, linux, mac-os. Other unixes are optional). This is an absolute requirement. The client will pay on a per-user basis. This design is quite similar to that of FogBugz, except that it will work with completely different type of data in a completely different field. For the client side, would you suggest java or one of the several cross-platform GUI libraries (QT, wxwidgets)? (I have much more experience with C++ than with java)
On the server side: since I need to have a control over the number of users, need to use a compiled program, thus making perl and PHP unusable. Should I write the server side in C/C++ and compile for every platform in use, or are there better ways to complete this task?

Thank you
Monday, April 23, 2007

Unless you have someone with a cheque book open, waiting for you to tell them the amount to pay for the project, to write it for all those platforms, I would not even consider it.

Write it for one platform, using the simplest / quickest development tool you know / are comfortable with, then get some customers and go from there.

You're far better off having 4 customers on 1 platform than 1 customer on one of each of 4 platforms, or 1 customer but 4 platforms developed. Do some research on what the term "market" means for business, from a book like "Crossing the Chasm".

Honestly. If you think you can successfully develop a new project, from scratch, client and server, across all those platforms, before the return of baby jebus, you need to think again.

Each new platform is going to add at least an N to your initial and ongoing development, maintenance, marketing and support costs (time, effort and money).

Aaron DC (Email removed due to spam)
Monday, April 23, 2007
"I have a great idea for even greater product. "

When I read this, I thought the next sentence was going to be one of the following:

1. ...A place where people can keep their INFO on the WEB!!!

2. ...A place where people can keep their appointments on the WEB!!! With a calendar!!!

3. ...A place where people can send messages to their FRIENDS!!! On the WEB!!!

"need to be cross-platform"

Everyone hates Java, but its platform independence is pretty good. I develop on Windows, deploy on Linux, and never really have any troubles aside from things related to "C:/".
Monday, April 23, 2007
If cross-platform at both ends is a hard requirement, I'd go with Java.
Mike S Send private email
Monday, April 23, 2007
At first glance, I'd pick Java too. However...

"...need to use a compiled program..."

Are you aware that both Java and C++ programs can be decompiled? Security through obsfucation is a poor reason to pick one language over another. Depending on what you actually need to do, interpreted languages such as Perl, PHP, Python and Ruby can perform nearly as fast (the difference is neglible) and be much easier to code on, due to caching and built in support for "web technologies".

As Aaron D.C. points out, right now your immediate priority is to get a working version out there and some paying customers. Support costs will be lower and fixing bugs will be easier if you focus on one platiform, and a language that you know well first. Once you have something solid and stable and profitable, then branch out.

In the short run, I'd do C++ for both and WinForms for the client side (obviously on Windows). If you actually have time to learn a lot of stuff, I'd pick Java. If you're somewhere in the middle - you have a few months but not like a full year - I'd give serious thought to Python.
Monday, April 23, 2007
TheDavid: I know about decompilation. I just want a minimum measure to ensure licensing scheme (which exists on the server side). Nothing stops a user from editing a perl (or PHP) script and override licensing policy (perl obfuscators do not count). I think that python solves this problem (doesn't it). I will just need to make sure every user has the right version of python installed on their servers (which is a hell).

Regarding cross-platform issue: I'm ready to compromise to Linux/Windows (without mac-os).
Monday, April 23, 2007
I wrote an initial response, then realized I was fighting the wrong battle.  :)

Support for ensuring license compliance is definitely a valid reason for picking certain libraries over others, and indirectly, which language you ultimately develop in. If you're determined to have the software police itself, a poorly implemented scheme can hurt you and I would say the most important criteria is to pick the language you're most comfortable with.

This includes being able to profile and debug the application, and find obscure errors in either your code, the library routines and/or the downstream DLLs and libs.

Go with C/C++ as that's what you're the most familiar with.
Monday, April 23, 2007

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics
Powered by FogBugz