I have a question about compatibility and co-integration of programming languages, databases, frameworks, libraries, different API and more (together referred as “items”). I have added a list of items that are planned to be used when building freelance platform/marketplaced, but I would like to know if I am missing anything, or if given combination could result in some compatibility issues.

I’ve done a research on mentioned items, but there is still a list of things that are not clear, so I would be grateful to get more information on the topic. Sorry, if I am bad with terminology, codenames, or missing any valuable points to get accurate answer – I will add any additional information, if asked for clarification in any part. Here is basic information to help answer the question:

We are looking to build a freelance platform with a need of:
- high level of modularity and scalability;
- autonomous development, which is to be processed by semi/fully-independent task groups;
- ability to integrate/import a lot of third-party APIs (ie. Facebook connect).
Let’s take oDesk for benchmarking (thus at least such functionality possibilities are needed), where some of them are:
- Business processes / work-flow (client – freelancer connection, client – consultant connection, etc.);
- User listing and detailed profiling (portfolios, completed projects, etc.);
- Semantic search;
- … (ie. at least full currently existing freelance platforms functionality).

I’ve developed a list of items that will be used in process of building the freelance platform, which is as follows:

Programming language (and framework): PHP (Zend) vs. Python (Django)
Decision criteria: modularity (ease of updating individual modules | existing library of modules | ease of creating new modules) | availability of highly skilled work-force | development time | standardization (ease of autonomous development).

Result was choosing Python v2.X/v3.X over PHP5.X. Decision was based on part of decision criteria (arguments for Python):
Possibility to update/edit certain module in most cases without a need to change other modules;
No huge hassle to create new modules from scratch (or at least does not take more time or resources as compared to the same result in php);
Approach of python developers seems to create more opportunities for autonomous development (person is developing in a way that others can develop their modules (or fragments of modules) separately, or take over the task quite easily from the point where this person ended – ie. updating).
Overall Python seems as a more long-run oriented solution, which does not create any big drawbacks in a short-run.

Database: MySQL vs. …:
Decision criteria: functionality | popularity | initial costs | overheads
MySQL was chosen over MsSQL, as it seems to have fully sufficient functionality (in free version) and can be upgraded to enterprise version when it will make financial sense in terms of bandwidth overheads over licensing fees.

Business processes: Apache ODE vs. Oracle BPEL vs. …:
Decision rules: python compatibility | modularity | customization | availability of highly skilled work-force
No clear decision here yet. Current front-runner seems to be Apache ODE, but adopting modules from one of python libraries, customizing them and creating new ones seems to be attractive option at the moment as well.

Front-end: HTML4/HTML5 + CSS2/CSS3 + AJAX;
In the beginning there will be web-based UI only, afterwards we will also include desktop and mobile UI.

I’ve listed items that are currently considered in order to develop the platform, please refer to any of the points in decision making if You think that they are flawed, and if I should consider more, or different decision criteria, which could influence which item to pick, etc.

Other things under consideration
1) Have I picked proper combination of items considering they will be used for developing freelance platform; (1.1) Am I missing any items that will be necessary (ie. programming language / framework / platform); 2) Is it reasonable to use django framework to save time on development and could it result in some major scalability issues;

(2.1) What libraries should be considered using to acquire as many prebuilt modules for freelance platform as possible;

3) BPEL (ie. using Apache ODE) can be adopted for a variety of business processes (including client-freelancer connection), but wouldn’t it result in great restrictions of what solutions can we offer; (3.1) Would it be better to consider developing our own modules in python to achieve needed result; (3.2) Or is there any python library that supports BPEL;

4) Is it possible to connect python with php in terms of using php libraries (example: http://code.google.com/p/php-excel/) when ones are not available in python;(4.1) If yes, what modules/platforms/solutions are needed for it; I will update any parts if needed as soon as I get feedback on it. Looking for Your answers. Thanks!

  • Can you explain what 'freelance platform' means? Or at least, what you think it means. – Spacedman Dec 11 '11 at 11:28
  • 1
    Web project, where client gets full service (ordering > assembling the team > processing with service while using given environment (ie. document exchange, payments, etc.) > and acquiring results) is referred as "Freelance platform". Examples of freelance platforms/marketplaces are: freelancer.com, guru.com, odesk.com, etc. – Aisbul Dec 11 '11 at 11:46

You're putting a lot of thought into this, but at the same time, you are only allowing yourself a narrow corridor.

  1. If you are considering PHP (and I really am not saying you should), then you must consider Symfony, Flow3, CakePHP and Codeigniter.

  2. If you are really interested in "long-run oriented solutions", then you should go for a statically typed language. I suggest Scala with Lift.

  3. If you don't like static typing, then you should add Ruby (Rails, Sinatra), node.js (Express) and CommonLisp (weblocks)

  4. You really should consider alternatives to SQL. There's a number of very scalable document stores, key value stores, graph databases and whatnots, most of which offer great performance and flexibility in the usecases they were designed for. It might turn out that SQL (i.e. MySQL in particular) is the best way to go here, but if you really want to choose between actual alternatives, then you need to look a little further.

  5. Business processes? Really? You may or may not be needing this kind of stuff, but right now this is way too early. Right now, you should focus on the real problems, such as feature design, UX design and the little detail of implementing all that stuff into a reliable, fast solution. The whole point of ESBs is that you can quite easily plug your services in there. You will not gain any advantage over you competitors just by using architecture that is easily available to them.
    Put your energy into iterating your features and into having a clean, robust, tested, flexible code base. Don't waste it reading pages of dry technical documentation and wading knee-deep in configuration XMLs. This is something for another time and probably best delegated to someone you hire just for that once you see that your project is headed in the right direction.

Not the answer you're looking for? Browse other questions tagged or ask your own question.