I am trying to see if I can take a stab at Drupal project. I have cloned it and checked out the core a bit, mostly the components and the core. One first impression is the familiarity with Symfony and well PHP in general. I am talking about past and present. There is code down there that is not very pleasant at all; however, there is good code too.
Regarding components, I believe it is currently a mix of byproduct drop copy/paste spaguetti code that was before all together and now we have put it in classes and removed the requires. This feels exactly like the book from Paul M. Jones. The process is not at all finished though, so there is this feeling of disconnection and of facade :), something fake. The components are really a move of pieces of code that treat a topic but they are somewhat still to specific to Drupal. The components are defined as code that could even be pulled out of Drupal, however i think they are not mature enough for that. They are good within Drupal for now, there is some more work to be done on them to make them really more generic oriented and more helpful for solving single responsibility problems. Some of them are code ideas split between the core and the components so really they are a refactor of some core classes.
Regarding contribution, I believe the current state of Drupal contribution is too adhoc and prone to errors and time spend on things that elongate the development process. I feel like going 0.00009X of the speed I go on Github. There is no excuse really. Drupal has issues, so Github, Drupal has patches, so Github PRs, Drupal has interdiffs, Github has Diffs and PRs to allow more than one contributor and has forks and much much more. Drupal has a search, so does Github have labels, Drupal has dreditor, Github has diffs and a world class web interface, Drupal has a test system, Github has travis, Drupal has millions of patches, so Github handles much much more across all languages and repos combined, Drupal.org (d.o) is slower than Github, Drupal has a broken API for posting tickets and such, Github has a brand working API interconnected with many libraries and support for integration into other systems like Jira, waffle.io, and what not, Drupal has threads, so does Github can sustain threads with drag and drop graphics, code markdown and realtime facebook-like updates, Drupal has follow feature, so Github has follow and subscribe features for PRs, comments, repos, etc, Drupal has many branches, so Github allows projects to handle branches and tagging and releasing, Drupal has projects so Github does and you have authentication, private and public sides, and you have complete freedom. The only reason I think Drupal does not move to Github perhaps is fear of change. That said Drupal has a great community and thrive, so much that we need to invite it to the PHP arena on Github. We cannot afford to not share with those on the other side of the wall.
Regarding help, there is yesCT which will help you if you approach Drupal channels on IRC. She is such an asset! Thanks for helping me so far figuring things out.
Regarding some good quality code, I saw a plugin system that is very powerful, maybe not fully tested, but good nonetheless. I dislike the CS because it not only is particular amongst good PHP projects but it is just non enforced well. It kind of conveys sloppiness imo, but yes as I take more informations I can change my mind on some things, many things maybe.
I am trying to send patch after patch as I advance reading the core code. I figured if I read the core then it would be helpful when I get to use the release and I can learn things from its source code too. I see very interesting line ideas, the problem is that I see a reminiscence of convoluted practices, but I see an emergent OO feel in Drupal, situation is changing, and there are great minds there. So don’t be shy and start looking at Drupal, after all is not all spaghetti code, it has very good parts, and in its beginnings its architecture is promising.
Often I hear the main argument for Drupal is size, but it is time to change that and let the core quality decide. Not just that is using Symfony but that its other components and core classes can well develop an architecture that is parallel or beyond Symfony.
Encouragements and thanks for reading this. All are my thoughts and never to be taken offensively of any work. These are just appreciations that are changing as I dig but is a first impression.