What project or projects do you maintain and what was your motivation for creating those projects and releasing them as open source software?

Over the years I created more than 10 open source projects. Were most of them were targeting Android.

The open source projects I created with the most users are:

  • https://github.com/mikepenz/MaterialDrawer
  • https://github.com/mikepenz/Android-Iconics
  • https://github.com/mikepenz/FastAdapter
  • https://github.com/mikepenz/AboutLibraries
  • https://github.com/mikepenz/Android-ActionItemBadge

If you created any of those projects, were they meant to solve a specific problem you faced, or were they born out of a larger opportunity you saw?

All of those projects were created because I faced a specific problem, and had the feeling it can be simpler, easier and more flexible than current solution, or the methods the framework offers you. Those missing features always came to my mind when working on projects. Trying to implement new stuff.

In addition I thought “let me give something back to the community”. Today most projects contain open source project, and so did mine. With all the projects I used

I always had the feeling that I should do the same, and offer others features / components they can use in their app without spending a lot of time.

Since then the motivation may shifted a bit. It is still very focused on giving back to the community and simplify the lives of other devs, but I have to add one very important thing.

Great open source projects with many users give the creator a lot of publicity, and he will be allow companies to get a feeling on what he is capable of. It’s like a portfolio with code samples so they can decide prior to contacting the him.

How has the project evolved since you first got involved or first released it?

I will just focus on the MaterialDrawer here as it has the longest history (and was my first open source project).

The main issue I faced in the beginning, was that there was no easy to use component offering you to implement a Drawer into your app, without needing to do theming, .. on your own. So I started this project called “HoloKitKatDrawer”. Back then it was just a BaseActivity you had to implement. Since then it evolved a lot, and got the MaterialDrawer which follows all the Material Design Guidelines, is tested on many different devices, and offers a lot of customization methods, and is very flexible. People came with many many requests, like RTL support or special use cases and I always tried to give them enough flexibility so they can implement everything they want.

How do you spend your time on those projects? (i.e. Developing, managing the community, triaging issues, etc.)

In the beginning all the time was spent into developing, but over the years it moved more into “answering questions”, helping beginners, solving issues, and keeping things up to date. The problem with many open source projects these days (especially on Android) is that you will always face a lot of “noob” questions, which do not have to do anything with your project. And especially if you try to do it like me, you will have to spend a lot of time to help those people too. Not only will you get those questions via GitHub, but also via e-mail and all the different channels these devs can reach you. (Facebook, Google Hangouts, Google Plus, E-Mail, …)

How would you describe the community around projects you participate in? What are your favorite and least favorite aspects?

Most of the users are just using the projects, and there is not a lot of feedback. But some rare users will really spend a lot of time and effort to improve them. I have seen it with the FastAdapter, and the MaterialDrawer as a lot of devs provides huge and great PRs which were merged in since then. The most favorite thing is when users are thankful and show you that these projects really helped them. It is also great if you meet students who used these projects and really look up to you and want to reach the same goals. The least favorite aspects is when users are demanding, and requesting stuff which either is not specific to the project, or makes no sense for the project, and if those users do not accept a “no” or that it will take time in some cases”

What keeps you involved in those projects? Do you have long term plans for maintaining your involvement?

The things which keeps me involved are in general the fact that I always try to solve and close all issues, and that those projects were created by me and I spent a lot of effort in them. So the least I can do is maintain them and keep them updated so users can still use them. The community around these projects, the users who use them, also push me to keep going. I met so many great and awesome people, and had the chance to work together a bit more with some of them. Open source connects people. And I want to keep this going on.

There is no real long term plan for those.

What is the most important thing someone submitting an issue or patch should know?

It really depends on the project. But the most important thing is to communicate with the main creator / contributors of the project. Especially if he plans to do a huge PR which might change some functionalities, or add new features. In most cases the creator of the project had a vision in mind, and some things will simply not fit into it. And there is nothing worse than a great PR, which can’t be merged in because it goes against the projects vision. Opening an issue for something like this and communicating first will prevent such problems, and improve the quality in general. An additional detail would be to just read a bit through the project and follow the code style.

What’s your development environment right now?

  • MacBook Pro 2016 - 15” - 512GB - running Mac OS Sierra 10.12.2 Beta.
  • Android Studio 2.2.2
  • Oh-My-Zsh as bash
  • And a lot of scripts

What was your first development environment? Do you miss anything from it?

  • Windows (don’t remember the pc)
  • Eclipse (no I don’t miss anything at all :D)

Where do you see the open source software community headed?

Very hard to say. I think especially in the area of Android, that people will keep open source going, as it is a main thought behind Android - Unix - …

Beginners will always try to do some tiny open source projects to improve their skills, experienced devs to simplify issues, simplify complex tasks, and also to enhance their skills.

And in the end it will always be, giving back something to the community. Do something for the community. Work and meet so many different people from all around the world.

It is something I would never want to miss.