All RPGs and Storygames by Tod Foley are now available at DrivethruRPG and RPGnow. Bring these games to your table!
Provides advanced number formatting and rounding options for
Integer would also work but doesn't make sense from my point of view, because the core formatters already provide everything needed for integers, I think. No rounding is needed.
This module provides integration between SMSFactor and SMS Framework.
Maintainers of this module are not affiliated with the SMSFactor company.Installation composer require drupal/sms composer require drupal/sms_smsfactor
This module provides integration between OVH and SMS Framework.
Maintainers of this module are not affiliated with the OVH Group.Installation composer require drupal/sms composer require drupal/sms_ovh
An interesting RPG related convergence happened this week. The incident brought into alignment the burgeoning spotlight of Actual Play entertainment, the continuing specter of character death, and the rising levels of toxic fan behavior. Yeah, I’m going to talk about some spoilers for a recent episode of Critical Role and the reaction it received, so spoiler warnings for any Critical Role fans that aren’t up-to-date.
In full disclosure, I do not regularly watch or listen to Critical Role. I’ve taken in some of their one-off episodes, but I haven’t had the time to take in the full series, either of the original Vox Machina campaign or the new Mighty Nein campaign. I do, though, have several friends who follow the show at varying levels of devotion, so I am peripherally aware of the show’s current events. I do know that I admire Matthew Mercer’s abilities as a GM and how he brings the game world around the players to life.
So, those that aren’t in the know are probably wondering what I’m going on about. Critical Role’s episode that dropped on July 12th included the death of one of the player characters. Most fans took to Twitter in shock and grief at the loss of a beloved character, but a large enough segment of the fan base decided this character death was justification to declare war on Mercer and the guest player, Ashly Burch. Thankfully, most of those attacks seem to have been drowned out by the support of fans, but it was enough of a problem that several cast members asked people to chill out and Mercer himself even commented on it from his own Twitter account.
Actual Play podcasts and streams are an interesting development in the hobby and Critical Role is probably the farthest-reaching example of the medium. For those unfamiliar, Actual Play refers to live or recorded game sessions that are then served up as entertainment. I’m sure that game sessions have been recorded as long as gamers have had access to video recording equipment, but it’s only in the last few years that this particular type of entertainment has started rising in popularity. The level of editing on Actual Play shows can vary from show to show, with some going for the authenticity of the game play to others editing down to just the narrative. Our very own Senda and Chris are both involved in Actual Play podcasts, with Chris being part of the Wednesday Evening Podcast All-Stars, while Senda is one half of She’s a Super Geek (where you can listen to the session of Masks I ran for the show last year).
Critical Role has been running since 2015 and the GM and the players are all professional actors, so the quality of roleplay and improvisation takes the entertainment to a different level. Their episodes are aired live, so get no editing, but with the level of acting talent the cast has, that almost doesn’t matter. As of their 100th episode last summer, the show had hit 68 million views. Whatever you think of the show, it’s done a great deal to spread awareness and interest in 5th edition D&D and RPGs in general. It’s brought the hobby to a far wider audience than I could have possibly imagined ten years ago.
Of course, the growing popularity of Critical Role and Actual Play podcasts brings up an interesting dilemma as strangers are invited to ‘watch’ a game being played as if it were a scripted show or movie. As much as I love being true to the narrative and leaning into the cinematic qualities of roleplaying games, we all know that games don’t always work out as neatly as a scripted show can. But if you’re recording your game as entertainment, your audience has expectations and that’s where things took a turn for the ugly for some of the fans of the show.
Character death, especially when it’s dramatic and tense, can be tough to deal with. Back in the day, I saw immature players have total meltdowns when a character unexpectedly died, and I’m sure others have similar stories. Even if you are mature enough to deal with it, it can still knock the wind out of you as you say goodbye to a beloved character you’d carried through so many other adventures.
Now take those emotions and give them to thousands upon thousands of fans watching/listening as the scene is being played out. They’ve become just as invested in that character as the player. If you want to see how deeply this affected fans, just take a Twitter stroll through #mollymauk and you’ll see the mourning of fans through both words and amazing artwork.
But add in a dash of toxic fandom. Take that sense of ownership fans develop for their favorite properties and combine that with the anonymity of the internet, creating the freedom to be a troll. You end up with a small, but not insignificant, portion of the fans attacking the very GM that has guided something they’ve loved for hundreds of episodes. Or attacking the guest player of the character they felt screwed up and didn’t do enough. Welcome to the internet age and the way toxic fans destroy that which they love.
Fandom devotion to the things they love is nothing new and doesn’t have to be destructive. At the dawn of the last century, letters from devoted fans helped convince Sir Arthur Conan Doyle to write Sherlock Holmes out of his previously established death and into more stories. In the late 1960’s to the early to mid 1970’s, Star Trek was saved by fans creating a thriving community around a canceled TV show, eventually convincing Hollywood the property might still have life left in it. In May of 2007, concerned fans sent 20 tons of various nuts to CBS in an attempt to save Jericho from cancellation. The studio begged fans to stop sending them nuts and renewed the show. I don’t think it had anything to do with peanut allergies, but who knows.It’s as if a whole wave of people saw or read Stephen King’s Misery and decided Annie Wilkes should be their role model on how fans treat the creators of their favorite thing. Share414Tweet73+11Reddit1Email
Entitled and obnoxious fans have always existed among the hordes, but the digital age of social media that we live in now has given these jerks an opportunity to have their vitriol heard in ways they never had before. Now we end up with things like Ghostbuster ‘fans’ forcing Leslie Jones to leave Twitter after a barrage of attacks. Or Kelly Marie Tran and Daisy Ridley from Star Wars both deleting their Instagram accounts because dealing with the trolls was getting to be too much. Or the whole Szechuan sauce debacle from Rick and Morty fans. It’s as if a whole wave of people saw or read Stephen King’s Misery and decided Annie Wilkes should be their role model on how fans treat the creators of their favorite thing.
While we definitely have some problematic corners of the RPG hobby, it’s weird seeing this particular type of problem of toxic entitlement happening here. Thankfully, this particular incident has been drowned out by waves of support from fans. You have to really dig to find some of the nastier tweets or posts about the topic, so most of what you’ll find are the cast or fan reactions to the hate.
It’s a weird place to be in, where a roleplaying game’s character death created a backlash from people who weren’t even playing the game. My final takeaway from this is to just remind people to not let your friends be this toxic type of fan. Remind them that ‘We don’t do that here’. And even if you’re upset at the direction something you love is going, don’t be that jerk. Don’t be an Annie Wilkes.
The timestamp range field what stores start and end datetime values as unix timestamps.
The work is in progress.
It's been 12 months since my last progress report on Drupal core's API-first initiative. Over the past year, we've made a lot of important progress, so I wanted to provide another update.
Two and a half years ago, we shipped Drupal 8.0 with a built-in REST API. It marked the start of Drupal's evolution to an API-first platform. Since then, each of the five new releases of Drupal 8 introduced significant web service API improvements.
In fact, I believe that this functionality is so crucial to the success of Drupal, that for several years now, Acquia has sponsored one or more full-time software developers to contribute to Drupal's web service APIs, in addition to funding different community contributors. Today, two Acquia developers work on Drupal web service APIs full time.Drupal core's REST API
While Drupal 8.0 shipped with a basic REST API, the community has worked hard to improve its capabilities, robustness and test coverage. Drupal 8.5 shipped 5 months ago and included new REST API features and significant improvements. Drupal 8.6 will ship in September with a new batch of improvements.
One Drupal 8.6 improvement is the move of the API-first code to the individual modules, instead of the REST module providing it on their behalf. This might not seem like a significant change, but it is. In the long term, all Drupal modules should ship with web service APIs rather than depending on a central API module to provide their APIs — that forces them to consider the impact on REST API clients when making changes.
Another improvement we've made to the REST API in Drupal 8.6 is support for file uploads. If you want to understand how much thought and care went into REST support for file uploads, check out Wim Leers' blog post: API-first Drupal: file uploads!. It's hard work to make file uploads secure, support large files, optimize for performance, and provide a good developer experience.JSON API
We had originally planned to add JSON API to Drupal 8.3, which didn't happen. When that plan was originally conceived, we were only beginning to discover the extent to which Drupal's Routing, Entity, Field and Typed Data subsystems were insufficiently prepared for an API-first world. It's taken until the end of 2017 to prepare and solidify those foundational subsystems.
The same shortcomings that prevented the REST API to mature also manifested themselves in JSON API, GraphQL and other API-first modules. Properly solving them at the root rather than adding workarounds takes time. However, this approach will make for a stronger API-first ecosystem and increasingly faster progress!
Despite the delay, the JSON API team has been making incredible strides. In just the last six months, they have released 15 versions of their module. They have delivered improvements at a breathtaking pace, including comprehensive test coverage, better compliance with the JSON API specification, and numerous stability improvements.
The Drupal community has been eager for these improvements, and the usage of the JSON API module has grown 50% in the first half of 2018. The fact that module usage has increased while the total number of open issues has gone down is proof that the JSON API module has become stable and mature.
As excited as I am about this growth in adoption, the rapid pace of development, and the maturity of the JSON API module, we have decided not to add JSON API as an experimental module to Drupal 8.6. Instead, we plan to commit it to Drupal core early in the Drupal 8.7 development cycle and ship it as stable in Drupal 8.7.GraphQL
For more than two years I've advocated that we consider adding GraphQL to Drupal core.
While core committers and core contributors haven't made GraphQL a priority yet, a lot of great progress has been made on the contributed GraphQL module, which has been getting closer to its first stable release. Despite not having a stable release, its adoption has grown an impressive 200% in the first six months of 2018 (though its usage is still measured in the hundreds of sites rather than thousands).
I'm also excited that the GraphQL specification has finally seen a new edition that is no longer encumbered by licensing concerns. This is great news for the Open Source community, and can only benefit GraphQL's adoption.
Admittedly, I don't know yet if the GraphQL module maintainers are on board with my recommendation to add GraphQL to core. We purposely postponed these conversations until we stabilized the REST API and added JSON API support. I'd still love to see the GraphQL module added to a future release of Drupal 8. Regardless of what we decide, GraphQL is an important component to an API-first Drupal, and I'm excited about its progress.OAuth 2.0
A web services API update would not be complete without touching on the topic of authentication. Last year, I explained how the OAuth 2.0 module would be another logical addition to Drupal core.
Since then, the OAuth 2.0 module was revised to exclude its own OAuth 2.0 implementation, and to adopt The PHP League's OAuth 2.0 Server instead. That implementation is widely used, with over 5 million installs. Instead of having a separate Drupal-specific implementation that we have to maintain, we can leverage a de facto standard implementation maintained by others.API-first ecosystem
While I've personally been most focused on the REST API and JSON API work, with GraphQL a close second, it's also encouraging to see that many other API-first modules are being developed:
- OpenAPI, for standards-based API documentation, now at beta 1
- JSON API Extras, for shaping JSON API to your site's specific needs (aliasing fields, removing fields, etc)
- JSON-RPC, for help with executing common Drupal site administration actions, for example clearing the cache
- … and many more
Hopefully, you are as excited for the upcoming release of Drupal 8.6 as I am, and all of the web service improvements that it will bring. I am very thankful for all of the contributions that have been made in our continued efforts to make Drupal API-first, and for the incredible momentum these projects and initiatives have achieved.
Special thanks to Wim Leers (Acquia) and Gabe Sullice (Acquia) for contributions to this blog post and to Mark Winberry (Acquia) and Jeff Beeman (Acquia) for their feedback during the writing process.
Though it seems like yesterday, Contenta CMS got the first stable release more than a year ago. In the meantime, the Contenta CMS team started using Media in core; improved Open API support; provided several fixes for the Schemata module; wrote and introduced JSON RPC; and made plans to transition to the Umami content model from Drupal core. A lot has happened behind the scenes. I’m inspired to hear of each new instance where Contenta CMS is being used both out-of-the-box and as part of a custom decoupled Drupal architecture. Both use cases were primary goals for the project. In many cases, Drupal, and hence Contenta CMS, is only part of the back-end. Most decoupled projects require a nodejs back-end proxy to sit between the various front-end consumers and Drupal. That is why we started working on a nodejs starter kit for your decoupled Drupal projects. We call this Contenta JS.
Until now, each agency had their own nodejs back-end template that they used and evolved in every project. There has not been much collaboration in this space. Contenta JS is meant to bring consistency and collaboration—a set of common practices so agencies can focus on creating the best software possible with nodejs, just like we do with Drupal. Through this collaboration, we will be able to get features that we need in every project, for free. Today Contenta JS already comes with many of these features:
- Automatic integration with the API exposed by your Contenta CMS install. Just provide the URL of the site and everything is taken care of for you.
- JSON API integration.
- JSON RPC integration.
- Subrequests integration.
- Open API integration.
- Multi-threaded nodejs server that takes advantage of all the cores of the server’s CPU.
- A Subrequests server for request aggregation. Learn more about subrequests.
- A Redis integration via the optional @contentacms/redis.
- Type safe development environment using Flow.
- Configurable CORS.
Watch the introduction video for Contenta JS (6 minutes).Videos require iframe browser support.
Combining the community’s efforts, we can come up with new modules that do things like React server-side rendering with one command, or a Drupal API customizer, or aggregate multiple services in a pluggable way, etc.
Join the #contenta Slack channel if this is something you are passionate about and want to collaborate on it. You can also create an issue (or a PR!) in the GitHub project. Together, we can make a holistic decoupled Drupal backend from start to end.
Originally published at humanbits.es on July 16, 2018.