Interview with Alexander Makarov, Yii core team
One of Yii’s key developers, Alexander Makarov ( SamDark ), will give a talk about package metrics at DevConf and I took the opportunity to ask some questions about the new version of Yii , the new ORM , fundraising for OpenCollective , full time open source development and a bit about the conference.
With Yii, everything is fine. Almost. To explain, you need to look a little back.
When we made version 2.0, we somewhat overestimated our strengths. It is understandable, Qiang Xue rolled mountains every day and it seemed to us all at once.
Then, unfortunately, he did not have enough time for OpenSource, and support for what was done ate the rest of the team all the time. Well, since nobody was involved in the fulltime framework, it resulted in the fact that releases were not frequent and large. In addition, when designing, we made mistakes. Now they seem obvious to me, but then we thought it was so good. Fortunately, there are not many of them. They do not Yii 2.0bad, the framework came out good. But over time, it turned out that the promise of backward compatibility, a lot of features and a lack of time gave us problems with the development of the framework: implementation of PSR , avoiding closure to packages and libraries common to all PHP , improvement in terms of applying more complex development approaches, better testability.
There was an attempt to get rid of evolution. For a while I believed in this and talked about version 2.1. But, the technical debt was already too big. It would not be a very good framework in which there would be no sense. And now, at some point, the realization came that it would be necessary to refactor everything and a lot, and even throw out and rewrite many parts. But before throwing me into battle, I sat well and reflexed. I indicated for myself what I want to fix, the principles of building 3.0 and the values of Yii as an organization. This resulted in several documents:
https://github.com/yiisoft/docs/blob/master/001-yii-values.md
https://github.com/yiisoft/docs/blob/master/003-roadmap.md
Next, work began on the allocation of individual packages and in the process, the principles of building Robert Martin's packages were re-read and rethought. The packages are actually not entirely new. These are parts of Yii2 that, for the most part, can be used separately.
But there are new ones, such as:
https://github.com/yiisoft/event-dispatcher
https://github.com/yiisoft/di
The process has not been completed yet, so the increase in the number of packages will continue. Now it’s not easy with them, but later it will be much easier to maintain.
Yes, it really is a Cycle . It was implemented by Anton Titov, author of roadrunner.dev . The documentation there is still not quite relevant, so if you are not ready to read the source, it’s too early to climb inside.
Anton and I have been talking for a long time. He then had an in-house framework and asked questions about how and what works in Yii , what I like and dislike in Active Record. Discussed and the pros and cons of Doctrine . Sometimes they called up and Anton showed how and what had been done there and I said many times that it’s more convenient in Yii .
At some point, I started talking less and realized that from Cyclesomething globally interesting might come out. At that time, there was already a syntax similar to Yii query builder, the concept of relations, and much more. Particularly captivating was the fact that Anton had a RoadRunner in production and it was critical for him that Cycle did not leak, did not eat extra memory and did not fall apart due to errors in batch processing.
In fact, I last watched Cycle in detail in the spring and the decision to take it by default for Yii was not made. This is only an option. But one thing is clear: we will not be tied to Active Record for validation, forms and so on. It all should work with anything: with DTO, with Doctrine entity, with Cycle.
Yes, we really started a fundraising campaign because there is more time for Yii 3 than before only for Yii 2 support . Focused core developer does not mean that it will be full-time (the amount is still not comparable with the commercial full time), but it means that almost every day one developer will devote considerable time to the framework without being distracted by burning production, deadlines, team problems and that’s all . That is, it is not only more time, but also a good focus of thoughts without very distracting factors.
I will be the first such developer. Upon reaching the goal, we will try to raise the bar and expand this to another member of the core team.
Yes, it’s like this: time has come and Yii has risen strongly in the priorities of the goals. I deal almost exclusively with OpenSource. Now OpenCollective allows you to pay on almost all accounts. Sometimes I take some small jobs like code review, processes or security, designing OpenSource libraries, searching for people for companies (friends who are good developers, they are also looking for), but not much, so as not to harm the development of the framework.
Sensations ... all sorts. This is really what I like to do. I am glad that it turns out a great tool. Pleased with people who are not indifferent to Yii and who help. I like to speak at conferences.
Sometimes the burden of responsibility crushes. I want to relax, but "necessary" makes me do something. Most often, nothing sensible comes out in such a mood, so I try to still convince myself that the rest is well-deserved.
Well, the understanding that there is still a lot of work ahead is also not very felt. Although, if you look at what has been done every week, it becomes clear that to do it all is real and that we will do it.
I look forward to the moment when it will be possible to declare alpha and get the first angry reviews :)
Two coffee houses, yes. They did it ourselves to be pleased. The bar is high. Good ones turned out, but there is room to grow. My brother is mainly engaged in coffee houses now. Time does not take much.
Went good. They did almost everything they wanted: 500 people plus online viewers. Famous foreign speakers, a strong program. Almost complete absence of any overlays. The reviews are mostly positive, but there is much to develop. We will do more.
This is quite applicable to PHP . Of course, first of all, this is necessary for projects at the level of Yii , Symfony or Laravel , but for commercial projects this also makes sense. Packet metrics can be applied not only to Composer packages, but also to code modules, microservices, and so on.
DevConf will be held June 21-22 and only 2 weeks are left before it. Strong reports , the opportunity to discuss a bunch of questions on the sidelines or on coffee breaks and get a good positive charge for a long time - register .
I'll start with the question that you are constantly asked. What's up with Yii ? When is Yii 3 ? I have been watching the active creation of new packages at github.com/yiisoft for quite some time.
With Yii, everything is fine. Almost. To explain, you need to look a little back.
When we made version 2.0, we somewhat overestimated our strengths. It is understandable, Qiang Xue rolled mountains every day and it seemed to us all at once.
Then, unfortunately, he did not have enough time for OpenSource, and support for what was done ate the rest of the team all the time. Well, since nobody was involved in the fulltime framework, it resulted in the fact that releases were not frequent and large. In addition, when designing, we made mistakes. Now they seem obvious to me, but then we thought it was so good. Fortunately, there are not many of them. They do not Yii 2.0bad, the framework came out good. But over time, it turned out that the promise of backward compatibility, a lot of features and a lack of time gave us problems with the development of the framework: implementation of PSR , avoiding closure to packages and libraries common to all PHP , improvement in terms of applying more complex development approaches, better testability.
There was an attempt to get rid of evolution. For a while I believed in this and talked about version 2.1. But, the technical debt was already too big. It would not be a very good framework in which there would be no sense. And now, at some point, the realization came that it would be necessary to refactor everything and a lot, and even throw out and rewrite many parts. But before throwing me into battle, I sat well and reflexed. I indicated for myself what I want to fix, the principles of building 3.0 and the values of Yii as an organization. This resulted in several documents:
https://github.com/yiisoft/docs/blob/master/001-yii-values.md
https://github.com/yiisoft/docs/blob/master/003-roadmap.md
Next, work began on the allocation of individual packages and in the process, the principles of building Robert Martin's packages were re-read and rethought. The packages are actually not entirely new. These are parts of Yii2 that, for the most part, can be used separately.
But there are new ones, such as:
https://github.com/yiisoft/event-dispatcher
https://github.com/yiisoft/di
The process has not been completed yet, so the increase in the number of packages will continue. Now it’s not easy with them, but later it will be much easier to maintain.
I remember you had plans to use some new ORM, which few people know about. github.com/cycle/orm I have not bothered to get to know him in detail, tell me how it differs from others and how it attracted you?
Yes, it really is a Cycle . It was implemented by Anton Titov, author of roadrunner.dev . The documentation there is still not quite relevant, so if you are not ready to read the source, it’s too early to climb inside.
Anton and I have been talking for a long time. He then had an in-house framework and asked questions about how and what works in Yii , what I like and dislike in Active Record. Discussed and the pros and cons of Doctrine . Sometimes they called up and Anton showed how and what had been done there and I said many times that it’s more convenient in Yii .
At some point, I started talking less and realized that from Cyclesomething globally interesting might come out. At that time, there was already a syntax similar to Yii query builder, the concept of relations, and much more. Particularly captivating was the fact that Anton had a RoadRunner in production and it was critical for him that Cycle did not leak, did not eat extra memory and did not fall apart due to errors in batch processing.
In fact, I last watched Cycle in detail in the spring and the decision to take it by default for Yii was not made. This is only an option. But one thing is clear: we will not be tied to Active Record for validation, forms and so on. It all should work with anything: with DTO, with Doctrine entity, with Cycle.
Yii recently began raising funds through opencollective.com/yiisoft . The goal of "One focused core developer - $ 24,000 per year" is currently close to completion. What does it mean? Full time developer who will deal exclusively with Yii? Who will it be?
Yes, we really started a fundraising campaign because there is more time for Yii 3 than before only for Yii 2 support . Focused core developer does not mean that it will be full-time (the amount is still not comparable with the commercial full time), but it means that almost every day one developer will devote considerable time to the framework without being distracted by burning production, deadlines, team problems and that’s all . That is, it is not only more time, but also a good focus of thoughts without very distracting factors.
I will be the first such developer. Upon reaching the goal, we will try to raise the bar and expand this to another member of the core team.
All this increased activity is most likely due to the fact that you finally have time. You worked at Skyeng, left there (you can read about the reasons and details here - rmcreative.ru/blog/post/poka--skyeng ). Do you continue to deal only with open source? How are you feeling? Family budget?
Yes, it’s like this: time has come and Yii has risen strongly in the priorities of the goals. I deal almost exclusively with OpenSource. Now OpenCollective allows you to pay on almost all accounts. Sometimes I take some small jobs like code review, processes or security, designing OpenSource libraries, searching for people for companies (friends who are good developers, they are also looking for), but not much, so as not to harm the development of the framework.
Sensations ... all sorts. This is really what I like to do. I am glad that it turns out a great tool. Pleased with people who are not indifferent to Yii and who help. I like to speak at conferences.
Sometimes the burden of responsibility crushes. I want to relax, but "necessary" makes me do something. Most often, nothing sensible comes out in such a mood, so I try to still convince myself that the rest is well-deserved.
Well, the understanding that there is still a lot of work ahead is also not very felt. Although, if you look at what has been done every week, it becomes clear that to do it all is real and that we will do it.
I look forward to the moment when it will be possible to declare alpha and get the first angry reviews :)
I still remember you opened something like a coffee shop, and maybe not just one. Business for the soul? Does it take a lot of time?
Two coffee houses, yes. They did it ourselves to be pleased. The bar is high. Good ones turned out, but there is room to grow. My brother is mainly engaged in coffee houses now. Time does not take much.
In May, you were one of the organizers of the PhpRussia conference . How did she go?
Went good. They did almost everything they wanted: 500 people plus online viewers. Famous foreign speakers, a strong program. Almost complete absence of any overlays. The reviews are mostly positive, but there is much to develop. We will do more.
Why should an ordinary developer attend such conferences?
- In order to know where to grow.
- In order to understand whether everything is right in the project or not.
- Recruit new tools and practices.
- To chat. This often gives very unexpected results: from just pleasant communication to invaluable tips and insights.
And finally, about your report. "Programming Theory: Package Principles and Metrics." You mentioned Robert Martin and his thoughts on packages. How applicable is this in the world of PHP? In the world of compiled languages, dividing one project into several packages that are compiled into separate assemblies is quite normal practice and some rules are really needed there. In PHP, we usually talk about composer packages, which are slightly different, and these principles with metrics are needed only for projects of the Yii3 level. Not?
This is quite applicable to PHP . Of course, first of all, this is necessary for projects at the level of Yii , Symfony or Laravel , but for commercial projects this also makes sense. Packet metrics can be applied not only to Composer packages, but also to code modules, microservices, and so on.
DevConf will be held June 21-22 and only 2 weeks are left before it. Strong reports , the opportunity to discuss a bunch of questions on the sidelines or on coffee breaks and get a good positive charge for a long time - register .