Episode 278  on December 3, 2018Behind the Screens

Behind the Screens with Jacob Rockowitz

From YAMLForm to WebForm, Jacob spearheaded the port of Drupal's most popular form builder into D8.  Why take on such a task? When is the first stable release? All that and more as BTS returns! 

Transcript

Chris:
Today, I'm going behind the screens at DrupaCamp Atlanta with Jacob Rockowitz. Jacob, most people know your name from Webform. Moving that from Drupal 7 into Drupal 8. So, tell us a little bit more about yourself, how you got into Drupal, and how are we with Webform these days?
Jacob:
Okay, I'll give you a three year chronological. No, there's a three year history to Webform for Drupal 8, but there's four years, because my primary job is with Memorial Sloan Kettering Cancer Center, and they did an early adoption of Drupal 8.
Jacob:
I can actually say, they were the largest early ... They had a 20,000 or 30,000 page site. It was that range site, and we started on alpha version, and we launched on a beta. So, we were one of the earlier adopters, so we had this challenge of there weren't a lot of modules. We went live with eight contrib modules, and like half of them reported over by us.
Jacob:
The history of Webform was we ran into that problem. We were like, we need Webforms for clinical to do, you know, appointments, collecting data feedback, it was a key requirement, and Webforms hadn't been ported to D8.
Jacob:
We went back and forth with how to solve it, and I came up with this MVP solution, which was called YamlForm. Where it's like ... The key behind that whole concept was if you remove the UI from building a form, and just make it a simple text file, it becomes a lot easier.
Jacob:
Because, I've spent most of my work on Webform for D8 on the UI experience. Like, 60% of the energy is just toward UI. So, once we did that, we had this simple way to just say, type out the form and build some extra code to process it. We had this ... That was not the code I released. They were on it for like two or three years, and it took me a year to be like, okay, I should contribute this back.
Jacob:
Three years ago, I contributed back YamlForm. The date, this is where we're going to get to, where we are now. The date was like Christmas Day. I remember we were hitting the break, and I was like, I have three days to play with this. So, I started framing it out. I was like, okay, I'll stick the code up and see what happens, and I worked on YamlForm for an entire year.
Jacob:
This is great, I don't know the issue queue number, but there's this great thread where people ... I like the name, but it's a bad name. I literally had people, marketers from Acquia would be like, “Can we change the name of this, because I can't really tell my clients it's called YamlForm? Can we call it something else?”
Jacob:
You know, Webform. There's this great ticket, because it came a debate. What should we call this thing? Someone weighed in, and they weren't even really nice about it. They were like, “Oh, we should just call it Webform, because it's not ported.”
Jacob:
Their approach wasn't great, but they made a valid point, and then Quicksketch got involved in the thread and said, “You know what? The truth is, that makes sense. This has reached a point where we're close to feature parity. YamlForm is close to feature parity with Webform, let's move it over.”
Jacob:
It worked out, where, literally a year into the project, so two years ago, we switched over. I just wrote a little quick migration from YamlForm to Webform, and we did it. We tagged a beta release.
Jacob:
The breakdown is that, literally, first year, YamlForm was in alpha, hit kinda beta. Then, we switched over to Webform, that sat in beta, worked on it a year. Then, a year ago, I tagged RC, and I had hopes ... Listen, in open source, it's like every step of the way, I'm going to get a stable release out by this date, and it's really funny. I'm like DrupalCon, I want to get ... Everyone says that.
Jacob:
I want to get this done by DrupalCon, and it just never happens. It just keep being like, “Well ... It just doesn't ...”
Jacob:
You know, like that Dries's old thing, it's ready when it's ready.
Chris:
Right.
Jacob:
That's true in open source, so it kept falling back, but now we're close. Just to get to the release [inaudible 00:03:36]. I want to try to release by Christmas Day, that's my goal, and we're at a point where enough people are using it, providing feedback, giving me ... I'm getting enough feedback, so I get the bugs early enough and can resolve them.
Jacob:
Then, people are also contributing other modules to Webforms, which is a key thing. Like, Webform Views and Statistics and Analytics, it's just awesome.
Chris:
So, that's great. Christmas Day will be the anniversary of when you first contributed YamlForms to the community.
Jacob:
Yep, absolutely. So, three years ago.
Chris:
Wow, so this is your new goal date to have a stable release? To get it out of RC?
Jacob:
Yes, absolutely. I think at this point, it's so close, that I'm okay with that. It'll be ready a couple of weeks before that day, but I think I'm just going to hold off, because it's like, Christmas Day, you do your family thing, and then you're, I got a couple of hours here.
Chris:
Right.
Jacob:
Also, you know what's good? One thing about that date, which is great, is not a lot of people are looking at their computers. So, I can just do it, not expect somebody to be like, “Oh, this is broken.”
Jacob:
People are vacation, so it's really like, you tag it, it's not going to be 'til January 2, that everyone's like, “Oh, yeah. This is great, we are using it.”
Jacob:
One thing to throw out there is hopefully a lot of people will move over to the stable release, because there's been a lot of releases. So, that creates a lot of ... Not technical debt, it's just like they're a little behind. You do run into some hiccups, so it's better just to get up to the stable release and developments going to shift.
Jacob:
It's a stable release. The goal is to remain stable and kind of focus on just fixing bugs, and not adding new features. I'm hoping to let contrib add the new features.
Chris:
Sure, yeah.
Jacob:
In a lot of ways, I think the big changes will be, someone will try to do something and contribute a feature and approach me, “We need a tweak to the API, to expose this [inaudible 00:05:29], to make it possible.”
Jacob:
Which, would be great. So, we'll just improve the code. Then, I have to think about what's next. It's a good question. I think taking a break is a good idea.
Chris:
Yeah, that's a long time to just be working on this one module. Basically, you work for yourself. You're your own company, but you've been working for the Cancer Center for how many years total, you said?
Jacob:
It's like 18 years.
Chris:
Wow.
Jacob:
Yeah, I had ... The forward to a lot of the Drupal books. Like, I remember the Drupal 6 book goes into I built my own custom CMS, and I got stupid. I wrote a case study when MSK when to Drupal 6, and my point was like, I was writing my own RSS feed parser, and that's stupid.
Jacob:
You're like, this doesn't make sense, and I convinced them. That was my argument to them. I said, look at this, we just wrote all of this custom code for something you go over to Drupal, and it's just there.
Jacob:
I mean, even like LDAP integration, I had to write custom LDAP. I'm just like, just ... Even if they don't have the module, they have code around that can help you. Even LDAP, a great example, we're not using the LDAP module. It didn't exist when we went live, but there's all this code out there.
Jacob:
It's so easy to go out and grab it, and write a little custom module to just get the job done. Just made life easier. So, yeah. If I say 18 years, the first eight to nine years was this custom CMS that I built, like old school ASP and ColdFusion, and then I got them over to Drupal 6, and we did a leap frog from Drupal 6 to 8.
Chris:
Wow.
Jacob:
Yeah, it made sense. The argument, it's ... Everyone's struggling with that. It's getting to Drupal 8, and figuring it out and doing the migration. But, I feel comfortable, and I'm pretty heavy into the code, that this promise of Drupal 8 to 9 not being so painful, it's true.
Jacob:
There's going to some pain points. My argument would be, when they do an update ... When they did an upgrade from 6 to 7, or 7 to 8, that's months of work. This isn't going to be ... 8 to 9 won't be two weeks, but maybe be three works of just QA. Just making sure your stuff works.
Jacob:
It won't be, you have to go out and start a new redesign of your site, which is huge.
Chris:
Oh, yeah.
Jacob:
I think that's going to change a lot of people's opinions. They just have to get over the hurdle.
Chris:
I think it feels like most of that is going to through what you've written as custom code, and removing the deprecated functions and whatever new APIs come up to that. Replacing some of your hooks, maybe, with the new APIs.
Jacob:
Yeah, it'll be some technical debt, where you're just like, there's no way to remove this ... There's no deprecation, you just have to fix it.
Chris:
Right, right.
Jacob:
Yeah.
Chris:
Yeah, not a complete rewrite, like 7 to 8.
Jacob:
Yeah, that's what we did. It's pretty much ... I think that's why Webforms had to start from scratch. That was the challenge with getting Webforms up to D8. It was a totally different system, and it required a rewrite.
Jacob:
Yeah, that's why I started a new module, because it was a whole different direction, initially, you had to take to get something working.
Chris:
Right, right. Yeah, it didn't make sense to take 7 code and try to write it as 8. It made sense to rewrite it using 8's APIs and 8's new structures.
Jacob:
Yeah, and we see that in a couple of modules, because I just went to the groups presentation. It's like, someone, instead of porting organic groups, they started the groups module in D8. They just have to start over and think it ... Even commerce guys, with commerce, it was pretty much a rewrite.
Jacob:
They know what they're doing, but they started over beautiful DA code for commerce. I got to give them a shout out. If you want to look at the most complex system with the best code, that stands out.
Chris:
Nice. I didn't realize the story went back so far with you, as like bringing, for a single client basically, bringing Webform to fruition for that one client. I guess, I maybe had just assumed it was just a passion project, or you just assumed that I'm taking this all on my shoulders just to do it.
Jacob:
Oh, no. I was really scared to ... I mean, in the notes, if you can find the issue, you should at it, because it was like, in this threat with Quicksketch, I'm like, I don't really want this responsibility, and he was really encouraging.
Jacob:
He kind of sets a bar. He's like, you can do it, and he set this tone of like, don't feel overwhelmed about it. You're doing it for free. That's important when you get pushed to far, people push you to far, you learn how to wrangle the issue.
Jacob:
You're like, I do this for free, I try to help everyone. I try to just direct ... If people are asking for general support, I try to help them a little bit, but then I'll route them to Drupal answers. Like, Drupal answers seems to be the best place for general support questions.
Chris:
That's great, actually leads right into my next question. Which was, I always like to tease out a piece of advice that you could give to somebody who might be facing a similar challenge to you, or something you that you've just figured out, sort of an aha moment. I think, being a maintainer, but a major module like this, it's very daunting for anyone who's thinking about putting a module out there into the ecosphere, ecosystem, Drupal-sphere.
Chris:
But, we'll make up new words. Why not.
Jacob:
I mean, I have a lot of ... I had to think. I've thought about it a lot. I've read about it every once in a while, but there's a couple of things ... Also, I think when you approach open source, you have to figure out how you want to work and engage in the community.
Jacob:
Don't feel like when you see certain people ... Like, there's people who are just amazingly ... They're brilliant, able to jump from any piece of code to another piece of code, write a patch and move on, and that's a daunting concept. I'm personally overwhelmed by that.
Jacob:
I mean, I'm a skilled developer, but I like to just take one thing and focus on it, then I can resolve and fix things. My approach has been, for my module, is to say I'm only doing Webforms. I have some other modules I've written over the years, and I'm not touching them.
Jacob:
I've marked them all as needs co-maintainer, and I'm like, I'm going to do this one project, this is my commitment, and I'm setting some time limit. This is ... I've committed a lot of time for it, I'm aware of it, I have the resources, because I'm a consultant. It makes a huge difference.
Jacob:
Like, I've just made the decision to do this. For me, I've talked about, it's a professional decision, truthfully, and I use the word brand. It's like, because I needed, I had a resume that was kind of stale with 18 years experience at one company. Which, I don't think is a bad thing, but it creates a limited conversation when you go into an interview situation.
Jacob:
Like, what are you really ... The fact that I was able to do Webforms and I go can talk. Like, I never publicly spoke until I started doing Webforms. I just kind of got that ... You get comfortable, you do it and you learn a lot.
Jacob:
I mean, hands down, that's the biggest value you can get. You figure out what you want to get out of it, and you can do what you want in the community. You gradually move around.
Jacob:
Like, I've learned how to do speaking. I'm actually getting slowly involved in core. I'm working with the UX Team, just sitting in on the calls and trying to resolve some issues. It's just interesting to see how open source works. How all of these people come together.
Jacob:
So, I hope that answers it.
Chris:
No, absolutely. For me, I've been in the community 10+ years now. Learning how to contribute back or what's the way I can contribute back, not out of obligation, but out of a place I feel comfortable, and I think a lot of people probably feel that way. It can be very intimidating when you walk into a conference or a camp, and the big names that you see everywhere are standing around and talking, and like, oh, yeah, there's webchick, or there's jrock, he wrote Webforms.
Chris:
How to approach that, how to feel comfortable and confident enough to give back. So, I love getting those tips from people who have been in it for a long time. Like you said, Quicksketch, Nate, colleague of mine at Lullabot, he is one of nicest and most encouraging guys, who had a business through Webform. He had Webform dot com, and to be able to hand that over to somebody who had the passion to run with it I think shows a lot of his character.
Jacob:
Yeah, I mean, he gets he. He deserves a full shout out for his understanding of open source, his contribution, what they're doing in backdrop is amazing. Also, the thing I'm impressed by with backdrop is, besides code, it's there trying to build a certain type of community of governance.
Jacob:
It's a little different, that tries to address certain people's concerns, and it's a different product. It's a different approach, it's amazing. Like, yeah, he gets it. Contributing is more than code, that's the really important thing. You can't really just right code. Even though its welcome, and there are people who just write code. It's kind of amazing.
Jacob:
Like, I use the IMCE module and I gave a shout out, I have no idea who that developer is. Can't even figure out his name, and he's just contributed for 10 years. It's like in the top 40 modules. Every site that needed a file system uses IMCE, and his thing is, “I'm just writing this code.”
Jacob:
I think it works for me. I'm sure it helps him on his resume.
Chris:
Yeah, yeah.
Jacob:
Yeah, he's just like ... And, it's kind of a funny one, because it's a tricky one in the community, is Webforms is a glorious product to be maintaining, because people get it. You're like, builds forms. IMCE builds file systems, you can manage files with it.
Jacob:
There are other aspects of the community where its like, they're not so sexy, and it's hard to get people involved, or the momentum. Like, Rules did a great job of getting started, and now they've lost some of the momentum, because it's not as sexy as Webforms or Paragraphs.
Jacob:
It's even getting people to buy in. be like, it's valuable to help contribute to this. I think that's the other issue if you're a contributor, you have to figure out how you're going to support yourself as a company. I'm doing it because I consult, I can do that 30 hours a week, and then I have the other 20 to play around with.
Jacob:
But, a lot of companies aren't necessarily ... In the Webform issue, I tell people, look, that's great code, throw it up on dupal.org.
Jacob:
Like, some guy was doing a pie chart element. Who wouldn't want a pie chart element? I said, you should contribute it. He said, my company, I don't know. I'm going to keep bothering him to see if he can make the argument. I'll be like, make the argument that even if you put it up on Drupal.org, I'll look at the code.
Jacob:
Be like, that's just a sound pitch. If you put it up there, people will actually know exactly what's going on and are going to look at it.
Chris:
Right, you start to leverage the power of the rest of the community to help you find the bugs, or improve the code, or contribute to it. Provide suggestions. That's ... Yeah, I love having that kind of conversation, to help people get past that. To participate and engage in the community in whatever way they feel comfortable doing it.
Jacob:
Yeah, I think there's some mood, where they should ... As a community, we should figure it out. Even the legal stuff. What's the arguments for a company to contribute to open source. Even as a consultant, you can have a standard contract that just says, this works, and it be open source. This is what it means, this is the liability ... This is not the liability, which is kind of nice.
Chris:
Yeah, yeah.
Jacob:
And, I don't think companies get that. We don't have that vernacular in our ... Like, everyone has their own thing going on, and they do their own pitch. But, to get that ... I think it would be awesome. I always have a fantasy that open source needs standard agreements, like clauses that you can just use in your contracts. It makes sense. It's like open source everything.
Jacob:
Like, I create a comment to everything I do now, I just don't care, because it makes it easier. Other people can reuse my slides.
Chris:
Yeah, that's fantastic. This has been great. I want to take it and now turn it a little bit, sort of away from the code and the work, because I want to know a little bit more about you. The people who are making this happen. So, my go-to question, if you woke up tomorrow and found out the Internet was just gone, your computer can't connect anymore, it just doesn't exist, what's the first thing you're going to do?
Jacob:
Well, I went to art school, so ... And, I'm not going to say, oh, I would go back to being a painter or an artist, and I think people see it in Webform, but I like to tinker. So, if electronics went away, I would just tinker. I would create some project for myself, of renovating my house, or something just hands on.
Chris:
You might still have electronics, they just can't connect to another system.
Jacob:
What's the fun of that?
Chris:
Think of it like a little Arduino set, or ...
Jacob:
I know, but think about that. If you have a computer that can't connect to anything. That's like my kid on the phone when he's on the plane and can't really ... You don't have Internet access on the train. It's useless. It's just like, half the games don't work now.
Jacob:
So, unplugging is a really important concept, and I don't think anyone's good at it. We still haven't figured it out, but I almost want that. I have a friend, I like the concept of just not checking your email first thing in the morning. Even though I don't do it, I'm trying to. Not checking your email until nine o'clock.
Jacob:
Like, don't plug in ... I mean, I do all my Webform work, and this is a secret thing that people should takeaway, I do it all early in the morning. If you post an issue at five AM, you'll probably get me responding immediately, because I just do it.
Jacob:
Like, I wake up earlier, my family's all asleep, and I get an hour or two to kind of putter around, and my mind for some reason ... Some people's minds are engaged in the morning, some are not. I wake up and I'm kind of like firing at full speed.
Chris:
Yeah, I think that's a very common trend I've seen. I've read articles about this. That, typically, people are more apt to solve logic problems. Your brain is more geared toward a more analytical mode in the mornings, and then afternoon, it's just, the chemistry changes, and you're better at creative pieces. It's a generalization.
Jacob:
Yeah, but what does it mean, because in the programming community, people who program all night long.
Chris:
Right, yeah. Exactly, it doesn't fit everybody.
Jacob:
Maybe they're not writing the logic code, they're just writing the brute force [crosstalk 00:19:00].
Chris:
Solving the creative problems, and then, yeah. I don't know.
Jacob:
Yeah, at night you're like, oh, I got to do this repetitive task over and over again until two in the morning. Yeah, that does exist. I have that in Webform all the time, where there's like, I just got to go rename all these classes, and it's like, yep ...
Chris:
Yeah.
Jacob:
I have to actually ... One of the big tasks, I have to port all the SimpleTests to PHPUnit, and that is going to be a boring task. By the way, that might be the biggest pain point of going from 8 to 9. That deprecation's going to hurt ... Not hurt, but it's a reality that people just have to catch.
Jacob:
They got to rewrite all their tests, they got to redo them. Not redo them, but they go to port them.
Chris:
Yeah, yeah.
Jacob:
You know, people don't want to spend the time on the tests. But, all right, what's the next?
Chris:
If you could be any module in the Drupal ecosystem, what module would you be? I know the easy one for you is Webform, because you've lived it for so long.
Jacob:
I know. Well, it was yesterday, we talked, I was like, I'm very obsessed with it, so that becomes my focal point. Trying to think, yeah. I am a big fan of IMCE, because of the simplicity of it. It's like that ... It just does something really well that you need to do.
Jacob:
Yeah, I would say IMCE, and the other one that's in core is Content Moderation, but that's not a module anymore. That's a whole ... It's a module, but when you look at that and what they're doing ... I mean, blown away ...
Jacob:
Oh, you know what. I'll throw out there, Workspace, because that solves a problem that we've been struggling with for like the entire history of content management systems. The pitch of Workspace to me is the fact that you can stage entire sections of the site, and then publish it all at once. Like, little parts of your site. That use case, that going back to the presidential election, who's going to win? Hillary or Trump, and you have all the content there, and the fact that you have full control is just mind boggling.
Jacob:
That's an age-old problem in content management systems. The fact that Drupal's going to kind of nail it is huge.
Chris:
Yeah, I like it.
Jacob:
I'll go with Workspaces.
Chris:
I like that. That's a great one. So, finally, I like to wrap these up. If you could share a little gratitude or say thank you to someone who maybe gave you a nudge or inspired you along the way.
Jacob:
I mean, I think Quicksketch has been awesome in terms of handing the reigns over and helping out. Just encouragement. I have to thank the co-maintainer of Webform. There's a guy, Alexander, he's from Ukraine, so I can't get his last name right. But, he's been helping to co-maintain Webforms a little bit, and he's just a really brilliant high-level programmer, so he'll just step in and solve some of the more complex problems, or catch them. Like, access control issues.
Jacob:
And, he's also doing something, which I have no concept of how it's working, to be honest. Like, Webform Views integration, because it's a whole different ... Webform uses kind of a custom data structure, so you have to write a custom Views integration. He's got the Webform Views module, and he's just taking that load off my shoulders.
Jacob:
That would be 10% of the work I'd have to do on a ... If I had Webform Views integration in the Webform module, I'd have to maintain it, the tests, and he's just taken care of it. I thank him continuously for that.
Chris:
Excellent, and Jacob, thank you so much. I know we went a little bit longer, but it was a great conversation.
Jacob:
That's fine.
Chris:
I love getting into that. So, I appreciate you taking the time here.
Jacob:
Oh, I could chat forever. Yeah.
Chris:
All right, I'll let you get back to the Camp, man. Thank you.
Jacob:
All right, thanks.
Join the conversation
newsletter-bot