views:

1886

answers:

21

I'm a newbie programmer looking to start a niche social network. I'm looking for opinions on what you guys believe is the best language to create it in.

It's a mixed media site with all the usual functions including:

  • profiles
  • user to user messaging
  • new feeds
  • individual user blogs
  • user video/picture galleries

I am not willing to use a white label solution like kickapps/ning and the site needs far more customization than they can offer. The site will be a hub of information for males aged 18-30 and a place for them to learn, connect and contribute in a specific field.

Any thoughts or help would be greatly appreciated. At the moment I'm leaning towards Ruby.

+5  A: 

Given that you're a self-confessed 'newbie', I don't think the language choice is as important as the technology you will use. Assuming you don't know any languages well, you can't leverage that knowledge when building your application.

I think you should be looking at your requirements, such as:

  • Do I need fast turnaround?
  • Do I want very high scalability?
  • Is 24/7 accessability important?

Even questions like:

  • Can I find any programmers with the skills required?

could make the difference between success and failure of a commercial venture.

Mitch Wheat
turnaround is 6 months, scalability is a necessity (but not to more then 1 million members), 24/7 accessibility is important.thank you for the guideline
+1  A: 

If I am not mistaken (I don't use it or much else in terms of social networking) Facebook is done with PHP. MySpace I think is ASP.NET based.

This is supposed to be an example of two of the most commercially successful social networks out there. Maybe picking PHP or ASP/ASP.NET isn't going to be the most ideal, but I don't see how providing a few real-world examples is going to be worse than being told "just pick whatever you are familiar with".

TheTXI
yes... but that doesn't mean it's the right way to do it.
Jesse Pepper
MySpace was originally old-style ASP, I believe. It would frequently time out or error, 500 error, as it became more popular. I imagine the problems cost a *lot* to fix - probably a complete rewrite with the problems inherent in having a legacy database.
slim
@Slim: You do realize ASP is not a type of database right?
Geoffrey Chetwood
Yes. What I meant was, the existing database would have hindered opportunities for what could be done in the new language.
slim
@Slim: How so? How would the database be in any way related to the language/framework used on the site? You seem to be making a logical leap that I cannot follow you on.
Geoffrey Chetwood
This is a tangent, and it's nothing to do with changing language. It's that having a populated database 'bakes you in' to a certain way of doing things. Not that there aren't ways around it, but you either have to work around what's there, or work to migrate it.
slim
@Slim: I suppose if you have a truly horrible schema and are lacking a proper DAL, but I have seen no evidence of this for MySpace or anyone else mentioned. That is why I cannot understand your logical leap.
Geoffrey Chetwood
Did you use MySpace in the early days? I wonder whether it had any form of DAL.
slim
@Slim: I am not accustomed to having my UI have anything to do with my DAL, so I find your assumptions to be off base again.
Geoffrey Chetwood
They are nothing but guesses - based on the amateurish appearance of MySpace at that time, its performance and reliability. The whole thing was a hack, which needed extensive rework to keep up with its unexpected popularity.
slim
@slim: Again, a logical leap I am not prepared to make. You have also severely deviated from your initial comment and my response that the original comment made absolutely no sense on it's own. I wish I could say you were somehow making more sense as you went along, but this is not the case.
Geoffrey Chetwood
+1  A: 

I'd lean towards Django/Python. That would allow me to easily integrate with Google App Engine when the project gets large enough that I need lots of servers and storage space.

David
+4  A: 

I don't believe there's anything special about a social networking app that makes it different from any other database-backed web app.

The accepted wisdom is that web apps be written in a framework - Rails, Spring, whatever. Go with whichever one of those you're most comfortable with.

Work on the overall architecture first. You might end up doing things in more than one language. For example you might write a RESTful API in one framework, then write a user-oriented Web interface that backends onto that.

slim
+2  A: 

I think you should go with the language you are most familiar with. Almost any mainstream programming language these days have decent web development frameworks, but you could save a lot of time and brains if you were familiar with the language.

DrJokepu
A: 

Based on the requirements

  • Fast turnaround
  • Learnability (since you're a newbie)
  • Scaling till up to 1 million!

You can use ASP.Net Webforms in VB (easier to learn than anything else). For database you'll need something fast, either get MS SQL pro, or get MYSQL/PostGres (don't go for the Express Edition of MS Sql, it's hobbled and will not give you juice for a million members).

That or ANY language that you can work well in is suitable.

Cyril Gupta
Winforms? Seriously?
Robert S.
i think he meant webforms
Shawn Simon
yes, I meant webforms! Oops
Cyril Gupta
@Cyril: Was it also somehow a typo that you expect a free edition of MS SQL to support >1 million users?
Geoffrey Chetwood
A free edition of PostreSQL or MySQL should handle a million users, however. Especially combined with memcached.
slim
I did say that the free version of MS Sql will NOT give you juice for a million ones...
Cyril Gupta
A: 

I think you can go with any language you want. PHP, Python, Ruby or Java, just to name a few. The language is not the bottleneck of such applications, but you should use a fast and scalable database like Postgresql, cache as much content as possible in memory (memcached etc.).

+13  A: 

Just pick one and go for it.

It's more important to get things done than bumble about thinking about the best way to do it.

Martin
That said we all strive to create a site that will be a success...so not keeping a weather eye on the horizon is never a good idea. Look at a sites like MySpace originally developed in ColdFusion now ported to .NET. It started in CF because the shop (Intermix Media) built pretty much everything in CF. However, when it go so big that they needed more developers they found CF difficult to support - no one developed in CF any more. They moved to .NET and the Enterprise Application blocks provided by Microsoft. Take a look at the book ASP.NET 3.5 Social Networking for more on this topic.
Andrew Siemer
+10  A: 

There is no 'best' language.

Nothing inherent about PHP/Ruby/.NET/J2EE/Whatever means it will be better or worse - it will depend entirely on the architecture of your solution.

Do what works for you to get something prototyped pretty quickly. Ruby (on Rails) is certainly not a bad choice.

Then optimise later if you need to (which in social networks is a nice problem to have)

DanSingerman
I want to upvote this twice...
Rob
+1  A: 
Robert S.
Great Book, prob one of the better rails books out there...
featureBlend
A: 

Look at Erlang. It is work which this language is designed for.

Hynek -Pichi- Vychodil
+2  A: 

If you're looking to teach yourself programming, then the advice is already here: pick a language you like the look of, and go for it.

If you're looking for some technology that will help you with an existing problem, then I would not advise starting from scratch - you will not be able to keep up with demand (bugs, features, etc) from your network users.

I would take a serious look at an existing platform to build your network upon. Ning is the one that springs to mind; I think they let you program in PHP.

I would also consider some of the Google tools, including OpenSocial, AppEngine; these will be programmed with Javascript and Python respectively. Ning and AppEngine will host the server side code for you.

Good luck

jamesh
+4  A: 

The best language to write a social network is a social network language, something like a DSL specifically designed for this. Unfortunately such a language does not exist (you could write it in LISP).

Other alternatives are php (facebook is written in php) or ruby or python or even java (Hi5) or ASP (myspace).

You can see some arhitecture choice made by large social newtorks

Facebook (php) Friendster (php) Plenty of fish (asp.net) Myspace (asp.net 2.0) Twitter (ruby) or Hi5 (java)

codeassembly
+1  A: 

Er, whatever your users speak, surely? ;)

Rob
+1  A: 

look at elgg, this is a social network written in php.

It might help.

Aif
+1  A: 

Broken english.

Oh, you mean Programming language.

Christopher Mahan
This is not needed. Take this kind of speech elsewhere.
Geoffrey Chetwood
Relax. Just a joke. Were you offended somehow? I apologize if so, but I can't help but think that while offtopic, my comment was innocuous.
Christopher Mahan
@Christopher: This community is only interested in helpful answers. Your answer is in no way helpful. That is why it is getting voted down...
Geoffrey Chetwood
I'm not complaining about the voting down. I would have been surprised if it had gone other than it did. I am, however, not too keen on the way you say: "Take this kind of speech elsewhere." That was rather harsh.
Christopher Mahan
@Christopher: "Rather harsh" was being a dick about the guy's "broken english".
Geoffrey Chetwood
Eh? Ah, I see. You think I was implying that the poster used poor english when writing his post. Nothing could be further from the truth. Both my wife and I were born and raised in non-English-speaking countries, so I do not denigrate less-than-stellar written-english proficiency.
Christopher Mahan
It's a joke, dude, and the guy was talking about writing the *Social Network* in broken english.
Abdullah Jibaly
+1  A: 

I understand what you meant by your question, but, in reality, most of the main web languages (PHP, Ruby, Python, ASP.net, heck even Perl) will get you where you want without too much of a difference.

The more important questions are:

  • Which language do you feel most comfortable with and have relevant experience with?

  • Which framework would be best for creating a social network? (Symfony, Zend, Rails, Django, etc)

I recommend having a look at http://elgg.org/. It's a PHP-based social networking project, so most of the code will be there for you already.

Hans
A: 

the site will be a hub of information for males aged 18-30 and a place for them to learn, connect and contribute in a specific field.

Stackoverflow.com matches this definition quite well. ;)

If you like Ruby, use Ruby. Whatever language which has a usable web framework is a fine choice.

abababa22
A: 

It is Microsoft FoxPro 9. I tried it and it proved like very good RAD. For web deploy use PHP & Dreamweaver. Apache like web server. Forget rest.

A: 

Just a tip, don't reinvent the wheel. Start from an easily customisable and flexible CMS like Drupal. There is a guide on how to set up a social network with Drupal on drupalfun.

A: 

Why, assembly, of course.

shylent