Open Source Spotlight: Scrollify with Luke Haas

Luke Haas is the creator of Scrollify, a tool that allows developers to customize scrolling experiences on their websites. Users can create impressive scroll-snapping sites that dynamically respond to the end-users' scroll position on the page.

Luke is a Javascript developer specializing in React and React Native. He lives in London and maintains multiple open source projects on the side.

How did your open source journey begin? What got you started with Scrollify?

Back in 2014, I was looking for libraries that provided specific scrolling behavior. There were some libraries that were close to what I was looking for, but nothing matched my needs well enough.

I wanted something that simply assisted with the user's natural scrolling, and did so in a non-intrusive way, not disruptive or overbearing.

I didn't find it, so I decided to start developing one on my own. I had released a few open-source projects previously and I was keen to follow that up with something new.

In the early days of Scrollify, how did you find contributors? What were some things you could have done better?

Finding contributors was purely organic. Typically, they’re enthusiastic Scrollify users who have found a small bug or had an idea for a new feature.

I’m always grateful for a new contribution and they typically get merged, but I can be quite strict about what gets in. I have some fairly strong ideas about how Scrollify should and shouldn’t behave for an end-user and am keen to avoid any, what I consider to be, ‘dark’ UX patterns.

I think that scroll modification on websites can easily be misused. There’s a right way and a wrong way to go about doing it. What I consider wrong are things like blocking the user from scrolling or creating a delay, or something similarly unexpected.

I believe that when a user scrolls, they want to scroll, and because of that, that’s what Scrollify will always do.

In addition to this, there’s another side of things that I need to look at. Scrollify essentially has two types of users: an end-user who experiences its effects on a web page, and a developer who works with Scrollify’s API to implement their desired effects.

These are both users to me and I’m keen for them both to have a good experience. Especially because I believe the API side is sometimes neglected, and people rarely think about how someone is going to use the API.

Fundamentally, an API is no different from any other kind of interface, such as the ones we’re surrounded by all the time, like door handles, oven knobs or car indicator stalks. A book that goes into this with some depth is 'The Design of Everyday Things' by Don Norman. Often seen as more of a designer's book, I think this is important for programmers to read too.

How much time do you usually set aside for Scrollify?

I typically set aside a significant part of most weekends for working on projects such as Scrollify.

Unfortunately, I don’t get to spend as much time as I’d like on Scrollify as my other projects, such as RunJS. My other projects need attention too.

However, I am actively developing version 2 of Scrollify that I hope to release sometime in 2020. It’s a full re-write using modern JavaScript, and it will be dropping the current dependency on jQuery.

Dropping the reliance on jQuery is an easier step now that JavaScript has matured with the introduction of modern features that came with ES2016 and so on, and also now that we have tools like Babel that make it possible to transpile JavaScript down to older versions while giving you the option to define which browsers you want to support.

What are you learning right now? What do you want to learn next?

I’ve recently been learning Rust, as I’m interested in using it with WebAssembly.

I think the pairing of JavaScript with WebAssembly is going to be really interesting. It increases the viability of developing complex applications in JavaScript, as the more CPU-intensive parts can be offloaded onto a language that’s better suited to that kind of work, while JavaScript still gets to focus on the parts it does best, like UI.

Following this, I want to learn Elixir as I’m keen on functional programming and interested in its concurrency advantages.

When the going gets tough, what keeps you going?

I’ve worked on projects before that have not been successful. In this situation, I prefer to take a break or to move on to a different project.

There are always some valuable things to be gained from these situations, and every failure comes with a lot of new learnings.

How important is it for you to ensure quality? How do you ensure it?

I consider it very important. Scrollify is widely used and therefore it’s important to see that it works well on a broad set of browsers and devices.

Things have improved in recent years, with browsers becoming more standardized and the adoption of modern browsers increasing.

The first version of Scrollify supported Internet Explorer versions 7 and up. I’m glad that the usage of browsers such as this has dropped enough that I can reasonably end support for such old ones.

Browser support also has an impact on the complexity of the library. Scrolling, in particular, is an area that has had its fair share of cross-browser idiosyncrasies. This is one of the reasons why I find BrowserStack so essential for Scrollify's development.

Being able to easily see how Scrollify behaves on different browsers, different versions of those browsers and also devices is enormously helpful in ensuring quality.

How can software companies promote open source contribution—within and outside the organisation?

A good start would be for more companies to open-source parts of their software. There's often a reluctance to do this, but it can come with a lot of benefits. For example, it's a great way to engage with the developer community and also possibly find new talent—in addition, of course, to improving the quality of their code.

What does your average day look like? How does it compare to your ‘regular day job’ years?

I live and work in London, so my day typically starts with a commute that’s bearable and quick on a good day, and slow and uncomfortable the rest of the time.

For work, I’m typically hired as a consultant React developer at, most often, one of London's many start-ups. My days are usually spent immersed in the world of React and its vast surrounding ecosystem.

This is an area that’s buzzing with open source activity. Every week seems to bring new community-driven innovations, and that’s really great to see. The tough part is keeping up with it all!

What are your productivity hacks?

One thing I’ve found helpful in the past is just getting out of bed one hour earlier in the morning.

This is something I’ll do if I’m in the final stages of a project and just want to get it done. It’s not particularly sustainable, but doing it every day for a couple of weeks can give you a lot of hours of productive time that would have otherwise been wasted sleeping.

Other things I find helpful are to-do lists. I have to-do lists for each project, and they help me remember all the things I need to do. Then, when I’m working on something, the list items represent small chunks of value, that make my work style efficient.

Check out Scrollify on GitHub.

We ❤️ open source. Fill out this form to get free, unlimited access to BrowserStack for your project's testing needs.

(Responses are edited for clarity).

Recommended reading