📜 ⬆️ ⬇️

IMaskjs - 3 years in open source

image

Hello!

It's been 3 years since I started working on the imaskjs library. Although opensource is an endless process, but we can say that in general the work is finished and has moved to a sluggish bugfix. At the moment I did everything I wanted, there are no other ideas, except tests to pee, but laziness.
')
It was not an easy way: many times I wanted to quit everything, and many times I thought that everything was already perfect. Now everything has calmed down and I can remember with a clear conscience and clear conscience how it was and philosophize on whether it was worth it and why.

Prehistory


It all started with the fact that for work we needed a library for masking a wide variety of fields on a variety of forms. The mask format was given from the external system, validation was already on the backend, but this was not enough for insatiable testing. Little has turned out to be existing solutions for masking. We fought with them for a long time, forked, finished, made bugs. As a result, we did not achieve what we ideally wanted, but everyone agreed that there was, well, we forgot. But then it seemed to me that something was wrong here - in fact it should be different. I have seen so many places to improve the source code of virtually all popular libraries, so why not write your solution? It was scary to see what came out of it, but the idea seemed insane. Now I know that the fear of a new business is a good sign.

There is a lot of controversy about whether to write your bike or not to write. In my case, I, too, was not completely sure: half a year ago, as I had just begun my path as a developer in the company, I was considered a junior, then it seems that nobody needs it, and it’s just time draining, nobody writes anything like that, maybe it is better to go and still earn money ... Yes, I leaked a lot of time, I didn’t appreciate it at work, and I didn’t earn money with it. But I'm sure it was definitely worth it. That's what I wanted to talk about.

Motivation


Own project gives school naivety and carelessness, this is the feeling when you are completely absorbed in the process, your hands itch, eyes burn and nothing else exists around. It was cool. Of course, I couldn’t do the library all the time, as far as I understood it, and I don’t need it - I’d rather give the community time between releases to hear the feedback and adjust the development vector. But as soon as I returned to the development, the feeling returned again, the interest did not fade, and there was no reason to stop. Maybe someone is more fortunate with the work, but my job quickly turns into a routine - the world of the enterprise is rather monotonous and dull. And the longer you are in it, the more experience and more routine. Their projects save and help not to burn out. Of course, it does not have to be opensource, but it's easier to get attention and get feedback.

Personality and Society


I consider communication and feedback to be of great importance both for the project and for the development of the personality. While you are not in society it is not clear who you are and what you can do, it is difficult to evaluate yourself and your achievements from the outside. And without this it is difficult to grow. Also, the value of the project is difficult to assess alone. I used to want to think that I didn’t care about the opinion of society, I don’t need anyone and that’s not important. I would have been sitting on my mind, but fortunately the desire for fame and the stars on the githab was stronger. To even greater happiness, this was not the end of the matter. But when it all started, the opinion of others meant a lot - if someone found flaws or started a bug, you start to fuss and try to fix faster so that no one else sees - after 5 minutes you roll out a new version - but there are no tests, and it is even more moving around. And when you post an article, you can never sleep at night. Maybe I'm exaggerating a little, but in general - a circus on the project, a madhouse in my head, and each version is a huge stress. Now all this causes a smile, but I think for the first time many who do not care what he does will have to go through it.

As in any business, gradually the influence of external factors decreases, and I want to understand, you really did something valuable and useful or just another wrapper, which will be thrown out in six months. You gradually get used to regular work with people, and you already want to receive feedback not from everyone, but from those who are really in the subject and who make the most of the library's possibilities. The opinion of people is important, but it is just a working moment.

On the other hand, one should not overestimate public opinion. When you just start it seems that everything is against you. No thanks to you, no well done, only there is not so and this is not that way. I then believed that I had done a great job, I invested my soul, and now everyone should admire, but in response, only criticism. For me it was a sore moment, I was not ready for such an attitude, and at the beginning I reacted rather sharply to the comments, trying to defend myself. Then I began to notice that people seem to be normal, I don’t understand them, I don’t understand them, somehow I’ve lost heart, I even apologized. But if there is no experience, then you will have to defend yourself in the beginning, otherwise your hands may fall, and everything can end in nothing.

Also from the point of view of the maintainer, it is necessary to distinguish the motives of people. Everyone has an opinion and everyone is mistaken. Therefore, you need to filter tips, especially those who are trying to pull the blanket over themselves, pursuing exclusively personal interests. Some people think that everything should be done differently, for example, in my case:


Etc.
The thing is that I, as an individual, also have my own vision of the project and this is completely normal. The fact that the library is in the public domain does not mean that it is suitable for everyone and that you should try to please everyone. One can observe how under the influence of society, some projects are simply pulled apart in different directions, depriving it of integrity, which leads to chaos, bugs and usually the slow death of the project. Nevertheless, for myself, I try to capture the demands of society, especially if they begin to repeat. But the solution is not necessarily a change in the library itself, it could be a sample code, a piece of documentation, or a comment in the code. Just now I think to add to the documentation examples of frequent questions, such as those that are higher. But at the beginning, I also reacted rather sharply to such questions, considering them to be inappropriate and perhaps foolish somewhere. One of the reasons for this behavior was that I also wanted to impose my point of view myself. Because my library is the best!

Be the best


This inevitably causes conflict. The time has passed, but I still think that my library is beautiful, the idea and implementation is just brilliant! Do not describe in words !!! 1 But with one caveat: it is the best for me and for those who are in similar circumstances. There can hardly be a universal library for everything: there are always some special features and special cases. And it is wonderful that there is such a variety of solutions for various cases, and you can not just kick a person away, but give something that suits him better. Only one moment, unfortunately, is usually forgotten in all this idyll: QUALITY DO NOT TALK. I repent that I wrote little tests. But it is necessary to strictly distinguish taste from production errors, especially at the design stage. Quality cannot be compromised - this is where you can truly occupy your inclinations as a perfectionist and get cool about it. Well, yes, you have to rewrite it once, maybe twice, it can break the API. But I believe that, in general, it is useful for both the person and the project, if approached wisely. Anyway, the conclusion I made for myself - “everything has my own niche” - helps me everywhere. I can say for sure that life has become easier. When you begin to communicate normally with people, you begin to notice that many people really want to help and begin to appreciate this help and relationships.

Relations


And people respond. Probably for me it was most valuable. I met and maintain contact with people who are really interested in what they are doing. There are few, and even fewer with whom you can build relationships. Anyway, opensource gives such an opportunity and slowly a team is typed to stir up something really cool. And what other alternative is there? If I really want to invest in what I'm doing, and not just rotting at the headstock, copying the next CRUD or interface form.

Benefit


Sensitive subject. I feel that not everyone will like what I write here, but I must say that I do not like it and I do not agree to value everything with money. Money is good, but just not first. Nowadays, the emphasis on money, prestige and other external things is too shifted. It seems that there is no longer any difference how to mine them, if paid, it means good. This is precisely what leads to the fact that the quality is lost, a beautiful candy wrapper remains, but the meaning is lost.

At the beginning, I also thought that now they would sacrifice and live for me, but then the priorities changed. By the way, over 3 years of development, they gave me 3500r (Russian rubles, KARL!), Of which 3000 was given by one good person, to whom I am very grateful. Not much. But above, I wrote a lot of values ​​that I acquired during the project development process. One more thing I forgot to say about - I had a lot of job offers from various companies, small and huge. If you want to find or change jobs, then opensource is a great way to tell about yourself. So in general, I think it is profitable. Just decide for yourself what is important to you and set priorities. I didn’t want this to become a regular work, so I didn’t put emphasis on it. I like another opensource, what it is - openness, freedom, ideological, enthusiasm and movement. I probably would have shaken and would not dilute with money. Although maybe I do not know how to cook. Maybe Sitnik will teach.

Source: https://habr.com/ru/post/451044/


All Articles