views:

185

answers:

3

I must say up-front that this is not a strictly programming-related question and a very opinionated one. I am the lead developer of the dominant .Net CMS in my country and I don't like my own product :). Managerial decisions over what is important or not and large chunks of legacy code done before I joined gives me headache every day I go for work. Anyway, having a vast amount of experience in web industry and a very good grasp of C# and programming practices I'm designing my own CMS the past few months. Now the problem is that I'm an open source kinda guy so I have a dilemma. Should I use C# and .Net which has crippled multi-platform support or should I drop .Net entirely and start learning Java where I can create a truly open-source and cross-platform CMS? Please don't answer that I should contribute to an existing open source CMS. I ruled that out after spending a great deal of time searching for something similar in structure to what I have in mind.

I am not a native speaker, so feel free to correct my syntax or rephrase my question.

+3  A: 

I would focus on C# and .NET using only Mono compatible cross-platform libraries.

Your code will be able to run on the vast majority of platforms that way.

Justin Niessner
Can you please explain why you'd stick to .Net? Isn't Java a better alternative? The only reason I see to use C# is my experience.
CmsAndDotNetKindaGuy
Since you said that you are experienced in .Net and C# then it would be a waste of your skills and TIME invested in it. Java is an alternative, but it's not a guarantee of better solution. It's just another concurrent technology which you can use. You can also argue that whether PHP, Python or others are not better to use. I think that what matters the most (in your case) is your experience in building (design, architecture, ...) CMS which you can learn from and create a better one.
Tomi
+1  A: 

I'll start from the assumption that both .NET and Java have large and equivalent supporting infrastructures, APIs etc. You have extensive .Net knowledge and would need to learn the Java-equivalents of some subset of that in order to implement in Java.

I value learning something new quite highly, so I don't see a fundamental problem in going for Java. But, If the "footprint" of what you need to learn is very extensive then it may get in the way of your real objectives - which is to build something.

So I think that one big question is the size of your CMS learning footprint. My guess is that a CMS is very much about logic and data structures and probably only uses a small set of Java APIs - network and file io, or databases maybe? Any UI might be platform neutral Javascript/ AJAX perhaps?

The primary alternative seems to be Mono. I can't speak to the practicalites of working under Mono, I'm guessing that it's quite OK. I'd be more concerned about whether the range of platforms is enough for you. iSeries for example, is that supported? Does that matter to you?

My personal predjudice is that emulations tend to be unsatisfactory, there's always a gotcha. So I'd go for Java. But then I'm a Java guy ...

djna
A: 

I'm not sure why you'd use C# or Java for this particular project. I'm not as versed in CMS design as I could be, but I know C# pretty well, and it's hard for me to see what advantages C# offers over Python in this problem domain, especially given robust frameworks like Django and Pylons as a starting point. (My knowledge of Java is...faint.) What specific elements of the design would make C#/Java a better choice?

Robert Rossney