Interview with Milan Šulc about Contributte and Open Source
Probably each of us occasionally uses a third-party component in our
application. You can search for the right one on Google or on the componette.org portal. And if you use
Nette there's a big chance you used a Contributte family component before. Both
Componette and Contributte were created by Milan Šulc aka f3l1× and this is an
interview with him.
Hi Milan, for those who don't know you. Could you introduce yourself a
little? I can tell on you for our readers that you're a member of the Nette
Core team, developer and maintainer of the componette.org portal and the main
coordinator of Contributte packages. Did I forget to mention something
important?
Hi Jan. You mentioned my open source activities, I'm still programming for
money also. :) We have a small business where we analyze network traffic and
write various provisioning tools. I also program some internal tools for
Tlapnet(ISP Alliance) and generally for providers of Internet and services.
Reading all of this I'm surprised that you have time for so many open
source activities. Do you have a daily schedule so you can find that time or do
you have the opportunity to work on open source as part of your
daily job?
Sometimes I wonder myself. I would say that Tereza, my wife, who cares
about everything except coding, has the biggest share. Without her, it almost
certainly would not work, for which I thank her very much. There are times when
she even forces me to go out because I haven't been to any IT event for a long
time. I wouldn't say that I have a timetable or some predefined schedule. Of
course, I always try to plan everything correctly so that everyone is happy.
The fact that I'm working on my own let's me set up a lot of things in a way
that's OK for me and I can decide how much work I can take on my shoulders.
Personally, I like to think that a man has only one reputation, so I do my
best to have it as good as I can.
Almost all of my open source activities, could be even as much as 80%, are
used directly in our or many other companies. Most of it is probably in Tlapnet,
which is the cradle of Contributte packages. Every package goes into production
or it's there for a long time. I must thank Tlapnet, because without them this
couldn't have been possible. Special thanks goes to Pavel Míča, who is
responsible for development and keeps always a good track of everything. We
consult and debug everything together so that we can use it with ease. And it
turns out that when it's easy to use for us, so is for others.
How did you manage to push some of the components you wrote in your job as
an open source packages?
Man, good question. In our company it was easy. There are three of us. Two
core developers and one person who solves everything except core code. We both
went through a number of companies and we are quite active in the IT community.
We use a number of open source tools, so we also want to contribute. We have
observed that many developers are already looking at how companies tackle open
source and whether they're active on GitHub or not. So we hope that one day we
will be interesting for them also. At NX1 we are not actively looking for new
people, because we do not have time for it and at the same time we do not want
to use HR.
In Tlapnet, Pavel has always said “We need it and it has to be coded”.
Where it will be published is only the matter implementation. Maybe someone
sends us a PR and then the profit comes. Someone has to code it anyway and
adding a README is a matter of minutes. At least it will make us document these
things. At the beginning I did some packages in my free time. Some were done
within Tlapnet, like Apitte. We gave it time and suddenly it started to make
more and more sense to us.
Have you been aiming this high with Contributte since the beginning? Today
there are nearly a hundred components and over a dozen of developers. Do you
have any plans for the future where you want to go with this group?
It may sound weird, but I always wanted to do something. I didn't know what
or where, but just something. So one day I could say, I built this and someone
can be proud of me. I got this from my dad I guess. And because programming is
the only thing that I can do I went with it. I've dropped almost everything so
I can have as much time as possible to program. Work is my hobby, and since
Terka (my wife) solves everything else, I can work, educate myself, or just
code 10–12 hours a day. Many years ago, there was an opportunity to do
something with Nette. The people were so scruffy, pessimistic and they were just
hating everything. When I came up with the first idea for Componette, the
reactions were not positive. Quite the contrary. I was quite disappointed.
I wanted to give up, but then I got mad and did it myself. I didn't ask
anybody. I just did it.
Even after that, the reactions were not very optimistic, but Componette was
just better than the original Addons portal. Just because it is fully
autonomous. Why I'm talking about it? The idea with Contributte was the same.
I didn't like the Kdyby/Console package, so I did Contributte/Console.
I didn't ask anybody and it went on and on. I made those packages just like
I wanted them. I never thought Contributte would be as big as it is now. I'm
not saying I haven't dreamed about it, but you know, you can dream of
everything. Contributte is now a giant project. A really gigantic project that
is constantly evolving. From the failures of others I've learned that I can't
do this alone. So I've started to think how could I bring more people in. Or
better, how to encourage them so they just don't bring their packages under
Contributte and leave them. I still don't know if I'm really succeeding
with it.
With more and more packages and people in the organisation there are many new
problems that I need to solve that weren't here before. Codestyle, writing
tests, documentation, choose CI, complexity of code, web, communication, tasks
etc. All of this must be kept in a unified way and that takes a lot of time. I'm
not saying that I'm not enjoying it, but suddenly I'm in a completely different
position considering that I have started with writing code for joy. And on top
of that all of this work is kind of invisible. Like, does anyone recognize some
deployment automation which will spare me hours of work ? Nope.
I can see the future in some sort of stabilization. Closer connection to
Nette. To have something like Nuxt and Vue is having. Nuxt is a framework on top
of Vue so you don't need to solve some things over and over again and when
something new comes to Vue, people at Nuxt are already aware of it and they're
consulting it in advance. So in the end it's easier to use for developers and
they are actively contributing to DX(developer experience). I would also like
to work closely with other companies. Scope of features in Nette is final. We
can't anticipate features like “Sign with Facebook” or advanced work with
cron there. So that's where I see the potential of Contributte. To build a
solid foundation of extensions so one can build almost any project out of it, be
spared of reinventing the wheel every time and focus purely on business. And of
course I have lots of other ideas but I won't tell them now so you have
something to look forward to.
Do you have any top 3 favorites from Contributte?
Well, I don't, I just can't decide. Contributte consists of more
organisations. For example Apitte which was done for easy creation of API and
Nettrine for easier integration of Doctrine ecosystem. It made more sense to
split it like this, because Composer doesn't have a good support for monorepos.
It requires certain hacks and I don't like this approach. We're now
consindering to squash Apitte back into one package because having installed all
Apitte packages is the most common scenario. I didn't knew that at the
beginning. There's always something fix or do better.
Where do you get your ideas? I know that you tinker a lot with Java,
Node.js or javascript frameworks. Do these communities inspire you? Can you
compare these different ecosystems? What do you like about the
JavaScript world?
In had many ideas in the beginning. I saw something and I thought I can
implement it better. You know, naive youngster. I'm quite systematic, I have
TODO sheets for everything. My idea list has about 150 items and I'm letting it
mature. Sometimes I was fed up with PHP, so I looked elsewhere. In NX1 we work
with Java, which I had at school. We write front-end in NW.js, which is similar
to Electron, so JavaScript and Node.js. I'm so glad we chose this. Clients like
it, we like to write in it. We chose Vue.js on UI and it turned out to be a very
good choice. Thanks to the fact the we're doing this for a longer period of
time, I got insight and dared to train under Academy 42. That was a good
experience.
I consider befriending ZEIT guys as a big shift forward with JavaScript for
me. Thanks to them, I understood the enormous importance of TypeScript, how to
finish things and use the lambda concept. I mean, how it works internally, so
implementing the ZEIT PHP runtime was much easier. From the JavaScript community
I mainly take the approach to finish things. Drop things as soon as possible.
It also has a dark side, everyone knows. Around JavaScript is generally a big
hype and it is quite normal for a mini library to have more stars per day than
all Contributte packages combined. That bothers me a little. 🙂
I've been trying to follow the Laravel community lately. Laravel is in the
Czech Republic overlooked. Maybe it's not a showcase of design patterns, but
the way the community presents itself is great. It totally got me and I want to
do it too. Of course, everything revolves around the author Taylor Otwell, who
can just sell it. In the good sense. Today when we want to write something in
Nette, we reach for Nette + Contributte, of course. If we want a reactive
frontend, we need a Webpack. But how to get him to Nette? Jirka Pudil wrote
something, but I know it, maybe you and who else? And when the project is
finished, where do we deploy it? In the Laravel world, there is the Laravel
Forge or brand new Laravel Vapor. This is something we miss a lot. Not everyone
wants to deploy an application using k8s or via FTP to Wedos. We need something
that will let us to it in 3 clicks and voila.
We can write it down, nothing prevents us. But in Laravel it is a part of the
whole platform. Everyone pulls together. I like it. I see a lot of space to
improve there.
You mentioned the stars on GitHub. But they do not feed a man. You
recently activated a donate program on GitHub. Would you like to get a budget
for several hours of open source development that the donators will pay for? Or
is it just a gesture that someone can support you in developing opensource
packages?
Sure. I wanted to pioneer the way to receive money without invoicing people.
Sometimes someone gets in touch and I want to work with that. I would like to
spend more time on Contributte and other projects which are getting mine and
I hope also other people lifes easier. I wouldn't have to hurry so much and
had more room to concentrate. I would like to see some money flowing through
GitHub donations so I can realize it. I believe everyone will profit from it.
Especially in Planette organization, I have been trying to prepare demo
projects that you can just take and start to build on top of it. This saves a
lot of time. Free developers will get an up-to-date stack with the latest
features in PHP and Nette/Contributte.
Contributte already has a couple of linked companies that are involved in its
way. For which I thank them very much.
There are many repositories in Contributte. Are you thinking of some kind
of promotion, like here on the blog? It seems to me that many people, even those
who have worked with the Nette Framework for a long time, are not aware of these
possibilities. Today a lot of things have been solved, but it's somehow hidden.
And counting that everyone will find it themselves is a huge mistake. In my
opinion, it's a quite interesting opportunity for novices who enjoy writing to
help promote new libraries and devstacks.
I'm already working on some promotion. Recently two articles have been
published, one on contributte/eet and other on Nettrine. More articles are on
it's way.
That's great and I'm looking forward to see more introductory articles,
I want to try Contributte/reCaptcha
soon so if I can, I'll try to write something about it. And I would like to
thank you for an exhausting conversation. I keep my fingers crossed so the
awareness of Contributte and other projects will grow. It is almost unbelievable
what can can be done in a limited time frame;-)
Thanks as well. I will be glad if we come up with something again. Whether
in Contributte, Planette, Academy42 or elsewhere. I believe there are great
things ahead of us.
More on Contributte packages can be found on contributte.org
You can support Milan on github.com/f3l1×
Sign in to submit a comment