Sponsorship
If you, or someone you know, is interested in sponsoring the newsletter, please reach out at console.substack@gmail.com
Not subscribed to Console? Subscribe now to get a list of new open-source projects curated by an Amazon engineer in your email every week.
Already subscribed? Why not spread the word by forwarding Console to the best engineer you know?
Projects
mantine
Mantine is a react components and hooks library with native dark theme support focused on usability, accessibility, and developer experience.
language: TypeScript, stars: 3670, watchers: 28, forks: 196, issues: 26
last commit: January 08, 2022, first commit: January 07, 2021
social: https://twitter.com/mantinedev
repo: https://github.com/mantinedev/mantine
pico
pico is a minimal CSS Framework for semantic HTML.
language: SCSS, stars: 3602, watchers: 35, forks: 90, issues: 35
last commit: January 01, 2022, first commit: November 27, 2019
social: https://picocss.com/
repo: https://github.com/picocss/pico
log4jscanner
log4jscanner is a log4j vulnerability filesystem scanner and Go package for analyzing JAR files open-sourced by Google.
language: Go, stars: 1336, watchers: 14, forks: 92, issues: 7
last commit: January 07, 2022, first commit: December 28, 2021
social: https://twitter.com/GoogleOSS
repo: https://github.com/google/log4jscanner
The Console Career Service
Want to make more money for your work? Let us find you a new, higher-paying job for free! We’ve already landed 2 Console readers direct first-round interviews. Sign up for The Console Career Service today! The benefits of signing up include:
Automatic first-round interviews
One application, many jobs (1:N matching)
Free candidate preparation service
New opportunities updated regularly
All roles, from PM to SWE to BizOps
High potential, venture-backed, and open-source opportunities
Even if you’re not actively looking, why not let us see what’s out there for you?
Sign up for free in less than 5 minutes👇
An Interview With Vitaly of Mantine
Hey Vitaly! Thanks for joining us! Let’s start with your background. Where have you worked in the past, where are you from, how did you learn to program, and what languages or frameworks do you like?
I’m a full-stack developer based in Moscow, Russia. For the last 5 years I’ve been working at Align Technology. I’ve learned programming on my own in about 3 years while being a student at Moscow State University. Then I got my first job a week after my graduation. I’ve tried a lot of languages, including Ruby, Go, Python, Haskell, but really enjoyed working with JavaScript and lately TypeScript. At work and in my personal projects, I mostly work with TypeScript, React, and Nest.js
Who or what are your biggest influences as a developer?
It’s hard to tell, usually I do not focus on one opinion, and instead I evaluate everything based on my experience. In other words, I almost always prefer to try things out on my own rather than following guides from smart people, this is the most fun part of programming for me.
What's an opinion you have that most people don't agree with?
TypeScript strict-mode is not worth the effort. It brings too much noise, code becomes less readable, and it will not help with the real threat of getting a malformed server response.
What’s your most controversial programming opinion?
CSS libraries that are based on utility classes is the worst thing that’s happened to the industry so far.
What is your favorite software tool?
The tool I use the most is GitHub, it’s perfect, and I cannot imagine building any real application without it. I also admire what engineers from Figma have built, although I do not use it too often, I’m always fascinated by how such a complex app was built to run in-browser.
If you had to suggest 1 person developers should follow, who would it be?
I really enjoy reading Cory House tweets about testing and React.
If I gave you $100 million to invest in one thing right now, where would you put it?
In the gaming industry, it evolves so quickly and there is always room for improvement. I dislike recent monetization trends as a gamer, but they work really well, and I do not doubt that this investment will pay off.
Would you invest in making your own games, or invest in one of the game studios?
I would invest in well established companies like Activision Blizzard or EA, they really know how to take every last penny from people. Developing even one modern AAA game that will stand out will definitely cost more than $100 million, so that's the safest bet.
What are you currently learning?
Currently, I’m learning Ruby on Rails and Postgres, this will help me participate in more projects at work. Next year, I’m planning to learn d3.js to build a charting library.
What have you been listening to lately?
I’ve recently discovered the world of Japanese music, I like Ado and 9mm parabellum bullet
How do you separate good project ideas from bad ones?
I do not start the implementation or planning of a project until I’m confident that it’s good. When I get an idea, I put it in my backlog, revisit it several weeks later and evaluate it one more time. During this time off, I can think about the project in the background and decide if it’s good or not.
Why was Mantine started?
It may seem that there are countless options in React components libraries world, but really there aren’t: some libraries are hard to customize, some are bonded to a specific design system, others are not maintained anymore. I’ve always struggled when I was working with other libraries, and it was easier for me just to build components from scratch. My idea with Mantine was to build a library that is highly customizable and can satisfy almost any design requirements. And it worked out really well, I have 5 big projects at work with very different designs and Mantine fits perfectly in all of them.
Where did the name for Mantine come from?
I’ve enjoyed Pokémon games since I was 5 years old, so I’ve named it after Mantine. I like the name and hope that Nintendo won’t force me to change it, like it happened with jade (pug).
Who, or what, was the biggest inspiration for Mantine?
I love sharing my work, and I’ve always wanted to build a big project that will be used by a lot of people. This is the biggest thing that inspires me to work on open-source projects.
Are there any overarching goals of Mantine that drive design or implementation? If so, what trade-offs have been made in Mantine as a consequence of these goals?
Yes, my biggest goal with Mantine is to make its codebase as simple as possible to allow people with different skill levels to contribute to the project core. The trade-off is that we have to keep the abstraction level as low as possible – most of the components and hooks code should be understandable outside of the project context. So far, this has paid off really well, the project received contributions from more than 50 people in about 6 months after initial release.
What is the most challenging problem that’s been solved in Mantine, so far?
There are three things that immediately come to mind.
First is focus management with arrows in the Calendar component with multiple months (code, demo) – it may seem like a simple thing to do, but it took some time to organize logic with refs and DOM nodes to make it possible.
Second is use-focus-trap hook. It’s hard to get focus trapped and preserve good UX as Safari, Firefox, and Chrome handle focus behavior differently in many cases – some browsers will scroll to the focused element, others will cancel animations to display the focused element as soon as possible. I’ve tried about 10 different solutions before I achieved the current (still not perfect) results.
The final one is building a css-in-js library on top of the emotion (@mantine/styles) package. Initially, Mantine was built with react-jss, but we’ve decided to migrate it to emotion to support more features and simplify server-side rendering. The problem was that emotion did not support all the features we needed, and we had to build our own wrappers (createStyles, Box) for that.
Are there any competitors or projects similar to Mantine? If so, what were they lacking that made you consider building something new?
Yes, component libraries are a pretty competitive market. Most of the libraries are focusing on solving one small set of issues, while I want a single well-maintained and battle-tested library that will help me build an application at all levels, starting with a styling solution and including some situational components that may be useful. That’s why, apart from the component library, Mantine also offers a library of 40+ hooks, notifications system, prism integration, rich text editor and many other features. I think this is a good starting point, and I haven’t seen such a huge set of features in any other library, but still, it feels like we’ve just scratched the surface and there are a lot of new components and hooks that I would like to add to the library.
What was the most surprising thing you learned while working on Mantine?
The amount of time some people would like to devote to contribute to Mantine. One of the largest contributions that we’ve received on early stages of development, revamped all our development scripts and migrated the build system from webpack to rollup. It’s huge work that would take me at least a week of research and development, so it was a very pleasant surprise to find out Elon decided to devote so much time to contribute to a project that just started (we’ve had less than 1000 stars at that moment).
What is your typical approach to debugging issues filed in the Mantine repo?
I use Storybook to find visual bugs, usually it ends up in adding background-color or border to elements that do not work as expected. For behavior-based bugs, I set up a separate story in Storybook and fix it in isolation.
What is the release process like for Mantine?
We keep it very simple. Currently, we have 12 packages that are published to npm registry all at once with the same version. We usually work on minor releases for 2-3 weeks and when there are enough new features, a new release is published with this npm script.
Is Mantine intended to eventually be monetized if it isn’t monetized already?
I cannot think of anything meaningful at this stage of the project. First, we need to get an audience and build a strong community, after that, we can think about monetization.
Any thoughts on potential avenues for monetization in the future?
I think we will just have an Open Collective account where people would be able to support Mantine development. Currently, I do not see a way to make somewhat meaningful from open-source, so I'm not that excited about any monetization ideas.
How do you balance your work on open-source with your day job and other responsibilities?
Here is how it was before Mantine was a thing: I get a task to build a website, nothing hard, just a landing page and 3-4 other simple pages. I would spend 3-4 days building it and then move on to the next project. How it is with Mantine: I’ve received a Figma mockup in the morning and the website is live on staging environment before lunch. Everyone is happy, and I get some time to work on Mantine. So, I would consider Mantine to be a part of my full-time job, although I enjoy it so much that I also usually work on it during weekends
Do you think any of your projects do more harm than good?
Every so often, I think that some Mantine features can demotivate some people to learn CSS, but I try to explain that CSS is still a requirement for a productive developer if people reach out.
What is the best way for a new developer to contribute to Mantine?
We are always happy to receive contributions, anyone can propose a new feature on the Discord channel or via GitHub issues and work on it. We are also encouraging active community members to become maintainers to work on the project regularly.
If you plan to continue developing Mantine, where do you see the project heading next?
More features, more components, more hooks. Ideally, you would not need to install any other UI components and hooks if you are using Mantine – my goal is to include a wide range of components that can be used to build the majority of applications.
What motivates you to continue contributing to Mantine?
The community that is growing around it. I’m always very pleased when people show their projects built with Mantine. I also just enjoy writing code and taking complex challenges.
Are there any other projects besides Mantine that you’re working on?
Yes, I’ve released Omatsuri last year, and also I work on a small application that helps me manage my personal and family budget (it’s not open-source).
Where do you see software development heading next?
I’m excited to see how Rust is taking over JavaScript tooling and hope this trend will continue.
Where do you see open-source heading next?
I think we will be seeing more and more companies growing around open-source projects, the same way as Next.js, Gatsby, Remix, etc.
Do you have any suggestions for someone trying to make their first contribution to an open-source project?
Pick a mid-size project with <100 issues that you like, then you’ll have a great chance that your PR will be noticed. Large projects are usually too complex to contribute, and your contribution may be unnoticed for some time.
What is one question you would like to ask another open-source developer that I didn’t ask you?
How do you promote your open-source work?