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!