So I'm developing a web application involving "socially" networking elements created by users. But, I'm a novice [when it comes to web programming].
I'm getting to the point where I'd like to choose a language/framework. I'm OK (in fact, I prefer) trying options out and switching flexibly before settling down on a choice, but I thought I might get some feedback from some people who know what they're talking about.
Some goals (both long- and short-term) central to my plans that I think might influence my choice include:
-Lots of user/database interface and editing via gorgeous graph/node visualization
-Easy web site template authoring (read: visual/drag & drop elements, no/minimal coding required of user)
-Integration of version control (of web pages)
-Fairly sophisticated AI performed on the backend for resource matching and knowledge representation
-Enabling for public editing of HTML and site design
-Online CAD/drawing tool (probably via )
-Acute, application-level awareness of user profile/information in what/how pages and information is displayed as users browse (read: dynamically generate and display content per user)
-Web spidering/pulling and reusing content from the web
After shopping around, I've been primarily considering Python (Pylons; Django) and WebObjects/Project Wonder.
Thoughts? Recommendations? Are these goals _actually_ constraints on what language/framework I choose? What are the more generic features of the language/framework that I should paying attention to, given my goals?
Well, that list of ideas is pretty surreal. Saying that, I have personally really liked Django. The biggest thing going for it is the ease with which you can get started and make something fairly impressive (I find RoR, in comparison, more intimidating and more magical). Also, the source is very readable (always a plus when you start pushing the limits of your framework).
Something like dynamically generating content on a per user basis is a breeze with Django, they have fantastic user and session support straight out of the box. The public site design would also be doable, but probably a lot of work to keep it from being a security disaster.
Your AI and Spiders could be separate Python processes, so that would be doable. The Online CAD/drawing stuff I don't have anything on, but you could probably integrate a flash or ajax library to do it without too much trouble. Also Django scales easily with great built in caching support.
Feel free to email me any questions.
Also, all the things you want can be done in any framework, its just that it'll be far more painful in some than others. I'd focus on looking at frameworks with preexisting libraries or modules you can use to create your functionality instead of having to build it all from scratch.
"is pretty surreal. . ." --tell me about it =) Frankly, I think it's too many features. We've a prioritized development schedule based on user input, and I expect that we'll find that the site becomes what we want/need at around 1/3-1/2 of these features.
That's good to hear, about Django, given the prominence of user/session support in our plans. Public site design is frankly a secondary concern: I think a template system will be more than enough. But, I figured I'd throw it out there.
We've already rolled a simple CAD/drawing app via the element, and I expect that to be more than sufficient.
Thanks a bunch for your input! I'll be sure to be in contact as we proceed.
I'm a web novice too so take my advice as such ..
My requirements are similar to yours, backend ANN's and frontend graph visualization.
I'd go with whatever you currently feel most comfortable with. Getting the first version out there in the fastest way possible will give you a chance to judge feasibility and traction.
The minor differences between current popular languages and frameworks will the least of the problems in getting the app up and running (and honestly inspite of all the wars they don't matter all that much)
I'm currently with RoR and while I love Ruby language I feel that RoR, while being super-productive for basic things, forces me to dig deep into its own (not very readable) source code to figure out non-trivial things that are not mentioned anywhere in the documentation.
And looking at Rails code, I find that often DHH overuses Ruby dynamism without practical benefits. Look at Rails::Initializer class and how it starts the application and handles configuration: lots of dynamism and supposed flexibility, but yet there is no simple way to access the active instance of Configuration object from arbitrary place in your Rails application, which is (to me) seems like a first thing anyone would expect from configuration.
Another example is suppressing previously rendered output (in ActionView). "Official" documentation does not mention those methods, I found them (yet again) by drilling through Rails code.
Finally, I am not impressed with Rails session support. With a framework so powerful and "magical" I still need to manually deal with cookies and session data, because there is very weak control over session expiration mechanism in Rails.
Having said all that, I still enjoy developing with RoR w-w-a-a-a-ay more than Microsoft's "WinForms on the web" approach in .NET, and Ruby is really fun.
Like sessions, conversation objects live across page requests, but die after a given action or event. A Conversation is a mid-ground between a session (long-lived) and a page request (short-lived).
Seam also offers good support for dealing with the session scope: All you need to do is to basically say "hold this object in the session scope" and Seam manages it for you. No cookies or manual session handling (unless you want to)
6 comments
[ 3.7 ms ] story [ 36.6 ms ] threadI'm getting to the point where I'd like to choose a language/framework. I'm OK (in fact, I prefer) trying options out and switching flexibly before settling down on a choice, but I thought I might get some feedback from some people who know what they're talking about.
Some goals (both long- and short-term) central to my plans that I think might influence my choice include: -Lots of user/database interface and editing via gorgeous graph/node visualization -Easy web site template authoring (read: visual/drag & drop elements, no/minimal coding required of user) -Integration of version control (of web pages) -Fairly sophisticated AI performed on the backend for resource matching and knowledge representation -Enabling for public editing of HTML and site design -Online CAD/drawing tool (probably via ) -Acute, application-level awareness of user profile/information in what/how pages and information is displayed as users browse (read: dynamically generate and display content per user) -Web spidering/pulling and reusing content from the web
After shopping around, I've been primarily considering Python (Pylons; Django) and WebObjects/Project Wonder.
Thoughts? Recommendations? Are these goals _actually_ constraints on what language/framework I choose? What are the more generic features of the language/framework that I should paying attention to, given my goals?
Something like dynamically generating content on a per user basis is a breeze with Django, they have fantastic user and session support straight out of the box. The public site design would also be doable, but probably a lot of work to keep it from being a security disaster.
Your AI and Spiders could be separate Python processes, so that would be doable. The Online CAD/drawing stuff I don't have anything on, but you could probably integrate a flash or ajax library to do it without too much trouble. Also Django scales easily with great built in caching support.
Feel free to email me any questions.
Also, all the things you want can be done in any framework, its just that it'll be far more painful in some than others. I'd focus on looking at frameworks with preexisting libraries or modules you can use to create your functionality instead of having to build it all from scratch.
That's good to hear, about Django, given the prominence of user/session support in our plans. Public site design is frankly a secondary concern: I think a template system will be more than enough. But, I figured I'd throw it out there.
We've already rolled a simple CAD/drawing app via the element, and I expect that to be more than sufficient.
Thanks a bunch for your input! I'll be sure to be in contact as we proceed.
I'd go with whatever you currently feel most comfortable with. Getting the first version out there in the fastest way possible will give you a chance to judge feasibility and traction.
The minor differences between current popular languages and frameworks will the least of the problems in getting the app up and running (and honestly inspite of all the wars they don't matter all that much)
As for me I'm using ROR/C++/Javascript.
And looking at Rails code, I find that often DHH overuses Ruby dynamism without practical benefits. Look at Rails::Initializer class and how it starts the application and handles configuration: lots of dynamism and supposed flexibility, but yet there is no simple way to access the active instance of Configuration object from arbitrary place in your Rails application, which is (to me) seems like a first thing anyone would expect from configuration.
Another example is suppressing previously rendered output (in ActionView). "Official" documentation does not mention those methods, I found them (yet again) by drilling through Rails code.
Finally, I am not impressed with Rails session support. With a framework so powerful and "magical" I still need to manually deal with cookies and session data, because there is very weak control over session expiration mechanism in Rails.
Having said all that, I still enjoy developing with RoR w-w-a-a-a-ay more than Microsoft's "WinForms on the web" approach in .NET, and Ruby is really fun.
Like sessions, conversation objects live across page requests, but die after a given action or event. A Conversation is a mid-ground between a session (long-lived) and a page request (short-lived).
Seam also offers good support for dealing with the session scope: All you need to do is to basically say "hold this object in the session scope" and Seam manages it for you. No cookies or manual session handling (unless you want to)