Or if someone would start it already, tell me about it.
ComputerMinds.co.uk: Mobile first, later : 10 Steps for retrospectively making your Drupal site responsive
On April 21st, Google updated their mobile search algorithms to boost the rankings of mobile-friendly web pages, whilst conversely decreasing rankings for pages that have been designed only for large screens. This change is likely to have a big impact on many Drupal sites, and ComputerMinds have seen a surge in requests for retrofitting responsive themes onto existing Drupal sites.
Extended Sprints are a real thing and in DrupalCon Los Angeles they are in awesome sky-rise building for supreme enjoyment! If you are planning on coming to DrupalCon Los Angeles Extended Sprints for the week befoe DrupalCon Los Angeles, you can head to 601 South Figueroa Street. The building looks like this:
In my recent post (I give up on Google), a lot of people suggested using OwnCloud as a replacement for several Google services. I’ve been playing around with it for a few days, and it is something of a mix of awesome and disappointing, in my opinion.
OwnCloud started as a file-sync tool, somewhat akin to Google Drive and Dropbox. It has clients for every platform, and it is also a client for every platform: you can have subfolders of your OwnCloud installation stored on WebDav, *FTP*, Google Drive, Dropbox, you name it. It is a pretty nice integrator of other storage services, and provides the only way to use some of them on Linux (*cough* Google Drive *cough*)
One particularly interesting feature is the live editing in the browser of ODT, DOCX, and TXT files. This is somewhat similar to Google Docs and the only such thing I’ve seen in Open Source software. It writes changes directly back to the documents and, in my limited testing, seems to work well. A very nice feature!
I’ve tested the syncing only on Linux so far, but it looks solid.
There are two surprising issues, however: there is no deduplication and no delta-uploads. Add 10 bytes to the end of a 1GB file, and you re-upload the 1GB file. Thankfully the OwnCloud GUI client is smart enough to use inotify to notice an mv, but my guess is — and I haven’t tested this, but apparently OwnCloud doesn’t use hashes at all — that the CLI client would require a reupload after any mv, because it doesn’t run continuously.
In some situations, Syncany may be a useful work-around for this, as it does chunk-based dedup and client-side encryption. However, you would lose a lot of the sharing features inside OwnCloud by doing this, and the integration with the OwnCloud “apps” for photos, videos, and music.
The Android/mobile apps support all the usual auto-upload options.
A lot of people report using OwnCloud as a calendar server, and it does indeed use CalDAV. With a program like DAVDroid or Mozilla Lightning, this makes, in theory, a full-functioning calendar syncing tool. There is, of course, also a web interface to the calendar. It, sadly, is limited. Or shall we say, VERY limited. Even something like sending an invite is missing — and in fact, the GUI for sharing an event is baffling. You can share it with someone, they get no say in whether or not it shows up, and it shows up on their calendar on the web only (not on synced copies) and they have no way to remove it!
Sharing calendars is similar; you can hide the display of any one of your calendars on the web interface, but not of any calendars shared with you. Baffling.
I haven’t tested this yet, but there’s not much to test, I suspect. It can be shared with others, which I could see as a nice feature.
An interesting bookmarks manager, though mysteriously not with Firefox sync support. There is Chrome sync support, and a separate Mozilla Sync support, but it doesn’t provide cross-browser syncing, apparently.
It is designed to present an interface to music that is stored in Files. It provides an Ampache-compatible API, so there are a lot of clients that can stream music. It has very few options, not even for transcoding, so I don’t see how it would be useful for my FLAC collection.
Sort of a gallery view of photos synced up with Files. Very basic. Has a sharing button to share a link to an entire folder, but no option to embed photos in blog posts at a lower resolution or shortcut to sharing individual photos.
Notes, Tasks, etc.
I haven’t had the chance to look at this much. Some of them sync to various clients. The Notes are saved as HTML files that get synced down.
There is a very helpful page that lists all the sync clients for OwnCloud — not just for files, but also for calendars, contacts, etc. The list is extensive!
The two other Open Source options mentioned on my blog post were Kolab and Sogo, and there is also Zimbra which also has a community edition. The Debian Groupware page lists a number of other groupware options as well. Citadel caught my eye (wow, it’s still around!). Sogo has ActiveSync support, which might make phone integration a lot easier. It is not dead-simple to set up like OwnCloud is, though, so I haven’t tried it out, but I will probably be looking at it and Citadel next.
I always find that kind of task a little off-putting and difficult to tackle, but I was happy to see someone driving the project, since it does need to get done. Debian is potentially also in a position to help the upstream python community, because we have a pretty good view of what things are being used, at least within our own ecosystem.
I'm happy to say that i also missed one of the other great benefits of paultag's audacious proposal, which is how it has engaged people who already knew about debian but who aren't yet involved. Evidence of this engagement is already visible on the py3porters-devel mailing list. But if that wasn't enough, I ran into a friend recently who told me, "Hey, I found a way to contribute to debian finally!" and pointed me to the py3-porters project. People want to contribute to the project, and are looking for ways in.
So cheers to the people who propose audacious projects and make them inviting to everyone, newcomers included. And cheers to the people who step up to potentially daunting work, stake out a task, roll up their sleeves, and pitch in. Even if the py3porters project doesn't move all of debian's python infrastructure to pyt3 as fast as paultag wants it to, i think it's already a win for the project as a whole. I am looking forward to seeing what comes out of it (and it's reminding me i need to port some of my own python work, too!)
The next time you stumble over something big that needs doing in debian, even something that might seem impossible, please make it inviting, and dive in. The rest of the project will grow and improve from the attempt.
These apps are not directly affiliated with the event, so questions and support inquiries should go to Lemberg.
Thanks to Lemberg for their efforts!
The purpose of this blog post is to tell others how in one week I went from fruitlessly searching the Issue Queue, to contributing to Drupal 8 while interacting with core contributors...and how you can too! I did this by triaging Issues that had the Novice Tag with the help of Drupal Mentors and I documented the process along the way. There are a ton of Issues left to triage and core contributors need your help! So, if you have some experience with Issues and/or core, you can help us too!
How did I get to this point where I was triaging Novice Issues?
As a new contributor to Drupal I was directed to look at Issues tagged Novice to help out. And after looking at the first few Issues I was left befuddled and confused to the point where the only way to express my feelings was through a cat meme.
In the wake of my confusion I mostly drank vanilla frappuccinos and produced over-caffeinated curses about the long list of Issues to chose from, and my inability to contribute to any of them. This is when I turned to the Drupal community! I was able to lean on the help of senior contributors such as Aimee Degnan, Kristen Pol, and John Storey.
I would link them to an Issue and say “Ummm, what?”. With their help I was able to contribute to ongoing Issues like Installing in a non-English language fails for command-line installations , and adding a Beta Phase and Remaining Task template to “Rewrite the documentation of content_translation_entity_type_alter()” . I became very happy with my contributions and wanted to help more!
It was about this time, recalling my elaborate curses regarding the Issues queues, Kristen Pol pointed out an apprenticeship that Cathy Theys was currently offering regarding going through the Issue queue and triaging the Novice Tags. Conveniently, this is the exact thing I was calling for earlier that day! Cathy is a Drupal 8 Core contributor, Drupal Mentor, and overall Leader. She knows how to do the things and is patient enough to teach everyone how to do them. In the first week of working with Cathy part time I was able to: learn how tell if an Issue should have a Novice Tag, interact with fellow core contributors, and even become a mentor for the upcoming DrupalCon in LA! :-) If any of those things sound like something you’d like to do, stop reading right now and shoot me an email or ping me on IRC in the channels #drupal or #drupal-contribute, my IRC name is Patrick_Storey!First steps to triaging Issues
I started by learning what the “Novice Tag” stands for. Apparently it means “new contributor to Drupal”. This contributor could be an expert in their field, but merely just new to contributing to the Drupal project. This runs contrary to what I thought, which I assumed it meant a Task for beginners in the field like myself. This definition alone really cleared up worlds of understanding for me. So that’s the first thing one must learn, what we mean in Drupal when we say “Novice Task”.
After speaking with Cathy Theys about where we should start we decided to start with Issues that were "Tasks" because those are at a high risk of not being committable. Drupal 8 is currently in Beta. And some Issues are about changes that are not going to be in the current version of Beta. So for new contributors we decided it was best to only have them work on Issues that would get in the current version of Beta. I certainly didn’t want to work on an Issue, do it correctly, only to have to wait a year to see the results. I wanted to link it to others and brag about it now!
Luckily the Drupal community has already thought about what makes a good Novice Issue and created a handbook for common things to avoid and use in triaging Issues. The Novice Tasks handbook page documents what makes a good or bad Novice Task. With this powerful handbook at our disposal we are ready to triage Novice Tag Issues!How to search for Beta Issues with the Novice Tag
Start by searching for Novice Tasks in the Drupal 8 Issue queue This should produce a screen with these filters selected.
This information is to help decide if an Issue still has Novice Task(s) on it. Here are the steps I take when first reviewing an Issue:
- Read the Issue Summary, read the remaining Tasks, read the last few comments. Can you identify what the next steps are?
- Look for the comment where the Novice Tag was added. To do this use the browser find (control-f or cmd-f) and search for the +Novice note. Sometimes the Tag gets added and removed often, look at each scenario.
- What did the person say in their comment when they added the Novice Tag? Has the Task been completed already? If so, then there may be no other Novice Tasks for the Issue.
- Is the Issue Summary up to date detailing which Tasks have been done, and which Tasks still need to be done? If not this Issue will need an Issue Summary update before it remains a Novice Issue. You can do the Issue Summary update yourself following this documentation or Tag the Issue with a “Needs Issue Summary update” Tag, comment why it needs an Issue Summary update, and reference the documentation.
- Are the Tasks linked to a contributor Task document saying how to do the Task?
After reviewing the Issue I then decide if the Issue should have the Novice Tag on it or not.
- Compare the information you have gathered with the Novice Tasks documentation to see if this Issue meets the requirements for a Novice Tag
- A good way to see this is to review the Task or Issues to avoid for a Novice Tag documentation.
- If the issue meets the criteria of an “issues to avoid”, then the Novice tag should be removed.
- If the task in question that the Novice tag was added for meets the criteria of a “tasks to avoid”, then the Novice tag should be removed.
This can seem like a confusing thing to do at first, but feel free to ping me on IRC in the channels #drupal or #drupal-contribute, my IRC name is Patrick_Storey. After doing a few Issues together this process will become a lot easier to understand!Template for the removal of a Novice Tag.
When removing the Novice Tag, this is a good template to follow:
- Delete the Tag by erasing it from the “Issue Tags” section.
- Then leave a comment saying why, and cite the documentation to back up your reasoning. Such as below.
I am removing the Novice Tag from this Issue because [why]
I’m using this documentation as a source: https://www.drupal.org/core-mentoring/novice-tasks#avoid
- You should put your reason for removal in the [why] part of the above template
Sometimes there are things we can do to the Issue to keep the Novice Tag. Such as providing a Beta Evaluation or updating the Issue Summary.
- If a "Task" has been assigned the priority of “Normal” it should have a Beta Evaluation. You may perform a Beta Evaluation following the documentation on how to evaluate Issues.If you can not perform a Beta Evaluation at that moment,
- comment that it needs a beta evaluation, why (it is a Task of Normal priority) and reference the contributor Task documentation for how to do a beta evaluation in the comment.
- add the Tag: needs Issue Summary update
- update the Issue Summary, adding a remaining Task of "do a beta evaluation". To aid in this endeavor the dreditor browser plugin has a button for "Insert Tasks", which inserts a HTML table template. Place your cursor in the remaining Tasks section of the Issue Summary, then hit the “Insert Tasks” button. Then uncomment any table rows that you have noticed are remaining Tasks, especially the row to do a beta evaluation.
- Use Dreditor when starting a Beta Evaluation. This will provide you with the “Insert Beta Evaluation” button
- When you click the Beta Evaluation button you will get an output like this
- Be careful as some of the table rows in the template are not spaced out in a clear manner, there is an Issue opened for dreditor that is discussing a work around
- I put spacing for each new instance of a table row . This will result in the spacing to be like this.
- To properly fill in the form, uncomment the relevant rows and put why that row is relevant.
- If the Beta Evaluation results in the Issue needing to be postponed, remove the Novice Task because the Issue will no longer be valid for this version.
- Then hit save.
- If you are doing this for the first few times, or the update you did was a bit complicated, paste a link to your comment in IRC in #drupal or #drupal-contribute so someone else can check if it looks correct. Ping Patrick_Storey or YesCT just by typing their name when you say something in the channel. (If they are not in the channel, just post it to the channel in general, please do not ask anyone else specifically to check.)
Also see the contributor Task handbook page on how to evaluate if a Drupal core Issue is allowed in Beta for further guidance.Examples of Issues I’ve changed
Here is a link to one of the first Issues where I removed a Novice Tag: https://www.drupal.org/node/507502. In this example I removed it for having over 100 comments on the Issue, listed my reasons, and the source documentation I was using.
Here is a link to an Issue where the Novice Tag remained but I provided an Issue Summary update, and a Beta Evaluation: https://www.drupal.org/node/2478535. I kept the Novice Tag as this Issue had a request to update the patch to incorporate feedback from a review.Have any questions?
If you have any questions feel free to hop onto the Drupal chat on IRC in #drupal or the contribution channel #drupal-contribute, or come to the weekly “Triaging Novice Issues office hours” Google hangout at 2pm-4pm PST (21:00-23:00 UTC) on Wednesdays! You can add the Mentor Calendar directly to your Google Calendar to see notifications of when the office hours are! Or feel free to join the Drupal Mentors group to keep up to date with all Drupal mentoring!
The Installing Git series is a free series that walks you through the process of installing Git for the first time and/or updating Git to the latest release on both Windows and Macs.
Installing Git on Windows is pretty straight forward, you just download the "Git for Windows" installer, and step through the process.
On a Mac though:
* You might not have any version of Git installed
* You might have the version that comes with Xcode or the Command Line Developer Tools
* You might have the version from Apple as well as an official install
* Or, you might just need to update an existing official install
This series covers all of those scenarios to get you updated to and running on the latest release.
It also covers the basic Git configuration options you need to set in order to use Git effectively.
So, what are you waiting for? Watch them now! They're free!Tags: Gitplanet-drupal
Gunnar Wolf: Guests in the Classroom: Felipe Esquivel (@felipeer) on the applications on parallelism, focusing on 3D animation
I love having guests give my classes :)
This time, we had Felipe Esquivel, a good friend who had been once before invited by me to the Faculty, about two years ago. And it was due time to invite him again!
Felipe knows his way around the different aspects of animation. For this class (2015-04-15), he explained how traditional ray-tracing techniques work, and showed clear evidences on the promises and limits of parallelism — Relating back to my subject and to academic rigor, he clearly shows the speed with which we face Amdahl's Law, which limits the efficiency of parallelization at a certain degree perprogram construct, counterpointed against Gustafson's law, where our problem will be able to be solved in better detail given more processing abilities (and will thus not hit Amdahl's hard ceiling).
We’re excited to announce this talk, Content After Launch – Preparing a Monkey for Space on Wednesday, May 15, 2015 from 5pm to 6pm at DrupalCon LA!
So what’s it all about? Well, coupled with a silly metaphor, I’m going to be talking about what happens to content during various stages of a website build, from the initial kickoff, through the production, and well after launch. The talk will touch on:
- how all team members can get involved in the success of a launched website.
- setting and managing expectations for what it takes to run a site post-launch.
- everything you might have missed while focused on designing and building the website.
Come for the metaphor, stay for the juicy takeaways! Spoiler alert – there will be an abundance of monkey photos.
In one of our latest projects we developed a Facebook app which integrates with Drupal. Even though Drupal 7 has a powerful set of core tools to manage files and images, using it would unnecessarily overcomplicate a simple PHP app.
Drupal 8 is skipping through the betas and it won’t be long until we’re staring at a release candidate. With that in mind, i’m now taking the time to learn some of the key concepts that you’ll need to know as a day to day site builder using Drupal 8.Custom Config Entity Types
A custom configuration entity type referred to as a config entity for most of this article is a custom definition of an entity that allows you to provide a config class, validation schema and custom storage.
They'll have hundreds of practical usages during development custom development. To give some examples, core uses them for user roles, blocks, image styles and plenty more. Use your IDE to see what’s extending ConfigEntityBase if you’re interested.Creating Our Config Entity Type Schema
First up, lets define our schema. The schema allows us to say what fields our config entity should have and what type those fields should be.
At first, I dismissed the need for yet another module. I have always added the Google Analytics code straight into a template file in various other CMS and static sites I have been involved in over the years. Why do I need a module to do that? Well, you don't, but the Drupal Google Analytics Module does offer a lot more functionality that will make it worth your while.
The first thing you need to do, it you haven't is sign up for a Google Analytics account. It's pretty straight forward process.
Once you are signed up, the most confusing thing to me was the Account vs. Property vs. View:
I break it down like this. Account is the company or the owner. The Property is the website. The view is segmented data of the website. At first, you should have a default "All Website Data" view, but moving forward you may have an app and a website, or a view for different languages on the site like /en and /de.
At least 20 people helped push one or more issues forward in Montpellier, at the Drupal Dev Days Performance Sprint!
Here’s an overview of what we set out to do, what we did, and what the next steps are.The plan for DDD Montpellier
- Priority one: uncover the “unknown unknowns”, i.e. finding more performance issues.
- Priority two: Drupal 8’s internal page cache was enabled by default shortly before DDD Montpellier, so we should try to find edge cases where it breaks (where stale content is served from the internal page cache).
- Priority three: fix known performance problems, as well as those uncovered by the work done for priorities one & two.
We already know that certain things are slow, and we know how to fix them. But significant portions of slowness do not yet have explanations for, let alone precise or even rough plans on how to reduce the slowness.
The parts of Drupal 8 that are slow that we do not have a strong grasp on yet are the bootstrap phase in general, but also routing, container services and route access checking.
Berdir, amateescu, dawehner, yched, znerol, pwolanin and I did a lot of profiling, testing hypotheses about why certain things took a given amount of time, comparing to Drupal 7 where possible, figuring out where the differences lied, and so on.
Bits and pieces of that profiling work1 are in https://www.drupal.org/node/2470679, including patches that help profile the routing system.
In the weeks since DDD Montpellier, effulgentsia and catch have continued discussions there, posted further analyses and filed many more issues about fixing individual issues.2. Try to break Drupal 8’s internal page cache & fix it
So, Drupal 8 had the internal page cache enabled by default shortly before DDD Montpellier, with only a few known problems. Having many people to try to break it, using scenarios they use daily in their day jobs, that’s the ideal way to find any remaining cache invalidation problems.
Many tried, and most did not succeed in breaking it (yay! :)), but about half a dozen problems were discovered. See https://www.drupal.org/node/2467071.What we got done
We fixed so incredibly many issues, and we had more than twenty people helping out! Notably, fgm was all over class loading-related issues, borisson_ and swentel got many of the page cache issues fixed, pwolanin pushed routing/REST/menu links issues forward significantly, and we overall simply made progress on many fronts simultaneously.
We made Drupal 8’s authenticated user page loads several percent faster in the course of that week!
Most of the page cache problems that were discovered (see above) were fixed right at the sprint! There are 4 known issues left, of which one is critical on its own, one is blocked, and the two others are very hard.
(If you want more details, we have day-by-day updates on what got done.)
We currently have 11 remaining criticals with the “Performance” tag. Getting that to zero is our top priority. But many in that list are difficult.
If you specifically care about performance for authenticated users: less difficult issues can be found in the child issues of the Cache contexts meta issue. And for some least difficult issues, see the child issues of the SmartCache issue.
Generally speaking, all major issues tagged with either “Performance” or “D8 cacheability” can use a hand.
Hopefully see you in the queues! :)
It was impossible to capture all things we considered in an issue, that’d have slowed us down at least tenfold. ↩
DrupalCon LA is right around the corner! Woo hoo! I'll be there. Will you?
If this will be your first DrupalCon, I'd like to provide you with some ideas of how you can approach things. You have different options available to put together your Con:
Eddy Petrișor: Linksys NSLU2 adventures into the NetBSD land passed through JTAG highlands - part 1
Looking for documentation on how to install any BSD flavour on the Linksys NSLU2, I have found what appears to be some too-incomplete-to-be-useful-for-a-BSD-newbie information about installing FreeBSD, no information about OpenBSD and some very detailed information about NetBSD on the Linksys NSLU2.
I was very impressed by the NetBSD build.sh script which can be used to cross-compile the entire NetBSD system - to do that, it also builds the appropriate toolchain - NetBSD kernel and the base system, even when ran on a Linux host. Having some experience with cross compilation for GNU/Linux embedded systems I can honestly say this is immensely impressive, well done NetBSD!
Gone were a few failed attempts to properly follow the instruction and lots of hours of (re)building, but then I had the kernel and the sets (the NetBSD system is split into several parts which are grouped by functionality, these are the sets), so I was in the position to have to set things up to be able to net boot - kernel loading via TFTP and rootfs on NFS.
But it wouldn't be challenging if the instructions were followed to the letter, so the first thing I wanted to change was that I didn't want to run dhcpd just to pass the DHCP boot configuration to the NSLU2, that seemed like a waste of resources since I already had dnsmasq running.
After some effort and struggling with missing documentation, I managed to use dnsmasq to pass DHCP boot parameters to the slug, but also use it as TFTP server - after some time I documented this for future reference on my blog and expect to refer to it in the future.
Setting up NFS wasn't a problem, but, when trying to boot, I found that I managed to misread at least 3 or 4 times some of the NSLU2 related information on the NetBSD wiki. To be able to debug what was happening I concluded the slug should have a serial console attached to it, which helped a lot.
Still the result was that I wasn't able to boot the trunk version of the NetBSD code on my NSLU2.
Long story short, with the help of some people from the #netbsd IRC channel on Freenode and from the port-arm NetBSD mailing list I found out that I might have a better chance with specific older versions. In practice what really worked was the code from the netbsd_6_1 branch.
Discussions on the port-arm mailing list, some digging into the (recently found) PR (problem reports), and a successful execution of the trunk kernel (at the time, version 7.99.4) together with 6.1.5 userspace lead me to the conclusion the NetBSD userspace for armbe was broken in the trunk branch.
And since I concluded this would be a good occasion to learn a few details about NetBSD, I set out to git bisect through the trunk history to identify when this happened. But that meant being able to easily load kernels and run them from TFTP, which was not how the RedBoot bootloader flashed into the slug behaves by default.
Be default, the RedBoot bootloader flashed into the NSLU2 waits for 2 seconds for a manual interaction (it waits for a ^C) on the serial console or on the telnet RedBoot prompt, then, if no such event happens, it copies the Linux image it has in flash starting with adress 0x50060000 into RAM at address 0x01d00000 (after stripping the Sercomm header) and then executes the copied code from RAM.
Of course, this is not a very handy way to try to boot things from TFTP, so my first idea to overcome this limitation was to use a second stage bootloader which would do the loading via TFTP of the NetBSD kernel, then execute it from RAM. Flashing this second stage bootloader instead of the Linux kernel at 0x50060000 would make sure that no manual intervention except power on would be necessary when a new kernel+userspace pair is ready to be tested.
Another advantage was that I would not risk bricking the NSLU2 since I would not be changing RedBoot, the original bootloader.
I knew Apex was used as the second stage bootloader in Debian, so I started configuring my own version of the APEX bootloader to make it work for the netbsd-nfs.bin image to be loaded via TFTP.
My first disappointment was that Apex was did not support receiving the boot parameters via DHCP, but only via RARP (it was clear it was less tested with BOOTP or DHCP) and TFTP was documented in the code as being problematic. That meant that I would have to hard code the boot configuration or configure RARP, but that wasn't too bad.
Later I found out that I wasted time on that avenue because the network driver in Apex was some Intel code (NPE Access Library) which can't be freely distributed, but could have been downloaded from Intel's site back in 2008-2009. The bad news was that current versions did not work at all with the old patch work that was done in Apex to allow for the driver made for Linux to compile in a world of its own so it could be incorporated in Apex.
I was stuck and the only options I were:
- Fight with the available Intel code and make it compile in Apex
- Incorporate the NPE driver from NetBSD into a rump kernel which will be included in Apex, since I knew the NetBSD driver only needed a very easily obtainable binary blob, instead of the entire driver as was in Apex before
- Hack together an Apex version that simulates the typing of the necessary commands to load the netbsd-nfs.bin image inside RedBoot, or in other words, call from Apex the RedBoot functions necessary to load from TFTP and execute NetBSD.
Option 2 was more appealing, but since I didn't knew NetBSD and only tried once to build and run a NetBSD rump kernel, it seemed like a doable project only for an experienced NetBSD developer or at least an experienced NetBSD user, which I was not.
So I was left with option 3, which meant I had to do some reverse engineering of the code, because, although RedBoot is GPL, Linksys did not publish the source from which the running RedBoot was built from.
(to be continued)
The DrupalCon Los Angeles extended sprints start this Saturday, May 9, and the main sprint day on Friday, May 15 is just a little over a week away. I'll be leading a Drupal 8 Critical Burndown sprint to help get D8 done, and kgoel and cilefen will be leading a sprint to triage Drupal 8 majors. And we need your help! Sign up for the sprints now, or read on for more information on what we'll be doing and why.
Help fix the 29 remaining issues blocking Drupal 8's release
DrupalCon Munich contribution sprints. Photo credit: Pedro Lozano.
A release candidate for Drupal 8.0.x will be created once there are zero critical issues remaining. In the past six months, we've reduced the critical issue count from 130 issues then to just 29 issues as of today. This ongoing progress is thanks to the hard work of dozens of contributors.
Over these six months, we've held three focused sprints on critical issues: in Ghent in December, Princeton in January, and Dev Days Montpellier in April. The impact of each of these sprints on the critical issue count was clear: a focused sprint is the best way to get a lot of work done efficiently. Help us with the next burst of momentum! Come to webchick's "Plain Drupal English" guide to the remaining Drupal 8 criticals, and sign up for the Los Angeles critical issue sprint.
Help triage major Drupal 8 issues
900 reasons to get involved
Issues fixed during the Dev Days critical and performance issue sprint
The criteria for critical issues are very specific: the issue needs to be serious enough that we're not going to support Drupal 8 for any of the hundreds of thousands of sites that run Drupal without it. However, they're not the only issues we need to solve. Like most beta software, Drupal 8 still has plenty of bugs that need to be fixed, but that aren't severe enough to block release. Among these are the major issues, which are not a critical problem for every site, but still nasty enough to ruin someone's day.
Drupal 8 core committers assess each issue that is marked critical
Thee Drupal 8 core committer team systematically evaluates every single critical issue to make sure it's relevant and that it really should block release, but we don't have the resources to do this for major issues. Over the four years of Drupal 8's development, we've racked up nearly 900 major issues that are still outstanding. Many of these issues are still relevant and important to make Drupal 8.0.x more robust. However, many others are outdated; they might already have been resolved, they might no longer be relevant, or they might be candidates to postpone until 8.1.x or 9.x instead because they're no longer acceptable during the Drupal 8 beta.
This is where you come in! If you don't really see yourself helping with those 29 criticals, but you do have some experience with Drupal 8 and with core contribution in general, help us sort through these majors during DrupalCon LA. Take a look at the draft instructions for the sprint, and if you're up for it, put your name down for the major triage sprint in our sprint sign up sheet.Better faster stronger
Like I mentioned above, a lot of the major issues in the queue probably aren't relevant anymore, and fixing the rest is going to make Drupal 8 better. There's another reason to sort through them though: there might actually be some critical issues hiding in that queue. The average critical issue takes between 1 and 4 weeks to fix once it's marked critical. However, a third of critical issues start at some other priority before their significance is recognized. This is actually a big challenge for Drupal 8 release management: we can organize resources for the criticals we know about, but not for ones we don't. So not only does helping move majors along make Drupal 8 better, it might also get it ready faster.Maintainers wanted
Recently, Dries posted a new proposal on Drupal core's structure, responsibilities, and decision-making, which definitively established the role and responsibilities for core subsystem maintainers. We have lots of "vacancies" to fill. :) And it just so happens that triaging major issues triaging major issues for a particular component is a chance to learn a lot about that specific topic area and maybe to find your niche in Drupal core. We'll be organizing the major triage sprint into teams by subsystem so that each team has the chance to focus and build some expertise over the course of the sprint. Contributing to one patch will build your technical skills; contributing to the "big picture" through triage will build your understanding at a higher level. Participating in the major triage sprint is one way to explore what it would be like to be a subsystem maintainer -- and, as the Docker community has put it, maintainers are what distinguish a good project from a great one.
New to Drupal core contribution? Come to the Mentored Core Sprint
Views subsystem maintainers dawehner and damiankloip. Photo credit: Amazee Labs.
If you're just getting started with Drupal 8 or with core contribution, there's still a spot for you on the Friday sprint day! Join the Mentored Core Sprint.Tags Comments
Another sales call today, with a prospective start-upper who thought Drupal might lower his costs to get a web startup launched.
And I didn't really answer the question directly -- because in the long run, if you're building something successful, you're going to spend as much on your Drupal site as you would building from scratch.
The key difference? How quickly you can get something in front of users that might help you get some traction and build your business.DrupalDrupal PlanetOperationsDevOps