IMaskjs - 3 years in Open Source



It has been 3 years since I started working on the imaskjs library . Although opensource is an endless process, it can be said that, on the whole, the work is completed and moved to a sluggish bugfix. At the moment, I did everything I wanted, there are no other ideas, except for pee tests, but laziness.

It was not an easy way: many times I wanted to give up everything, and many times I thought that everything was already perfect. Now everything has calmed down and I can with a calm soul and clear conscience remember how it was and philosophize on the topic of whether it was worth it and why.


It all started with the fact that for work we needed a library to mask a variety of fields on a variety of forms. The format of the mask was given from an external system, validation was already on the backend, but this was not enough for insatiable testing. Few of us turned out to be existing solutions for masking. We fought with them for a long time, forked, finished, got bugs. As a result, we never achieved what we ideally wanted, but everyone agreed with what we have, and we forgot. But then it seemed to me that something was wrong here - in fact, it should be different. I saw so many places for improvements in the source codes of virtually all popular libraries, so why not write my own solution? It was terribly interesting to see what came of it, but the idea seemed insane. Now I know that fear of a new business is a good sign.

There is much debate about whether to write your bike or not. In my case, I was also not completely sure: after half a year ago, when I just started my development path in the company and was considered a junior, then nobody seems to need it, and it’s just a drain of time, nobody around writes anything like that, maybe it’s better to go to earn more money ... Yes, I leaked a lot of time, I didn’t appreciate it at work, and I didn’t earn money from it. But I'm sure it was definitely worth it. I wanted to talk about this.


Own project gives school naivete and carelessness, it is that feeling when you are completely absorbed in the process, your hands itch, your eyes burn and nothing else exists around. It was cool. Of course, I could not be engaged in the library all the time, as I understood it and it was not necessary - rather, you need to give the community time between releases to hear feedback and adjust the development vector. But as soon as I returned to development, that same feeling returned again, interest did not fade away and there was no reason to stop. Maybe someone was more lucky with the work, but my work quickly turns into a routine - the world of enterprise is pretty monotonous and dull. And the longer you stay in it, the more experience and more routine. Their projects save and help not burn out. Of course, this does not have to be opensource,

Personality and Society

I think communication and feedback is of great importance both for the project and for the development of the individual. 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’s difficult to grow. Also, the value of the project is difficult to evaluate alone. Previously, I wanted to think that I did not care about the opinion of society, I do not need anyone and this is not important. I would have sat on my mind, but fortunately the desire for fame and stars on the github turned out to be stronger. Fortunately, the matter was not limited to this. But when the opinions of others began, it meant a lot - if someone found flaws or started a bug, you start to fuss and try to fix it faster so that no one else sees - after 5 minutes, roll out a new version - but there are no tests, and it goes even further. And when you post an article, you can generally not fall asleep 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 another candy wrapper that 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 in a row, but from those who are really in the subject and who make maximum use of the capabilities of the library. The opinion of people is important, but this is just a working moment.

On the other hand, one should not overestimate the opinion of society. When you just start it all seems that everything is against you. Neither thank you, nor well done, only there it is not so and this is not so. I thought that I had done a great thing, I could have put my soul into it, and now everyone should admire, but in response only criticism. For me it was a sore point, I was not ready for such an attitude and at first I reacted rather sharply to the comments, trying to defend myself. Then I began to notice that people were kind of normal, that I didn’t understand them, I was somehow depressed, even apologized. But if there is no experience, then you will have to defend yourself at first, otherwise your hands may drop, and everything may end in nothing.

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

  • dude, why don’t you have the ability to display the mask out of the box only with the focus of the field?
  • why does your default date work only with the format, which is not the most common, but for others it is necessary to twist serialization?
  • Where to get the mask for the phone of Brazil?

The thing is that I, as a person, 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 absolutely everyone and that you need to 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 a slow death of the project. Nevertheless, for myself, I try to fix the needs of society, especially if they begin to repeat. But the solution is not necessarily a change in the library itself, it can be a sample code, a piece of documentation or a comment in the code. Just now, I’m thinking of adding examples of common questions to the documentation, like the ones above. But in the beginning I also reacted rather sharply to such questions, considering them inappropriate and somewhere possibly stupid. 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. Time has passed, but I still think that my library is beautiful, the idea and implementation is simply 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. It is unlikely that there can be a universal library for everything: there are always some peculiarities and special cases. And it is wonderful that there is such a variety of solutions for various cases, and a person can not only be kicked away, but given what really suits him better. Only one moment, unfortunately, is usually forgotten in all this idyll: QUALITY IS NOT SUGGESTED. I confess that I wrote few tests. But it is necessary to strictly distinguish taste from production errors, especially at the design stage. You cannot compromise with quality - this is where you can truly take your perfectionist inclinations and get cool from it. Well, yes, you have to rewrite it once, maybe two, it can break the API. But I believe that in general it is useful for both the person and the project, if approached wisely. One way or another, the conclusion I made for myself - “everything has its 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 a lot of people really want to help and begin to appreciate this help and relationships. One way or another, the conclusion I made for myself - “everything has its 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 a lot of people really want to help and begin to appreciate this help and relationships. One way or another, the conclusion I made for myself - “everything has its 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 a lot of people really want to help and begin to appreciate this help and relationships.


And people are responding. Probably for me it was most valuable. I met and keep in touch with people who are really interested in what they do. There are few, and even fewer with whom you can build relationships. One way or another, opensource gives such an opportunity and slowly a team is formed to stir up something really cool. What other alternative is there? If I really want to invest in what I do, and not just rot for the headstock, copying another CRUD or interface form.


Sensitive subject. I feel that not everyone will like what I write here, but I have to say that I do not like it and I do not agree to evaluate everything with money. Money is good, but just not in the first place. Nowadays, the emphasis on money, prestige, etc. external things is too biased. It seems that there is no difference how to get them, if they pay, that’s good. This just leads to the fact that the quality is lost, a beautiful candy wrapper remains, but the meaning is lost.

At first, I also thought that they would sacrifice and live for me now, but then the priorities changed. By the way, for 3 years of development, they gave me 3,500 rubles (Russian rubles, KARL!), Of which 3,000 were 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 development of the project. Another thing that I forgot to say about is that a lot of job offers from a wide variety of companies, small and huge, fell to me. If you want to find or change jobs, then opensource is a great way to talk about yourself. So overall, I find it profitable. Just decide for yourself what is important to you and set priorities. I did not want this to turn into another job, so I did not focus on this. I like the other opensource as it is - openness, freedom, ideological, enthusiasm and motivation. I would probably shake it and would not dilute it with money. Although perhaps I do not know how to cook. Maybe Sitnik will teach.

Also popular now: