Well I should say, as an experienced developer I am pretty much all around happy with Symfony2. There are some things I do not like, some that are a bit tedious, but nothing that is horrible and, this is key, I can fix pretty much anything I do not like. Moreover with supervision any half way decent developer can be productive quickly. I would say 1-2 days pair programming to be able to stand on their own for 93% of the tasks during development. So from the POV of Liip I am happy we made the choice to go with Symfony2. Its awesome.
However for a less experienced developer, happy with symfony 1.x, I can tell you that Symfony2 isn't for you. At least not yet and honestly I do not think it will be in the next few months. Most things that are in Symfony2 to make it easier for beginners I think suck big time for "proper development", like Controllers without an explicit service configuration. Or the Controller base class. But remember I just said Symfony2 rocks, so there isn't much of these kinds of short cuts. But these are the things that make life easy for beginners, which gives them a warm fuzzy feeling, aka the "man in the machine" (aka magic) that just seems to guess what you probably want to do. For the most part these beginners do not hit the limitations or are contend with that they have when they hit them. These limitations are what annoyed the hell out of more seasoned developers using symfony 1.x.
So is it possible to create a framework that works for both equally well? I am not sure. I think at the very least it will take a while to find decent layers on top that do not mean that the code ends up being only either useable for people who rely on magic or those that do not want magic. Maybe some CLI tools to easy life for beginners (aka I detected this bundle ships with Entities, should I enable them for you?) can work things out? Then again Controller will either extend the base Controller or they will not. So one side will not be pleased most likely.
At any rate today I spend some time trying to make configuration definition easier. I think there is a good chance that one tiny piece of that will make it into core. The other stuff probably will not, judging by the strong disagreements with people favoring 4-5 different approaches to handling configuration merging. But its a hard problem and imho one of the biggest one if Symfony2 is to eventually attract beginners too. I today I was quite pissed off that the rest of the community did not agree with me (well there is always Jordi if I need a shoulder to cry on), but they all disagreed because they weight certain aspects differently and I am sure tomorrow I will not be pissed anymore, because I respect all of their opinions. And I hope they aren't too ticked off because of me getting pissed off. Happy familiy lala.
But the take away for beginners is that we are not making it easy for us. We are not just saying, ah well screw beginners. Because when it comes down to it, we know that our community is better with beginners than without. We want you guys to feel at home. And we appreciate your feedback, especially because we know today its still a great effort to work through the current state of things in order to do so.
Update: tweaked the wording in the second paragraph a bit.
link to jordi website is wrong
It will also be a good Choice for beginners As soon As the APIs are stable and there is Some more docs available. Some sort of Jobeet Tutorial will help a lot. You can compare this with symfony 1.x - without the good docs only some hackers would be able to use it. So its only a matter of time and Symfony2 will Be Best Choice for any PHP developer. ;)
@gordonslondon: thx fixed
@Matthias: well a tutorial and stable APIs will help, but I do not think it will be enough. in a lot of ways Symfony2 is actually simpler to learn because it is explicit. but I do not think that beginners appreciate that. they do not understand the reasons for this and so they will throw in the towel in frustration.
Symfony2 is moving more towards standards (just as Zend is), so obviously all those standard and proper way of doing will be confusing to those who code php 'the-googling way'..
Else, I think it's a big step for symfony2! I really hate the 1.x though.. my way :P
The discussion reminds me a little about the debates in the development of symfony1.1/1.2 (e.g. the discussions about the form-abstraction between Fabien and François). And this sounds like a very emotional debate as well...
People participating in the development of open source projects are certainly very biased when interests between experienced and not-so-experienced developers are weighted - since nobody who is not-so-experienced would participate in the development. But on the other hand these users and their support are very important, when Symfony2 competes with other frameworks to gather more supporters. If it is only usable by experts Symfony2 wont be very successful - and this means less open source bundles, less documentation ect for all of us.
To build a consistent and well-coded framework for the experienced developers can still be the first priority in development (I guess all of us agree Symfony2 does a much better job then symfony1.x here). But this should not mean, that one should not also respect the interests of users of the framework. I consider it absolutely important to make Symfony2 as easy as possible for not-so-experienced users.
When choosing between two solutions one should not only consider what is more beautiful form a developers perspective, but also what is easier to understand for most of the potential users.
Absolutely and I think there is a universal agreement from the core developers on this. We just have a few more miles to go to get there. I think Symfony2.1 will be just that. So this time it will be the other direction: first a solution for experienced hardcore developers and later something for beginners, where as with symfony 1.x it was very beginner friendly from day one and only slowly truly enjoyable for hardcore devs.
I would like to see the dev community strive for best practices in Symfony2, and then worry about educating "beginner-level" (or less-educated) developers on why certain choices were made, and why "our way is better."
The truth of the matter is, many (most?) PHP developers are "Google" coders, or simply need copy/paste/tweak examples to build their sites. Many still have fuzzy or flawed ideas on object-oriented programming to begin with. The idea of opening the code and figuring out how to use a code library scares them, likely because most older libraries ARE scary and have high cyclomatic complexity.
There are two kinds of developers:
1) Those that want to go deep, learn more and write better software.
2) Those that just want to get the job done.
I don't see Symfony2 being friendly towards the "just get it done" kind of developer (which I think is GOOD!) Symfony2 should encourage developers to open the codebase and look around. The code is beautiful and explicit, and should be easy to understand. We must show them, "Do it like this." If a developer can't follow what's going on in the Symfony2 codebase after some education, they either lack fundamental OO education or just aren't cut out to be an application programmer. If we can encourage exploration and education, with proper citations/blog posts/additional reading/whatever, I think we can educate developers on how to regain control over their codebase and have coding feel less magical.
We must educate developers on why their current beliefs about software development are wrong, and show how Symfony2 can allow them to write better code. I think we all agree THAT is what we strive for. The ah-ha moment for the developer should not come from a "WHOOPS" 10-minute blog tutorial, but in the ease at which quality-assurance techniques can be applied to a Symfony2 project. When they can sit back after a project is complete and KNOW it works as-intended, and they can make changes with confidence. If a developer doesn't want to do quality-assurance, Symfony2 is not for them. Simple. We must sell Symfony2 on its ability for the developer to write well-tested code that is easy understand and maintain. There lies the magic.
I tried drupal (oh god no), then Phpcake, then Yii, then Doophp, now I'm trying Symfony. There were several times when I wanted to give up, but I kept at it, because my goal is to have a web app that works really well, so I kept trying, reading, learning. I started with the Jobeet tutorial and got as far as day 4, the model, then discovered there was a version 2.0 underway, so I gave up on ver 1.4 to read about 2.0. Then I discover there is not much documentation at all about v2, so I went back, but this time, I started reading the Gentle Introduction to Symfony. Eveyday I read some more, and I understand it! I love this book, whoever wrote it, it is so explanatory and easy. I've also been reading the php.net Oop pages, and other stuff. So this gives me the confidence to keep going, to keep learning.
I'm sure the goal at this time is to get S2 released, and used, and then revise documents to attract more beginners, and I'm ok with that. I'm assuming from the detail and care that went into the Gentle Intro, that any further documentation about S2 will be at the same level of awesomeness. So I'm sure in the future there will be documentation on how to move from 1.4 to 2.0, i.e. all the changes that you have to make in your apps, and jobeet tutorials for s2, etc.
All I can ask of the community is be helpful to us newbies, don't turn up noses because we are not at the same level of expertise yet. We can get there if the documentation is good, and the reason for coding standards is discussed, and we have the support & encouragement. And if the programmer is just a copy & paste programmer, then they will go away on their own when it becomes too hard for their level of commitment, you don't have to push them away.
Well, I wish you good luck in convincing all those expert devs that "powerful" and "well designed" are not synonyms of "easy", and that "easy" is not a bad word. I sure know this is hard.
And if the community needs to wait for a Symfony 2.1 to start migrating, it will be a couple years between the last stable 1.x release and the first truly usable 2.x release... a long time.
Let's hope that not too many developers leave symfony for RoR or other frameworks that are truly powerful AND easy.