Back to Home

Opensource helps us build and live: interview of Yii Framework developer Alexander Makarov / Skyeng company blog

interviews · open-source · patreon · combination with full time

Opensource helps us build and live: interview of Yii Framework developer Alexander Makarov



    Recently, Alexander Makarov, a longtime participant in the core team of the Yii framework, joined the Skyeng team. I could not miss such an information guide and went to Voronezh to ask Sasha about life in the open source world, the prospects of participating in the development of free software and combining such development with a full-time job.

    How did you become a member of core team Yii?

    He worked as a Java developer at Murano Software, did his projects: a blog, some small part-time work on typesetting. Hosting for Java at that time was expensive, so it began to move towards PHP, especially since I had a deal with it at the university. At first I wrote in bare PHP, but everything turned into a mess, so I started to study frameworks. I looked at Zend, there’s a simpler deployment, but still, Java was obvious, it was too clever for my purposes. I went through a few more, settled on CodeIgniter - I basically liked this framework, simple.

    I launched the first cover on it, everything was fine, projects began to fly in, the complexity grew, and at some point something broke. He climbed inside, was horrified, tried to fix ... At that time, EllisLab began to focus on CMS, and to score on CodeIgniter, so I had to rely on my strength, well, and look for colleagues in the framework. We cooperated with Anton [Isaikin] and made the code-igniter.ru community, where we moved the docks, answered questions, and eventually raised a good community. We made many attempts to push something of our own into the core, but they were unsuccessful, nothing changed with the framework, the picture was sad. He began to study other options again, accidentally came across a site Yii; he was wildly scary at that moment, with a blured logo. Despite this, I read the docks - I realized that everything is logical there, laid out on shelves,

    For his next project, he took Yii, it went well, then again, well, some little things climbed. I started writing tickets, then offering solutions, uploading patches, then Tian [Qiang Xue] said, “your patches should be revised for a long time, and the quality is quite high, so let's go to the wizard”. So I got into the core team. Then we launched yiiframework.ru , I announced it on the forums of our existing community, a lot of people crawled from there, so the base quickly grew.

    We supported version 1.1, then we planned 1.2, which never came out, but 2.0 came out, to which I had a thorough hand. In 2015, Tian entered a new job, he had almost no time left for the framework, and he handed over the project to the five most active participants. Now there is no separate person who decides everything, now we have an inner slack, and all important decisions are collective.



    What is a core team? How is the communication conducted? How are tasks distributed, are there any deadlines?

    There are five people in the core team: Dima Naumenko from Kiev, Pasha Klimov from Donetsk, Karsten Brandt from Germany (he, like me, has long been in the team, and he knows Russian), Bugvin [Boudewijn Vahrmeijer aka dynosource] from the Netherlands. These are the main participants, now they have formed additional teams from the most active reviewers and contributors, gave them more rights so that they can work with pull requests and even some repositories directly. There are 13 of them, and there are about twenty active contributors, and in general, two hundred people who participate in the development.

    We communicate in slack in English. We write off 2-3 times a week, sometimes call up, meet at conferences. Active communication happens when we start arguing, discussing supernews, or getting ready for a conference, and each person takes tickets to the best of his ability and tries to resolve them, or designs the next versions. Since all fulltime work, we do not have clear deadlines, they appear only if something critical happens.

    And how is open source development and full time combined?

    Personally, in previous works, Yii was actively used, so they only benefited from my participation in the development of the framework and certainly did not forbid them to do it. In general, the code and design of Yii is one of the hobbies; devoting one hour after work to it is, in principle, normal. Since I have known Yii and PHP for a long time and deeply, this hobby does not take much time.

    Is it worth it to do open source?

    Depends on the goal. If you want to dig and know more than the full time can offer in the middle position, then definitely worth some time. In open source, leaders are very savvy, they always have something to learn. Eleven thousand stars on Github do not appear just like that, all these people climbed into the code, studied, criticized, tried to fix it. Open source solutions are tested by a large number of people and projects, there is a huge educational potential.

    For me, the main result - in 5 years I managed to work with the guys much more experienced than me, this was at a time when I stopped growing and began to think that I had nothing more to learn. This is not true, there is always something to learn, the main thing is to find from whom.

    By the way, managers can also find benefits for themselves: you can look at processes, study errors, learn how to deploy, communicate with the community, and organize testing.



    What problems should be prepared for?

    If you have washed down the library and it has become very popular, on the one hand it’s good - they invite you to conferences, offer worthy positions, and on the other, it begins to devour your time and yourself morally. From a certain point, open source can be put into full-time mode, but before that it’s a hobby for yourself, you need to have fun and not consider it the main purpose of life. Otherwise, burnout will occur and instead of a talented developer there will be a lifeless person who does not want to do anything. In our team, several people were burned out like this - they were cool contributors, but too often and intensively, and as a result they were exhausted.

    We must be prepared for the fact that inevitably there will be a cloud of very, very high-profile haters. We need to learn how to filter this matter, weed out, it's not easy. One dissatisfied is louder than hundreds of satisfied, it is always so. For example, recently launched several surveys on Facebook on the next version, comments were sent. They are full of constructiveness, but, of course, the topic immediately appeared there: “the best thing you can do is to nail everything so that everyone writes on Symfony and Laravel”. This is a rather strange position, given that the same Symphon on Github has 13 thousand stars, not much more than ours. I understand that, from the point of view of Yii theory, it’s not the right thing, we cut the corners, now I would rewrite a lot, and we will do it, but the hacking is annoying, and you need to be prepared for it. If you can’t bear the criticism, it’s probably better not to meddle in open source.

    Does open source help you find cool work? Tell me where you worked, already being in the core team.

    I worked for the New York Clevertech, living in Voronezh. It turned out exactly because of Yii - they said that we are interested in your development experience, we have our own achievements that need to be documented and put into open source. Since I can do this best of all, I started from this, then I wrote a small open wiki engine. The fact that they began to lay out their groundwork in open source helped a lot to drag a lot of cool developers into the company. This is useful for HR, for retaining developers, and cool for code - it is combed in the open source, a lot of people attack it and starts testing for crazy cases that you can not even imagine, and the library licks to the ideal in a short time.

    After some time, Tian called stay.com to a Norwegian startup. There was a team that I really wanted to work with, so I handed things over to one of the main developers and moved to Stay.

    Stay.com was an application for travelers, allowing you to upload city guides to your phone with recommendations from all sorts of famous personalities; it could work without the Internet, show where to go, what to do. Outside, it stuck a little, but inside there were complex business processes, CRM, analytics, automation of content verification, in general, it was very interesting. The application was licked to such an extent that they still ask on Facebook in the project group about his fate. Unfortunately, it was closed for business reasons.

    By the way, with "Stey" I realized that the main thing in a product, as a rule, is not an algorithm, but competent business processes and knowledge within the company, which are difficult for an outsider to understand due to the lack of experience in building them from scratch. In our neighboring streets a couple of offices opened, copying our service and doing the same, but they poorly understood what was happening, because they took the ready-made solution as a basis, without seeing its inside out.



    Is it possible to feed on an open source? What are your successes at Patreon?

    In the open source, it is very difficult to get a direct material reward. The projects that have succeeded are few. As a rule, income is obtained due to some paid extensions, add-ons or services. Our story is completely non-profit, it doesn’t bring any direct profit, only expenses - hosting, time.

    Patreon wasexperiment when the "Stay" closed. The idea of ​​dealing with the framework as a full time has long been. However, I did not have any particularly bright hopes for crowdfunding, but why not try it. It turned out very well, the community turned out to be responsive, they donated an amount that allowed us to engage in the framework for a whole year on an ongoing basis. However, at a certain point, I began to realize that I am rusting without real projects. When new ideas for the framework end, I lose my vision, don’t understand where to go, and one of the reasons why I accepted Skyeng’s offer is that you can gain new experience and learn something.

    In general, when I announced at Patreon that I was going to work, the coolest sponsors (such as HumHub, CraftCMS, Luya) either lowered their payments or left, which is logical - they want to support the framework, and not personally Sasha Makarov. But still, a good amount remains for the current work from small donations, for which I am very grateful.

    We want to register a fund so that sponsors give money specifically for Yii, and they are distributed among all development participants and spent on servers, development, design - for everything that each of us now pays out of our pocket. Tyan has the rights to Yii (he registered them to protect the domain name, because otherwise it would have gone to Nintendo at some point), he does not mind.

    In general, is an open source framework an expensive pleasure?

    Yes, enough. Costs depend on the stage - for example, if you just did something and no one knows about it, the best way to advance is to actively travel to all conferences and talk. And this is unprofitable, because no one reimburses expenses, in the States and in Europe this is not accepted.



    You often indicate conferences among the “goodies” for an open source developer. And what is their use?

    Well, first of all, I like it. Cool to chat with people. At one time, I learned a lot of new things from them, at a time when it was not yet customary to lay out everything en masse in Github. Conferences were a major source of information, especially on the sidelines. Well, dating made there helps a lot in work - for example, when you need to tell Yandex that something has broken, the most effective way is to pull someone from the inside. And this is still normal compared to Google.

    Another profit in offers of cool vacancies, in new contributors, participation contributes to the spread of open source, many people, before that they all wrote themselves, begin to get involved in collaboration, the base for the whole industry is improving.

    Why did you decide to work at Skyeng?

    When there was a feeling that I was “rusting”, I began to look for something to do. First I launched a coffee shop in Voronezh (we’ll open the second one soon), then the load fell again, I began to be lazy, I had to do something about it. I was like interviews, I realized that I can evaluate algorithms in my head and write code on a piece of paper (I used to think that it wasn’t). There were 5-6 very good suggestions, but they didn’t work out under certain conditions. For example, the contract stated that the rights to all the code I wrote at work were transferred to the employer. This means that if I accidentally push something into Yii, the rights will go to them, and they did not want to change this item.

    In general, an offer from Skyeng arrives, and since I don’t refuse anything at once, why not. It was useful to study what it was, read articles, began to understand that everything was not so simple, that something deep was hidden behind the facade. They told me in more detail at the interview, I was convinced that this is exactly what I need in terms of complexity of tasks, and the company is actively growing, which means that I can bring what I brought to other projects. And here they say that editing the contract is not a question at all, well, everything became clear.

    So far I have been supporting the old backend written in Yii. I will update it a little and translate it to Symfony. I do not mind, the company should have a single standard.

    What advise people who still decide to go to open source?

    The reality is that open source projects - the same as startups, shoots a very small percentage . But in the open source you can immediately see why. You post the code, and that it was not in vain, it should be useful to someone. And for this, this someone should first of all learn that you have prepared something for him.

    In open source, everyone makes the same mistakes. We made the same mistake for six years - we did not care about the readme . Readme is the first thing a person who comes to see you sees, and often there is not enough information there or there is none at all. As a result, you find a kind of interesting project, there is code inside, and nobody knows what it is. We at Yii, by the way, made a normal logo a year and a half ago - as they added it to the readme, the popularity has grown significantly.

    Another common mistake is when people saw the code, but they don’t tell anyone about it . Here at Github is an excellent library, it has been in the profile for years, but no one knows about it. Yes, if this is something super-unique, then maybe they will find it, but if it is just a good product, then it is unlikely. If you spend a couple of days on PR, write on Reddit, Habré, somewhere else, then people will come and the project will heal with its life.

    If the task is to learn something, then you need to understand that the best school is in existing projects, but not in their own. For starters, it makes sense to go there, and not meddle in complicated things. If this is a framework, it is probably already well-licked, it’s better to start, for example, by translating the documentation into your own language, correct errors in the comments, this will help to study the project from the inside, and then you can start to do something serious. In general, translating documentation is the best way to enter .

    Finally, I repeat: if the project has become popular, you must be prepared for the appearance of people who will demand something and curse. This is an inevitable consequence of popularity - you just need to understand and forgive.

    Want to ask your question to Alexander? Use the comments, we will try to respond promptly. Well, if you want to work with him in one cool Skyeng team, we are always looking for talents !

    Read Next