by pepeto on 4/7/17, 10:55 PM with 27 comments
I wanted to know which choice is wiser - try to save up money with a CMS like Drupal or go with a flexible framework like Django or asp.NET
The project is a startup for cars that includes: - marketplace cars and all kinds of other vehicles - marketplace for autoparts - marketplace for tires - marketplace for all kinds of services around car - washing, repairing, etc - booking - vin checking versus 3rd party databases - chat/messaging systems - ratings - statistics - owner tools - my garage - where you put data about your own car - promo codes/vouchers etc. - ...
...in other words, it is huge. It is not the classical startup of 2 people in a garage, but instead a business with funding that aims to topple the leader of car selling in Bulgaria (small country).
It would be tremendously helpful to state what your experience is (how good you are at either), have you had specific experiences you didn't like with either and what other specific things might be a problem for one or the other.
Any thoughts or guidelines will be super helpful, so thanks in advance.
pp
by aliskov on 4/8/17, 12:44 AM
Just my 2c.
by cdnsteve on 4/8/17, 1:40 PM
Go with Django. Python is a more productive and clear language. Django is excellent at ensuring an upgrade path, provides great docs.
If you have well defined services, it sounds like you do, then make them apis. You could have separate Djano apps or use Flask, a great micro framework.
Overall my experience with Python and the community for building web apps has been great.
by ben_jones on 4/8/17, 12:19 AM
by roddds on 4/8/17, 12:16 AM
by guitarbill on 4/8/17, 3:30 AM
* Dependency management is way easier with Python, so upgrading and deploying is less error prone
* Django scales really well thanks to excellent caching with e.g. Redis. Adding caching to views (pages) is child's play, and super easy to debug/purge.
* Speaking about scaling, writing a REST API or consuming a REST API is much easier in Django (django-rest-framework and requests, respectively)
* The Django ecosystem is great. If you have a problem you want to solve, someone has probably done it already and published a package
* The Drupal middleware is awful compared to Django middleware
* Testing
* The Django admin interface is amazing [0], and at least as good as any off-the-shelf CMS. It does permissions and custom actions. Your sales team needs to upload a CSV file of suppliers? No problem, just add it right in there.
* Debugging. The Django shell and pdb/ipdb are great tools.
Finally, thanks to some non-obvious pitfalls in PHP, you have to take more care when writing PHP to make it secure. Apart from the flame-wars, the only practical issue is when hiring. You need to make sure you hire PHP candidates who know the language inside out. With Django/Python, you can be a bit more lax - there's far fewer non-obvious pitfalls, especially with the templating system and ORM of Django. It also takes devs less time to do a thorough code review. IMO, it's easier to grow a Django team.
[0] https://docs.djangoproject.com/en/dev/ref/contrib/admin/
by kopos on 4/8/17, 5:10 AM
* A framework works at a lower level compared to a CMS. So if you have lot of customizations to be done which is not limited to how it looks - a framework is better * If most of the work needed is to change how a site looks and content only, a CMS might be a good fit * From your point it looks like there is a need for a strong platform * Which language are you programmers comfortable with (if you already have a tech team)?
For the company I was working in earlier, Drupal 7 was being used.
For my own startup I am using Django.
by ehllo on 4/8/17, 2:52 PM
by stevepurkiss on 4/8/17, 8:23 AM
My advice to you is to use Drupal because you can get far fast. Use lean methodology (lean canvas etc.) and get your MVP out as fast as possible and start making money. Don't try and build lots of functionality that you don't know works, and by works I mean makes a profit.
Watch GaryV, as he says - the market is always right. Focus on selling cars or vin checking or whatever it is you're doing, nobody apart from techies give a hoot what your site is built on. Some of the biggest sites in the world are built on PHP, e.g. Facebook. Some of the biggest sites are built on Drupal, e.g. Weather.com (the most personalised site as every visitor sees a different output, and delivers data to mobile apps).
Your code won't help your business succeed, selling will.
by drewjaja on 4/8/17, 12:56 AM
We found Drupal's hooking system a pain to work with and it made debugging incredibly difficult.
We were using Drupal 6 at the time, not sure what has improved since then.
by felipellrocha on 4/8/17, 12:10 AM
by scot_hacker on 4/8/17, 4:15 PM
Drupal or Django? A Guide for Decision Makers http://blog.birdhouse.org/2009/11/11/drupal-or-django/
by t312227 on 4/8/17, 9:21 AM
imho ... i worked with both of them :)
simplified
* drupal is a really nice, secure and extensible portal-system which can be enhanced with plugins written in php
* python-django is a web-framework based on common design-patterns
whats better for you!? it depends what you want to achive, but i think for a startup - and a maximum of flexibility + scalability - i would prefere python-django.
why? as a "general" webframework its more flexible than the portal/plugin approach of drupal + i would prefer python over php.
by romanhn on 4/8/17, 1:42 AM
by zhte415 on 4/8/17, 5:47 AM
As time progressed, we added voting, rss aggregation, quizzes, and started extending views with URL arguments, relationships, fancy combinations of filters, login was via OAuth, and we were at 7.x by now. It was feeling unwieldy. Always aggressive in theming, what we wanted to do was taking an increasing amount of time, both in function and appearance.
A new project came along, and I thought, eh, Drupal can do that. And it surely could, seeing a nail, Drupal is a hammer that can do anything.
But it does it in a way where maintenance, or getting things exactly the way you want become incredibly time-consuming, and the code is a maze unless you're in it 24/7, and we had chosen Drupal not to be in code 24/7.
My background is not as a developer, but finance where using technology is an important skill. I can Bash, Ruby, JS, VBA/.Net, Python, R, and a few others to varying levels.
I shuddered a little when seriously considering Drupal as a solution to this new problem, mapping out the edge cases and exactly how many modules were needed (60+).
I ended up taking a week off learning NodeJS and using hapi as a framework. Just because I wanted a fresh start, not that I was enthralled with Node, but as so many others were using it, surely something was there.
This freshness gave some time to think about what I actually wanted, and to back-track from there, focusing on simplicity and well, simplicity. How to make everything as simple as possible, which is what a high level code framework offers.
You don't sound that technical, and I don't have experience with Django, however I recommend taking a code-approach, even if you don't want or need to be sitting in code, as you'll have access to and know how everything really works, not a pre-written GUI one where you're clutching at straws. Most web challenges are about the idea, the code implementation for what you sound like your doing, at an initial stage, is probably that not complex, and if you have success with the core idea, get technical talent onboard to optimise or do the things you find too hard.
A word of warning, however: Focus on making things simple. That will stop you going into a rabbit warren filled with code spaghetti.
tl;dr
Drupal is an excellent tool for publishing, and accommodates some complex publishing workflows that need multiple authors or layers of editing or approval. Core modules like comments or maps compliment this, but that's it. If your core need is greater than publishing (I suppose marketplace is publishing, and there are eCommerce modules), Drupal is a quick solution, but if your long-term roadmap means doing something remotely unique technically or in UX, roll your own using a framework to prevent re-inventing the wheel (and ending up with security nightmares). Bring on technical talent at an early stage when your idea seems proved. If you have funding, do this right away.
by sebbean on 4/8/17, 3:05 AM
by devoply on 4/8/17, 2:46 AM