JavaScript as the Core of WordPress

WordPress.com has been the testing and proving ground for WordPress development since its inception. While many initially rejected WordPress.com down as for novices and unprofessional sites, I was among the few explaining that if you want to see what WordPress will become, living on the cutting edge of WordPress development, get a site on WordPress.com and use it - constantly. As a testing community, what a great opportunity to not only do wide spread or limited and isolated testing of new features and development but the richness in breath and width of testing environments is exceptional. Testing out a new core programming environment on WordPress.com portends the future of WordPress in general. Be warned, self-hosted version users. If this works with WordPress.com, it is coming your way.

As for the specifics of appreciating this change in the core programming environment from PHP and MySQL to JavaScript with React and Node.js, this isn't a completely new approach. I've worked with many in the WordPress development community branching out versions of all Java, all Flash, flat databases, and other deviations. All of those failed for one reason or another, typically because there wasn't enough money, time, or support. With the command by Matt to reboot WordPress from the ground up, the flexibility of JavaScript is a clear choice, though one I'm anxious about.

I believe that JavaScript as a programming language is one that has stood the test of time. It is fairly easy and familiar to work with, and has grown to become a very robust programming language with AJAX, jquery, json, etc. I love the ability to tap into APIs with ease and that is definitely the future of WordPress. JavaScript libraries are used now with web browsers and computer operating systems as well as with many traditional software programs as everyone jumps on the cloud wagon. Having a single programming language across multiple platforms is sweet, making it easier for developers to cross fences in their work.

However, I do have some concerns.

The Cloud: Like millions in the world, I live and work on limited bandwidth. Throw a rock over a small hill beyond my home office and hit Intel, Nike, and some of the largest technology companies and their campuses, yet I live just those few technology-changing footsteps into the wilderness where fiber optic and high speed Internet doesn't wander. I'm not alone. Running WordPress with so much cloud-based technology, requiring it to be connected to the web, hurts my ability to develop and use it. Already I've clocked a significant reduction in page loading time once I hit the Calypso interface on WordPress.com, which speeds up as soon as I switch back to the Classic Interface. My students call Calypso "beep beep poop" as they wait for longer loading times on high speed Internet connections and deal with the frustration of the interface. While there are desktop apps that permit installing a virtual server with a node.js server setup (Automattic has released a Mac desktop version and promise a Windows/Linus app soon), many libraries require Internet connections, and I can't rely upon that connection in my personal and work life right now.

Learning Curve: Every web developer and designer worth hiring or paying must know JavaScript. Unfortunately, many don't. I teach WordPress in a state-of-the-art degree program at Clark College that teaches the fact that today's employable web designer must know code. Good code makes for better design. A smattering of JavaScript should be required, but this change makes it now a fundamental requirement. Get your academic hats on, folks. Classes on JavaScript are about to fill up. Specializing in Node and React? There be waiting lists soon.

Web Hosts are Not Prepared: Right now, Calypso is focused on WordPress.com as they have their own server environment, thus can control it. Is GoDaddy, Dreamhost, MediaTemple, and Web-Servers-R-Us ready to support Node.js, React, and JavaScript acting like client systems? Do they have the technology? Do they have the people who understand this technology? Automattic says that they will host the Node.js portion on their server, communicating through Jetpack WordPress Plugin, so web hosts don't have to support Node, but really? That could be a big burden. Will be interesting to see where web hosts play in these changes.

Security: Of all my concerns, this is the biggest. Every hacker in the world is fluent in JavaScript. JavaScript has been used for years to hack into everything and anything. Without strong server-level security and serious security assurances with a JavaScript-based program, I get nervous. Yes, there are many ways to to obfuscate information with JavaScript, prevent cross-site scripting issues, and protect the vulnerabilities that keep creeping up, but everyone now who touches WordPress developments must know well the best practices and security prevention techniques when programming, whether working with WordPress core, Themes, or Plugins. Add this to the learning curve.

The Calypso Interface

This spring my life and work was interrupted by the release of Calypso on WordPress.com. It began with a client calling me late one evening in tears, unable to figure out how to edit a post in which she put the wrong date of an event in by mistake. She couldn't figure out how to fix it because the interface changed. Now, this isn't a standard reaction to a simple interface change. The tears came from her frustration of not being able to figure out how to get to the Widgets to change the date there as well. Nothing was familiar and there was no "Click This to Get to WordPress Site Options" to guide her. I jumped on the computer and directed her to click My Sites.

I don't have any other sites other than this one. Why would I click that?

"Because" isn't a good enough reason, and ever since that night, it's the only answer I've had for some of the odd decisions WordPress.com developers have made with the Calypso interface. Seriously, I don't care if it is designed and developed with JavaScript. It's broken in so many ways, and this is what all WordPress users see. It is the reputation of the program, and right now, it is seriously confusing and broken.

Clients started calling, several a day until I sent out an email to all of them advising them of the changes. At an all day workshop, two students burst into tears trying to navigate the WordPress.com interface and one stormed out of the room, admitting she needed to cool off because she knows how to use WordPress as a beginner, but this was just too much for her. Students in my college course were also frustrated, lost, confused, and submitting assignments on the wrong sites because they couldn't tell the difference between the sites on WordPress.com. They started making jokes about "beep beep poop" and saying scathingly unpleasant things about WordPress, making my job more difficult to convince them that this tool, used by 25% of the web publishing market, was worth their time and effort to learn.

Remember, I specialize in working with clients and students new to WordPress, often seeing it for the first time. Without the history you and I may have with WordPress, their reaction to Calypso is usually one of misery, not joy and ease. I switch them to the Classic interface and they relax. It was disheartening and fascinating at the same time.

I stopped everything I was doing with writing about and publishing on WordPress to investigate, even though I was in the middle of a year-long WordPress educational project on my site, my legacy project. All went on hold to figure out what it was about the new interface that frustrated so many. While there was confusion from time to time as it shifted and changed over the development time, and I fear is is still not ready for prime time, this is what I learned from clients, students, the WordPress.com forum discussions, and through inquiries at the two WordPress Meetups I host monthly.

Too many clicks: What used to be a simple "fill in the form" now is a click or two to get to the form. To navigate in and around the interface, too many clicks does it take to move from writing or editing a post to changing a Widget or editing a Page. Over and over, people told me there are too many clicks or they couldn't figure out what to click to get what they wanted, so they clicked around looking. Still, too many clicks. Interface Navigation Confusion: People don't just publish, they publish then fiddle with their site. Many people change the header art after doing a series of articles for a fresh look, others need to switch to editing a Page to add the link to the post they just created as part of a resource list, list of articles, or whatever reason. The bouncing back and forth between the WP-Admin (as it is now officially called) and adding or editing a post is normal. The gap is that they can't figure out how to move smoothly between the two. On one version, they can hover over My Sites and see a menu of options. On another, My Sites takes them to the "new" Calypso interface, confusing them even more. It also opens to their site stats, something a few people like, but many find intimidating. There are three interfaces now on WordPress.com, though most think there are two. The Classic Interface is one, with the screens staying consistent in form, look, and navigation. There are two versions of the Calypso interface, the adding and editing interface and the backend interface. I've watched people get lost between the three, scrambling to figure out what is what, and where their next click is. My clients and students have learned 1) NEVER touch the link that encourages them to switch to the "new improved posting experience," and 2) NEVER click EDIT on a post so you can stay within the safe environs of the Classic Interface where things make sense, are clear and easy to find, and they say "I can breath again." I still hear people saying the latter in my classes and at WordPress Meetups. What Site Am I On?: In addition to navigation confusion, the lack of a clear identifier to indicate what site the user is on when using the Calypso interface is a common issue. My college students work on four different WordPress sites during the term. Since Spring 2015, it is common for the students to publish assignments on the wrong site. I've heard this from clients with multiple WordPress.com sites as well. Not long ago, the development team finally put the name of the site and its URL at the top of the column with the options, but I've found that people don't see it. They say they liked it when it was in the admin bar where their eye would see it at the top right corner immediately. Now they have to remember to hunt for it even though it is "right there in front of my face and I can't see it" as one student said repeatedly. Having the option to set the colors of the interface or at least change the colors of the admin bar would be a simple option to add to flag the interface to a specific site. Interface Design: I work with many people with vision impairment from age or otherwise and they can't see the controls on the Calypso interface. There isn't enough contrast between colors. Having worked with WordPress since 2003, it took me about three minutes to figure out how to make a post sticky. Never occurred to me to click the eye at the top of the screen. Not intuitive at all, but finding it under the Publish > Visibility as it was previously was also a bad placement as people just want to stick the post to the front page or a slider, not think about whether or not the post is visible.

I was surprised to find that quite a few of my clients were frustrated with the lack of modularization of the editing screen. Several of them rearrange the modules in a checklist order, categories and tags at the top, featured image, author (for multi-contributor sites), then publish. This forced them to do each thing before they hit publish. I experimented with that myself and found it was extremely helpful, something I wish I'd done years ago. Clients report they are now forgetting to add tags and categories (especially with them combined), forgetting featured images, and other design elements required when publishing. They report greater forgetfulness and editing after publishing than previously.

As mentioned in other points, the biggest problem is getting lost while trying to accomplish simple tasks. Just take a few minutes to check out the long, long discussions (arguments, debates, cries for help, pleadings, beggings) on the WordPress.com forums and you will see how painful this transition and implementation has been.

For clients using the self-hosted version of WordPress, I recommend that they stay with what they know for right now. Most already have accounts with WordPress.com for stats, Akismet, etc., as part of Jetpack WordPress Plugin, but they don't have time nor interest in seeing the interface change or learning new things. I understand, and appreciate that WordPress developers need to take that seriously into consideration as they design the interface.

For those using WordPress.com, which there are many, I teach them how to work with the three interfaces and give them the bookmarklet for switching back to the classic editor interface for their browser.

In general, I think converting the core of WordPress into JavaScript is appropriate for the changing times, but Automattic must also address the security issues and usability concerns I'm finding with my diverse group of students and clients. They, too, represent the diversity found on WordPress.com. We need to listen to their concerns as well as move into the future with exciting, new, and stable technology.