Planet Drupal

Syndicate content
Drupal.org - aggregated feeds in category Planet Drupal
Updated: 34 min 56 sec ago

Appnovation Technologies: Appnovation - Open Digital Delivered.

Tue, 03/28/2017 - 17:22
Appnovation - Open Digital Delivered. Since founding Appnovation 10 years ago, we've enjoyed both continued growth, and the ongoing evolution of who and what we are as a business. In the early stages of the company, we were a software development company focused around one technology, Drupal, the content management system which drove and defined what we delivered for our clients. ...

myDropWizard.com: Most common Drupal site building pitfalls and how to avoid them! (Part 3 of 3)

Tue, 03/28/2017 - 16:58
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item evenpThis is the a href=https://www.mydropwizard.com/categories/most-common-drupal-site-building-pitfallsthird in a series of articles/a, in which I'd like to share the most common pitfalls we've seen, so that you can avoid making the same mistakes when building your sites!/ppa href=https://www.mydropwizard.com/myDropWizard/a offers support and maintenance for Drupal sites that we didn't build initially. We've learned the hard way which site building mistakes have the greatest potential for creating issues later./ppstrongAnd we've seen a href=https://www.mydropwizard.com/blog/mydropwizard-providing-drupal-6-long-term-support-424-sitesa lot of sites/a! Besides our clients, we also do a a href=https://www.mydropwizard.com/how-it-works/site-auditFREE in-depth site audit/a as the first step when talking to a potential client, so we've seen loads of additional sites that didn't become customers./strong/ppIn the a href=https://www.mydropwizard.com/blog/most-common-drupal-site-building-pitfalls-and-how-avoid-them-part-1-3first article/a, we looked at security updates, badly installed module code and challenges ith patching modules and themes, as well as specific strategies for addressing each of those problems. In the a href=https://www.mydropwizard.com/blog/most-common-drupal-site-building-pitfalls-and-how-avoid-them-part-2-3second article/a, we looked at how to do the most common Drupal customizations without patching./ppstrongIn this article, we're going to look at some common misconfigurations that make a site less secure, and how to avoid them!/strong/ppemNOTE: even though they might take a slightly different form depending on the version, most of these same pitfalls apply equally to Drupal 6, 7 and 8! It turns out that bad practices are quite compatible with multiple Drupal versions ;-)/em/pp/div/div/div

MidCamp - Midwest Drupal Camp: Free Community Drupal Training at MidCamp 2017

Tue, 03/28/2017 - 15:38
pIt started as a question.nbsp; Why do Drupal camps only have trainings on a separate day?nbsp; The legitimate answer was that trainings and sessions should not compete for audiences for a normal Drupal camp audience.nbsp; But what if the trainings were not for that normal Drupal camp audience?/p pWhen all of the hard work was done by the MidCamp venue team to secure the DePaul University Student Center for MidCamp 2017, we immediately started exploring the idea of having half day Drupal training sessions for those that would nornally not attend a Drupal camp.nbsp; We reserved two extra rooms for this idea./p pWhile I looked for interested parties who would be interested in attending the trainings, Joseph Purcell of Digital Bridge Solutions worked to organize an strongIntroduction to Making Websites with Drupal/strong itinerary and found great trainers to lead the event: a href=http://www.cdm.depaul.edu/about/pages/people/facultyinfo.aspx?fid=1205Michael Chase/a, lrm;Instructor at DePaul University College of Computing and Digital Media, and a href=http://www.hs2solutions.com/who-we-are/aaron-meeuwsenAaron Meeuwsen/a, Web Developer at HS2 Solutions, along with several other volunteers, Scott Weston and Matt Ramir from HS2, and Doug Dobrzynski from PMMI Media Group.nbsp; Without them, we couldn#39;t have made this happen. I would also like to thank my employer, a href=http://www.xenomedia.comXeno Media/a for contributing some of my time to help organize these trainings./p pWe#39;ve reached out to, and are happy to be working with such great local Chicago technology groups.nbsp; a href=https://www.girldevelopit.com/chapters/chicagoGirl Develop It/a, which provides programs for adult women interested in learning web and software development in a judgment-free environment, the a href=https://itkan.wordpress.com/about/IT Knowledge and Abilities Network/a (ITKAN), which provides professional networking and growth organization with a focus on professionals and aspiring professionals with disabilities, and a href=https://www.womenwhocode.com/aboutWomen Who Code/a, a global non-profit dedicated to inspiring women to excel in technology careers all answered our call./p pBut we still have room for more.nbsp; Do you know of someone who would benefit from free Intro to Drupal Training?nbsp; We want you to invite them!/p pThe trainings will cover basic CMS tasks like editing and publishing content, creating navigation menus, and placement of content on the site, and will approach into more complex tasks such as module installation and site configurations. Additionally, wersquo;ll show the various ways the Drupal community can help through the issue queue, meetups, job boards, and mentorship./p pThe sessions are:/p ul liFriday March 31st -nbsp;9:00 am - 12:00 pm/li liFriday March 31st -nbsp;1:00 pm - 4:00 pm/li liSaturday April 1st -nbsp;9:00 am - 12:00 pm/li liSaturday April 1st -nbsp;1:00 pm - 4:00 pm/li /ul pa class=btn href=https://www.eventbrite.com/e/midcamp-2017-free-intro-to-making-websites-with-drupal-community-training-tickets-32783401035Get your free ticket today!/a/p pDon#39;t be shy, please share and and invite anyone you think would benefit from these trainings.nbsp; Ticket enrollment is open, and we would love to have every seat filled!/p

Chromatic: Configuring Redis Caching with Drupal 8

Tue, 03/28/2017 - 15:20
pHow to install and configure Redis caching for Drupal 8./p

Darren Mothersele: How to do Everything with PHP Middleware (DrupalCamp London)

Tue, 03/28/2017 - 11:30
pAt the DrupalCamp in London earlier this month I gave a talk about PHP Middleware. You can see a a href=https://www.youtube.com/watch?v=I0pXXCQdHQMrecording of the talk/a on YouTube. Here’s a summary, in case you don’t want to watch the whole talk, or the distorted audio upsets you, or if you want the links and references:/p h2 id=simple-vs-easySimple vs Easy/h2 pI started with a reference to the important talk by Rich Hickey, a href=https://www.infoq.com/presentations/Simple-Made-EasySimple Made Easy/a. This is high up on my list of videos every software developer needs to watch. I began here because I think it’s important to identify the difference between emsimple/em and emeasy/em, to identify where complexity sneaks into our systems. I have found PHP Middleware to be an important tool in the fight against complexity./p blockquote p“programming, when stripped of all its circumstantial irrelevancies, boils down to no more and no less than very effective thinking so as to avoid unmastered complexity, to very vigorous separation of your many different concerns./p p– a href=https://www.cs.utexas.edu/users/EWD/transcriptions/EWD05xx/EWD512.htmlEdsgar W. Dijkstra/a (1930 - 2002)/p /blockquote h2 id=de-complecting-phpDe-complecting PHP/h2 pI talked a bit about different ways to simplify development with PHP. Including: Domain-driven design, Hexagonal architecture (Ports and Adapters), Framework-independent code, Thin APIs, etc… In particular, I wanted to emphasise the importance of framework-independent code and the benefit of using common interfaces such as the ones developed as PSRs by a href=http://www.php-fig.org/PHP-FIG/a./p pThere was some discussion after about introducing unecessary abstractions, but I think this misses the point. Of course there is a trade off, but the key is to focus on the simplicity, on emuntwisting/em things (c.f. Rich Hickey)./p h2 id=de-coupledDe-coupled/h2 pInspired by the a href=https://docs.zendframework.com/zend-expressive/Zend Expressive/a installation procedure, I imagined what Drupal 10 might look like, with fully-decoupled components./p pimg src=http://www.darrenmothersele.com/img/drupal-x-installer.jpg alt=Drupal Install //p h2 id=interfacesInterfaces/h2 pThe widespread adoption of PSR7 by the PHP community has lead to the popularity of PHP Middleware-based systems./p pWhy PSR7 when Symfony HTTP components were so popular? Well, that is an implementation - and rather than standardise on implementation, we should standardise against interfaces./p pThis allows more interoperability. I showed this strongpseudocode/strong:/p div class=language-php highlighter-rougepre class=highlightcode// Take the incoming request from Diactoros $request = ServerRequestFactory::fromGlobals(); $client = new Client(); // Response comes back from Guzzle $response = $client-gt;send($request-gt;withUrl($dest)); $body = simplexml_load_string( $response-gt;getBody()-gt;getContents()); // pass back to Diactoros (new SapiEmitter)-gt;emit($response-gt;withBody($body)); /code/pre /div pThe example uses HTTP requests from a href=https://github.com/zendframework/zend-diactorosZend Diactoros/a, forwards them using the a href=http://guzzle.readthedocs.io/en/latest/Guzzle/a HTTP client, and returns the response object from Guzzle using the SAPI Emitter from Diactoros./p pThis demonstrates the power of sharing standard interfaces. Here two packages are used together, both provide an implementation of PSR7 HTTP messages, and they work seamlessly because they both conform to the same interface, despite the differing implementation details./p h2 id=decorating-web-appsDecorating Web Apps/h2 pThis is what a typical web app looks like:/p pimg src=http://www.darrenmothersele.com/img/ball-of-mud.jpg alt=Ball of Mud //p pWhich can be simplified to this:/p pimg src=http://www.darrenmothersele.com/img/web-app-1.png alt=Web App //p pA web app takes a request and returns a response./p pThe concept behind PHP Middleware is that you can emdecorate/em the app, to add new functionality, by intercepting the request on the way in, and the response on the way out. This avoids the complexity of emintertwining/em your code throughout the ball of mud./p pimg src=http://www.darrenmothersele.com/img/web-app-2.png alt=Web App //p pHere’s an example (pseudocode) for adding CORS functionality to an existing app:/p div class=language-php highlighter-rougepre class=highlightcode $cors = analyze($request); switch ($cors-gt;getRequestType()) { Case ERR_NO_HOST_HEADER: Case ERR_ORIGIN_NOT_ALLOWED: Case ERR_METHOD_NOT_SUPPORTED: Case ERR_HEADERS_NOT_SUPPORTED: Return createResponse(403); Case TYPE_REQUEST_OUT_OF_CORS_SCOPE: return $APP-gt;process($request); Case TYPE_PRE_FLIGHT_REQUEST: $response = Utils\Factory::createResponse(200); Return $response-gt;withHeaders($cors-gt;getHeaders); default: $response = $APP-gt;process($request); Return $response-gt;withHeaders($cors-gt;getHeaders); } /code/pre /div pa href=http://stackphp.com/StackPHP/a first popularised the concept of middleware in PHP. This diagram is from their website:/p pimg src=http://www.darrenmothersele.com/img/onion.png alt=Web App //p pThere are other popular micro-frameworks based on this concept, such as a href=https://www.slimframework.com/Slim/a./p pThe core of your app is just a thin layer of business logic. Just your domain specific code. The rest can be wrapped in layers which isolate and separate concerns nicely./p h2 id=single-pass-vs-double-passSingle-pass vs Double-pass/h2 pThe emdouble pass/em approach became the most popularly used signature for HTTP middleware, based on a href=http://expressjs.com/en/guide/writing-middleware.htmlExpress middleware/a from the JS community./p pIt looks like this:/p div class=language-php highlighter-rougepre class=highlightcode// DOUBLE PASS function __invoke($request, $response, $next) { } /code/pre /div pThe request and the response are both passed into the middleware, along with a code class=highlighter-rouge$next/code delegate that is called to pass control and carry on processing down the chain of middleware./p pThis double-pass approach is much newer, but used by most of the early adopters of PSR-7./p pA single pass approach, looks like this:/p div class=language-php highlighter-rougepre class=highlightcode// SINGLE PASS / LAMBDA function process($request, $delegate) { } /code/pre /div pThe issue is with how the response object is dealt with. In the double-pass approach, both are provided. The argument is that this is better for dependency inversion. Using the single pass approach you either need to hard code a dependency on a HTTP message implementation into your middleware when the response is required, or you need to inject a factory for generating the response./p h2 id=psr-15-http-middlewarePSR-15 HTTP Middleware/h2 pAfter the success of PSR7, with it’s wide adoption leading to much standardisation and interoperability in PHP frameworks, the next step is to standardise the middleware interface./p pThis is not yet an accepted PSR. At the time of writing it is still in strongdraft/strong status. It is available for use in the a href=https://github.com/http-interop/http-middlewarehttp-interop/http-middleware/a repo./p h2 id=invokerInvoker/h2 pAs an aside, I mentioned the a href=https://github.com/PHP-DI/InvokerInvoker Interface/a. As per the docs:/p blockquote p“Who doesn’t need an over-engineered call_user_func()?”/p /blockquote pIn particular this library really simplifies the process of calling things and injecting dependencies. It also allows to call things using named parameters. I make extensive use of this, and I find making calls with named parameters makes code much easier to understand./p h2 id=psr-15-interfacesPSR-15 Interfaces/h2 pPSR-15 has two interfaces. Both define a method called code class=highlighter-rougeprocess/code. One is the signature that middleware must support, which takes a PSR7 request and a PSR15 delegate. The other interface defines the code class=highlighter-rougeprocess/code method for the delegate. The method on both interfaces is defined as returning a PSR7 response./p pimg src=http://www.darrenmothersele.com/img/psr-15.png alt=Web App //p pSo you can compose a chain of middleware, pass in a request and get a response. The request is passed down the chain of middleware until a response is generated which is then passed back up the chain, possibly being decorated along the way./p pFor want of a better name, I refer to this chain of middleware as a emstack/em. And, I have created a simple a href=https://github.com/ideationnet/stack-runnerStack Runner/a to handle the processing of a stack of PSR-15 middleware./p div class=language-php highlighter-rougepre class=highlightcodeclass StackRunner implements DelegateInterface { public function __construct( array $stack, InvokerInterface $invoker, ResponseFactoryInterface $responseFactory ) { ... } public function process(ServerRequestInterface $request) { if (!isset($this-gt;stack[$this-gt;current])) { return $this-gt;responseFactory-gt;createResponse(); } $middleware = $this-gt;stack[$this-gt;current]; $this-gt;current++; return $this-gt;invoker-gt;call([$middleware, 'process'], [ 'request' =gt; $request, 'delegate' =gt; $this, ]); } } /code/pre /div h2 id=adr-action-domain-responderADR (Action Domain Responder)/h2 pI went on to talk about ADR as being an adaptation of MVC that is more suitable for use in Web Apps. I’ve found this particularly useful when using Domain-Driven Design, or when used to create emthin APIs/em where you have just a thin layer of business logic on top of a data store./p pThe issue with MVC is that the template is not the view. The em“view”/em of a web app is the HTTP response, and we split this across our layers, as the body of the response is typically generated by the view, with the knowledge of HTTP being encoded into our controllers. We also bundle together various actions into one controller, which means instantiating the whole thing when we want to run one of the actions./p pADR offers an alternative separation of concerns, where the action methods of the controller are their own separate classes (or in my case anything eminvokable/em via the code class=highlighter-rougeInvokerInterface/code). I use an code class=highlighter-rougeInputHandler/code to deal with parsing the input from the HTTP Request, which the Invoker can then use (via the magic of named arguments)./p pThe domain (Model in MVC terminology) is where the business logic lives. This is called domain, rather than model, to suggest use of domain-driven design./p pTo use ADR with PHP Middleware, add a emresolver/em to the end of the chain of middleware to emdispatch/em the request to the appropriate code class=highlighter-rougeAction/code./p pimg src=http://www.darrenmothersele.com/img/radr.png alt=Web App //p h2 id=actionAction/h2 pI’ve created a reference implementation of an eminvokable/em a href=https://github.com/ideationnet/wafer/blob/master/src/Action.phpAction/a./p pimg src=http://www.darrenmothersele.com/img/action.png alt=Web App //p h2 id=demoDemo!/h2 pAt this point in my talk I planned to give a demo of how you compose ADR with Middleware to create a working API. Unfortunately, I had some tech issues getting my computer linked up to the projector, and I was starting to feel really ill (full of cold). By this time the caffeine was starting to wear off, and I needed the talk to end!/p pI’ve put the example code up in a a href=https://github.com/darrenmothersele/dcldn2017GitHub repo/a./p h2 id=referencesReferences/h2 ul lia href=https://www.infoq.com/presentations/Simple-Made-EasySimple Made Easy/a - talk by Rich Hickey/li lia href=https://github.com/http-interop/http-middlewareHTTP Middleware/a and a href=https://github.com/http-interop/http-factoryHTTP Factory/a interfaces./li lia href=https://github.com/middlewares/psr15-middlewaresPSR15 Middlewares/a a set of really useful middlewares that can be used with a PSR15 middleware dispatcher./li lia href=https://github.com/ideationnet/stack-runnerStack Runner/a my reference implementation of a emvery/em simple stack runner for executing a chain of PSR15 middleware./li lia href=https://github.com/ideationnet/waferWafer/a an experimental implementation of the ADR idea to be used along with PSR15 middleware and the stack runner./li /ul pDrop me a line with any feedback. Thanks!/p

Agiledrop.com Blog: AGILEDROP: Responsive Images in Drupal 8

Tue, 03/28/2017 - 10:56
a href=http://www.agiledrop.com/blog/responsive-images-drupal-8img src=https://www.agiledrop.com/sites/default/files/2017-03/responsive%20image%202.png //a The days of fixed-width websites are long behind us, and with fluid widths came fluid images. In many cases, we don’t want to display the same image size on a mobile and on a desktop, because we truly don't need a 2000px wide image on a 480px device. Or we want to display a completely different image at some breakpoint. For this we have a HTML5 picture element which can contain a multiple source elements with srcset and media attributes. The browsers choose the right source based on a media query. In my case, I had to show completely different image sizes on mobile vs.… a href=http://www.agiledrop.com/blog/responsive-images-drupal-8READ MORE/a

Janez Urevc: Time to take some time off the Drupal community

Tue, 03/28/2017 - 10:11
spanTime to take some time off the Drupal community/span spanspan lang= about=https://janezurevc.name/users/slashrsm typeof=schema:Person property=schema:name datatype= xml:lang=slashrsm/span/span spanTue, 28.03.2017 - 10:11/span div class=field field--name-body field--type-text-with-summary field--label-hidden field--itempWhen I joined the Drupal community I felt that I arrived in the enthusiastic, welcoming and positive environment. I felt that all contributions are appreciated and that we're all following more or less the same goal. This belief was also mostly the source of motivation for my extensive contributions to the Drupal 8 Media initiative in the past 4 years or so. This has dramatically changed in the last year or so and seems to be getting worse all the time./p pOur community has governance and conflict-resolution rules. Everything should be clear and transparent. At least in theory. But in practice things don't work that way. Decisions (political and technical) are often made behind closed doors where only small fraction of the community is allowed to participate. Decision processes are nontransparent and leadership doesn't seem to feel any need to improve that. This was also the main reason why I recently decided to discontinue my DA membership./p pI think that, in order to survive in the long term, we'll need to reform our community to become truly transparent and democratic. We've been living in a dictatorship and it has been working for us so far. But history shows that too much concentration of power in an small ruling clique almost always leads to its abuse (I strongly recommend a href=https://en.wikipedia.org/wiki/Why_Nations_Failthis book/a)./p pMy impression is that the community in general is getting increasingly toxic. It feels that there is more and more hypocrisy, lies, secret goals and partial interests being involved (and I think that the lack of transparency contributes to that). Best indicator for in my case are the community events which have (with some rare bright exceptions) become a burden instead of enjoyment for me. I still enjoy meeting some people that have become my friends during the years, but I recently started seeing the community in general as increasingly negative, abusing and exhausting./p pStress and bad mood directly linked to the happenings in the Drupal started affecting my personal life, including relations with my family. This is not acceptable and I decided to take some time off to think about the situation and to decide if and to what extent I want to remain active in the community. This decision was not made solely due to the most recent ousting (which also clearly showed how the community and its leadership actually work). It is based on many events that happened in last year or so./p pThis is my personal decision and has nothing to do with my employer. I really enjoy working at MD Systems and have no intentions to introduce any changes into that part of my life./p /div

Kalamuna Blog: Converting Drupal 7 Media Tags During a Drupal 8 Migration

Tue, 03/28/2017 - 05:37
span class=field field--name-title field--type-string field--label-hiddenConverting Drupal 7 Media Tags During a Drupal 8 Migration/span div class=field field--name-field-featured-image field--type-image field--label-hidden field__item img src= alt=Close-up image of code title= width=870 height=313 //div span class=field field--name-uid field--type-entity-reference field--label-hiddenspanJohn Ouellet/span/span span class=field field--name-created field--type-created field--label-hiddenMon, 03/27/2017 - 20:37/span div class=clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__itempAs developers of all skill levels begin to migrate from old versions of Drupal to Drupal 8, it is always good to have references for some of the more arduous tasks out there.  Many of our clients for whom we built Drupal 7 sites used the media module and the awesomeness that it gave to their sites. Now, as I migrate some of these same sites to Drupal 8, I hit a bump in the road. The Drupal 7 Media tag can’t be rendered in the Drupal 8 site I am migrating to. This is because that functionality is not present in the Drupal 8 site./p/div div class=field field--name-field-featured-categories field--type-entity-reference field--label-above div class=field__labelCategories/div div class=field__items div class=field__itema href=https://blog.kalamuna.com/categories/articles hreflang=enArticles/a/div div class=field__itema href=https://blog.kalamuna.com/categories/drupal hreflang=enDrupal/a/div div class=field__itema href=https://blog.kalamuna.com/categories/guidance hreflang=enGuidance/a/div /div /div

MidCamp - Midwest Drupal Camp: Two days before before MidCamp

Tue, 03/28/2017 - 05:19
pTwo days before before MidCamp, when all round the rug, not a creature was stirring, not even a bug./p pThough the house was so empty, and missing it#39;s stir, our a href=https://goo.gl/forms/Y4aMYTEI3FEHvunk2Volunteer coordinator was out saying burrr (don#39;t leave me out in the cold)/a. Our a href=https://www.midcamp.org/sprintsSprint lead was looking for sprinters to sprint,/a and our a href=https://www.midcamp.org/trainingsTrainers were looking for trainees to imprint/a!/p pMidCamp 2017 has a href=https://www.midcamp.org/tickets45 sessions for you to attend on Friday and Saturday/a, a href=https://www.midcamp.org/trainings4 Full day trainings on Thursday/a, and a href=https://www.midcamp.org/community-outreach4 Free half day trainings/a for you to invite anyone new to Drupal to attend./p pIn addition, we have socials for you to attend on a href=https://www.midcamp.org/game-night-sponsored-palantirnetFriday/a and a href=https://www.midcamp.org/evening-social-sponsored-platformshSaturday/a, and a a href=https://www.midcamp.org/sprintsSunday contrib Sprint/a to give back to Drupal./p pIt#39;s spring in Chicago, and we hope you can join us!/p pa class=btn href=https://www.midcamp.org/ticketsGet your tickets today!/a/p

Platform.sh: More flexible elastic now available

Tue, 03/28/2017 - 03:00
pElasticsearch is one of the most popular Free Software search engines available. It’s fast, flexible, and easy to work with./p pIt’s also now fully up to date on Platform.sh./p

OSTraining: Entity Reference Views Helping Drupal 8 Content Creators

Tue, 03/28/2017 - 00:14
div class=ost-intro-imageimg src=https://www.ostraining.com/images/drupal8/drupal-8-entity-reference-view.jpg alt=Entity Reference Views Help Drupal 8 Content Creators width=200 height=133 //div pEntity Reference Views are one way you can make life easier for Drupal content creators./p pNormally, when people create content on your site, each field consists of a single box with a single data point. For example, in a list of people, you might get only the person's name.nbsp;/p pEntity Reference Views allows you to provide far more information. For example, you can add photos and personal details to your list of people./p

Vardot: The evolution of Drupal: Drop 1.0 to Drupal 8

Mon, 03/27/2017 - 21:16
a href=/blog/categories/case-studiesCase Studies/a span class=read-timeRead time: 6 minutes/span img typeof=foaf:Image class=img-responsive src=https://www.vardot.com/sites/default/files/styles/large/public/content/blog/blog_15751_876_1490642169.png?itok=gS4Oo9hy width=695 height=350 alt=History of Drupal - from Drop 1.0 to Drupal 8 title=History of Drupal / p dir=ltrspan id=docs-internal-guid-af48ba06-1103-5714-329e-a480db0eb91dAfter fifteen years of going from strength to strength, it’s a great time to look back on the Drupal that was and how it became a powerhouse of the open source content management world./span/p p dir=ltrspan id=docs-internal-guid-af48ba06-1103-5714-329e-a480db0eb91dWay back in May 2000 the Drupal GitHub repository was started. In December 2000 Drupal 1.0 was named and since then it has taken over 33,000 commits to build Drupal as we know it today. Thanks to a dedicated community backing and flexible technology, Drupal is now a stable modular platform that is used by over 1.18 million websites. Did you/span ever think how Drupal got so big? We’re going to take you through this journey right now./p p dir=ltra href=https://www.vardot.com/blog/why-drupal-best-cms-your-website-626Why Drupal is the Best CMS for Your Website/a/p p /p h3span id=docs-internal-guid-af48ba06-1103-5714-329e-a480db0eb91dDrupal 1 (Drop)/span/h3 pimg alt=Drupal 1.0 Drop interface title=Drupal 1.0 height=317 width=590 class=media-element file-default img-responsive typeof=Image src=https://www.vardot.com/sites/default/files/d1.png //p pstrongspan id=docs-internal-guid-af48ba06-1103-5714-329e-a480db0eb91dDrupal 1.0/span/strong contained a mere 18 core modules, each driven by a php file. The system relied heavily on SQL to manage and modify content, themes, layout and more. Pre-loaded themes gave web developers a jumping off point, and Drupal allowed developers to hook into existing code and tweak colours, layouts and functionality to their liking. The original system came with some nice basics like a search function, comment fields and a diary/blog functionality./p p dir=ltr /p h3 dir=ltrDrupal 2/h3 p dir=ltrimg alt=Drupal 2.0 interface title=Drupal 2.0 height=350 width=560 class=media-element file-default img-responsive typeof=Image src=https://www.vardot.com/sites/default/files/d2.png //p p dir=ltrstrongspan id=docs-internal-guid-af48ba06-1103-5714-329e-a480db0eb91dDrupal 2.0/span/strong was released shortly after and come packed with translation features. Developers could now build or translate their sites by altering the database, a feature which opened up Drupal to a global community. 2.0 also brought in improvements to user ratings, stories and a whole host of additional fine tuning to the user access groups, allowing greater control over site development and stakeholder interactions./p p dir=ltr /p h3 dir=ltrDrupal 3/h3 p dir=ltrimg alt=Drupal 3.0 interface title=Drupal 3.0 height=367 width=631 class=media-element file-default img-responsive typeof=Image src=https://www.vardot.com/sites/default/files/d3.png //p p dir=ltrstrongspan id=docs-internal-guid-af48ba06-1103-5714-329e-a480db0eb91dDrupal 3.0/span/strong saw the introduction of the concept of ‘nodes’, taking over the common idea of web pages. Nodes increase flexible for creating and displaying content. All kinds of content, whether a web page, blog article or news item were managed by the node module. Comments and actions were attached directly to the node which increased flexibility in site building and later changes. The use of nodes instead of pages has become commonplace in mobile development, ten years after Drupal embraced the concept./p p dir=ltr /p h3 dir=ltrDrupal 4/h3 p dir=ltrimg alt=Drupal 4.0 interface title=Drupal 4.0 height=232 width=524 class=media-element file-default img-responsive typeof=Image src=https://www.vardot.com/sites/default/files/d4.png //p p dir=ltrspan id=docs-internal-guid-af48ba06-1103-5714-329e-a480db0eb91dAt this stage, six months had passed, and Drupal had grown to 26 core modules. In June 2002 /spanstrongDrupal 4.0/strong was released. Almost 100 major sites were built with Drupal, and a wide community of developers were contributing to the project across Europe and the United States./p p dir=ltrspan id=docs-internal-guid-af48ba06-1103-5714-329e-a480db0eb91dDrupal 4.0 introduced the Taxonomy module, taking over from the meta module and giving site builders an entire new toolset for categorising, sorting and marketing their content. With a friendly user interface and a strong community of contributors Drupal 4.0 had moved away from its humble origins and taken a place as an enterprise quality Content Management System./span/p p dir=ltrspan id=docs-internal-guid-af48ba06-1103-5714-329e-a480db0eb91dAt this stage Drupal moved to a slower release schedule, with strongDrupal 4.1/strong not being released until February 2003, eight months later. Drupal 4 lasted until January 2007, with seven minor releases over four years./span/p p dir=ltrspan id=docs-internal-guid-af48ba06-1103-5714-329e-a480db0eb91dDrupal 4’s minor releases saw a massive expansion of capability, including its first e-commerce module in strong4.4/strong. It also introduced its first WYSIWYG (What You See Is What You Get) editor, opening doors for web-writers without a coding background, and offered much more flexible theming options. Drupal saw a massive surge in usage when presidential candidate Howard Dean launched a multitude of interlinked campaign sites using Drupal. /span/p p dir=ltr /p h3 dir=ltrDrupal 5/h3 p dir=ltrimg alt=Drupal 5.0 interface title=Drupal 5.0 height=262 width=565 class=media-element file-default img-responsive typeof=Image src=https://www.vardot.com/sites/default/files/d5.png //p p dir=ltrspan id=docs-internal-guid-af48ba06-1103-5714-329e-a480db0eb91dIn 2007 Drupal took another huge step forward and released /spanstrongDrupal 5.0/strong. At this stage there were over 492 contributors and a massive 1173 patches. While Drupal 5.0 only had 29 core modules, more than 2500 contributed modules were available for site builders to inject into their sites. Drupal 5.0 was the first version to feature jQuery, a JavaScript library that greatly increases a web developers’ capabilities while cutting down on development time and stress./p p dir=ltrspan id=docs-internal-guid-af48ba06-1103-5714-329e-a480db0eb91dDrupal 5.0 also came neatly packaged in a web based installer saving users from manual database manipulation and allowing the creating of custom packages pre-filled with contributed modules and themes. The backend was tidied up with a whole new file structure, and css files were automatically compiled and compressed, greatly reducing site loading times. Site builders were given the ability to control caching and create custom content types leading to greater performance and customisation./span/p p dir=ltr /p h3 dir=ltrspan id=docs-internal-guid-af48ba06-1103-5714-329e-a480db0eb91dDrupal 6/span/h3 p dir=ltrimg alt= 6.0 interface title=Drupal 6.0 height=447 width=471 class=media-element file-default img-responsive typeof=Image src=https://www.vardot.com/sites/default/files/d6.png //p p dir=ltrstrongspan id=docs-internal-guid-af48ba06-1103-5714-329e-a480db0eb91dDrupal 6.0/span/strong was released in February 2008 and supported until just last year. At the time that support ended there was an estimated 120,000+ websites still using Drupal 6.0. With 34 core modules, over 7000 contributed modules and 600 custom themes the modular genius of Drupal was undeniable. This new release contained a completely new menu structure that had been written from the ground up, and a friendlier installation process. The community also increased security, brought in more user friendly elements to the User Interface (such as drag and drop administration) and upgraded the language support to handle right-to-left languages./p p dir=ltrspan id=docs-internal-guid-af48ba06-1103-5714-329e-a480db0eb91dDrupal 6.0 remained for three years. During this time it was used to host /spana href=https://www.whitehouse.gov/Whitehouse.gov/a, one of the largest profile websites at the time. Whitehouse.gov is still using Drupal to this day, although they have updated to strongDrupal 7.0/strong/p p dir=ltr /p h3 dir=ltrspan id=docs-internal-guid-af48ba06-1103-5714-329e-a480db0eb91dDrupal 7/span/h3 p dir=ltrimg alt= 7.0 interface title=Drupal 7 height=501 width=507 class=media-element file-default img-responsive typeof=Image src=https://www.vardot.com/sites/default/files/d7.png //p p dir=ltrspan id=docs-internal-guid-af48ba06-1103-5714-329e-a480db0eb91dIn 2011 /spana href=https://www.drupal.org/project/drupal/releases/7.0Drupal 7.0/a was released and by this stage it is being used by web developers from all walks of life. Small business owners, large corporations, bloggers and government agencies are all using Drupal for its flexibility and ease of use. At this stage there are over 11,000 contributed modules and 200 distributions available, though Drupal Core is kept slim with just over 40 core modules./p p dir=ltrspan id=docs-internal-guid-af48ba06-1103-5714-329e-a480db0eb91dDrupal 7.0 saw even greater flexibility with interaction between nodes and modules, allowing any module to call, alter and display any node. Every item in Drupal 7.0 became an individual entity capable of being manipulated and displayed to the user to create a vast flexible website./span/p p dir=ltr /p h3 dir=ltrDrupal 8/h3 p dir=ltrimg alt= 8.0 interface title=Drupal 8 height=566 width=759 class=media-element file-default img-responsive typeof=Image src=https://www.vardot.com/sites/default/files/d8_0.png //p p dir=ltrstrongspan id=docs-internal-guid-af48ba06-1103-5714-329e-a480db0eb91da href=https://www.drupal.org/project/drupal/releases/8.0.0Drupal 8.0/a/span/strong was officially released on the 19th of November 2015. It has since been running on a six-month update cycle, meaning we already have access to strongDrupal 8.3/strong. It comes bundled with over 60 core modules, and one of the most popular contributed modules ‘Views’ is now part of that core module set. Drupal 8.0 users over 60 database tables, but includes smarter tech like BigPipe to keep site load times to a minimum./p p dir=ltrspan id=docs-internal-guid-af48ba06-1103-5714-329e-a480db0eb91da href=https://www.vardot.com/blog/7-reasons-why-now-right-time-move-drupal-8-6067 Reasons Why Now is The Right Time to Move to Drupal 8/a/span/p p /p h3Bottom line/h3 p dir=ltrspan id=docs-internal-guid-af48ba06-1103-5714-329e-a480db0eb91dimg height=169 src=https://lh4.googleusercontent.com/8T7S1sDEs_H7JI06I5q7vC1CY5PL5PrmxVikfhmCSCnKVWv8CQg_aiQfmO0lODGMY1Bv_TLiflnFYMrVKhV1sg8_VcEHqTuDlDVVkjXumL49cBNIGbvAvx7kxl72hVyR6IsjV_B_ width=602 //span/p pspan id=docs-internal-guid-af48ba06-1103-5714-329e-a480db0eb91dDrupal has been running ahead of the curve since the beginning, and with a strong community backing it won’t be stopping any time soon. Drupal’s evolution has always emphasised ease of use, quick site adjustments and a brilliant modular design that means no two Drupal sites are alike. It’s been a long ride to get here, but you can be sure that Drupal will be leading the way for years to come./span/p pspanBonus: a href=https://www.vardot.com/blog/drupalcon-dublin-2016-what-drupal-means-us-791What Drupal means to us - the community speaks about its favorite CMS/a/span/p Tags:nbsp; a href=/taxonomy/term/236 typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=Drupal Planet/a a href=/blog/tags/drupal typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=Drupal/a div class=field field-name-title-field field-type-text field-label-above clearfix div class=field-label Title:nbsp; /div div class=field-item even The evolution of Drupal: Drop 1.0 to Drupal 8 /div /div

Drupal Association blog: 2017 Drupal Association at-large election winner announced

Mon, 03/27/2017 - 17:51
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item evenscript type=text/javascript src=//ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js/scriptscript type=text/javascript src=//ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js/scriptp /pnoscript style !--/*--![CDATA[/* !--*/ .js-only { display:none; } /*--!]]*/ /stylep/p/noscript script type=text/javascript src=https://www.google.com/jsapi/scriptscript type=text/javascript !--//--![CDATA[// !-- google.load('visualization', '1.0', {'packages':['corechart']}); //--!]] /scriptpimg alt=2017 Election Results class=left height=80 src=/files/vote-1804596_640_2.jpg width=201 //p pThe staff and board of the Drupal Association would like to congratulate our newest board member:/p h3a href=https://www.drupal.org/u/rszramaRyan Szrama/a./h3 pThank you, Ryan, for stepping forward to serve the Drupal community. On behalf of the community I also want to thank the 13 candidates who put themselves out there in service of Drupal and nominated themselves. We are grateful that our community has so many brave and generous people willing to contribute this way./p pRyan's election to the board represents the sixth year of elections to a community-at-large seat on the Drupal Association board. Each year we've focused on improving the elections process, and this year was no different. We focused on two goals: /p olliImprove the user experience of participating in the elections process.  ulliWe added more in-line help materials throughout the elections process. ulliFor candidates, we added information about the responsibilities of a board member to the nomination form, as well as a video message from the Executive Director./li liFor voters we improved the elections navigation, and provided more educational materials about the IRV voting process./li /ul/li liWe implemented a drag and drop ballot, to make it easier for voters to rank candidates. /li /ul/li liMake it easier to get to know the candidates. ulliWe updated the candidate profile form, to ask more detailed questions to help voters get to know the candidates. /li liBased on feedback from previous years, we eliminated the three virtual meet-the-candidates sessions, in favor of giving each candidate the option to post a statement-of-candidacy video.  In conjunction with the question and answer section on each candidate profile, we felt this gave the electorate the opportunity to get to know their candidates at their own pace and on their own terms. /li /ul/li /olpOur next steps will be to reach out to the candidates for their evaluation of the elections experience./p pWe also want to hear from the voters. Please tell us about your experience with the elections process in the comments below. Your feedback is important to us so that we can make the 2018 elections process even better. /p h3About the Elections Methodology: Instant Run-off Voting(IRV)/h3 pElections for the Community-at-large positions on the Drupal Association board are conducted through Instant Run-off Voting. This means that voters can rank candidates according to their preference. When tabulating ballots, the voters' top-ranked choices are considered first. If no candidate has more than 50% of the vote, the candidate with the lowest votes is eliminated. Then the ballots are tabulated again, with all the ballots that had the eliminated candidate as their first rank now recalculated with their second rank choices. This process is repeated until only two candidates remain and a clear winner can be determined. This voting method helps to ensure that the candidate who is most preferred by the most number of voters is ultimately elected. You can learn more about IRV (also known as Alternative Vote) in this a href=http://https://www.youtube.com/watch?v=wA3_t-08Vr0amp;feature=relatedvideo/a./p h2Voting Results/h2 pThere were 13 candidates in contention for the single vacancy among the two community-at-large seats on the Board. 1,240 voters cast their ballots out of a pool of 94,499 eligible voters (1.3%). Voters ranked an average of 3.6 candidates on their ballots. /p p The bar charts below show the vote counts for each candidate in each round.br / Place the mouse over a bar to see the number of votes./p ulli Yellow — Votes carried over from the previous round. /lili Green — Votes received in this round. /lili Red — Votes transferred away in this round. /li/ulp A candidate's votes in a round is the sum of the yellow and green bars.br / Since the green and red bars represent votes being transferred, the sum of thebr / green and red bars is the same. /p p The exhausted bar represents votes where the voter did not indicate a nextbr / preference and thus there were no candidates to transfer the vote to./p hr /h3 id=anchor-1 style=margin-bottom:0Round 1/h3 p style=margin-top:0;font-size:small; (a href=#anchor-2next/a)/p div id=c0_1/div script type=text/javascript !--//--![CDATA[// !-- var data = new google.visualization.DataTable(); data.addColumn(string, Candidate); data.addColumn(number, Votes); data.addColumn({type:string, role:tooltip}); data.addColumn(number, Received); data.addColumn({type:string, role:tooltip}); data.addColumn(number, Transferred); data.addColumn({type:string, role:tooltip}); data.addRows([ [-enzo-, 243, Votes: 243, null, Votes: 243, null, Votes: 243], [jackniu, 115, Votes: 115, null, Votes: 115, null, Votes: 115], [mehuls, 9, Votes: 9, null, Votes: 9, null, Votes: 9], [Rahul Seth, 12, Votes: 12, null, Votes: 12, null, Votes: 12], [redacted, 28, Votes: 28, null, Votes: 28, null, Votes: 28], [Riaan Burger, 65, Votes: 65, null, Votes: 65, null, Votes: 65], [gurubryan, 3, Votes: 3, null, Votes: 3, null, Votes: 3], [ok_lyndsey, 115, Votes: 115, null, Votes: 115, null, Votes: 115], [johnkennedy, 70, Votes: 70, null, Votes: 70, null, Votes: 70], [zet, 11, Votes: 11, null, Votes: 11, null, Votes: 11], [Prasad Shir, 140, Votes: 140, null, Votes: 140, null, Votes: 140], [rszrama, 377, Votes: 377, null, Votes: 377, null, Votes: 377], [MatthewS, 52, Votes: 52, null, Votes: 52, null, Votes: 52], [Exhausted, null, Votes: 0, null, Votes: 0, null, Votes: 0] ]); var options = { seriesType:'bars', orientation:'vertical', width:'100%', height:375, legend:{position:none}, chartArea:{left:100,top:0,width:'100%',height:350}, hAxis:{maxValue:557}, isStacked:true, colors:[#fcd050, #87cf32, #ef3638, #000000], series:{3:{type:'line', lineDashStyle:[8, 4]}} }; var chart = new google.visualization.ComboChart(document.getElementById(c0_1)); chart.draw(data, options); //--!]] /scriptpCount of first choices. /p hr /h3 id=anchor-2 style=margin-bottom:0Round 2/h3 p style=margin-top:0;font-size:small; (a href=#anchor-1prev/a)(a href=#anchor-3next/a)/p div id=c0_2/div script type=text/javascript !--//--![CDATA[// !-- var data = new google.visualization.DataTable(); data.addColumn(string, Candidate); data.addColumn(number, Votes); data.addColumn({type:string, role:tooltip}); data.addColumn(number, Received); data.addColumn({type:string, role:tooltip}); data.addColumn(number, Transferred); data.addColumn({type:string, role:tooltip}); data.addRows([ [-enzo-, 243, Votes: 243, null, Votes: 243, null, Votes: 243], [jackniu, 115, Votes: 115, null, Votes: 115, null, Votes: 115], [mehuls, 9, Votes: 9, null, Votes: 9, null, Votes: 9], [Rahul Seth, 12, Votes: 13\nReceived: 1, 1, Votes: 13\nReceived: 1, null, Votes: 13\nReceived: 1], [redacted, 28, Votes: 28, null, Votes: 28, null, Votes: 28], [Riaan Burger, 65, Votes: 65, null, Votes: 65, null, Votes: 65], [gurubryan, null, Votes: 0\nTransferred: 3, null, Votes: 0\nTransferred: 3, 3, Votes: 0\nTransferred: 3], [ok_lyndsey, 115, Votes: 116\nReceived: 1, 1, Votes: 116\nReceived: 1, null, Votes: 116\nReceived: 1], [johnkennedy, 70, Votes: 70, null, Votes: 70, null, Votes: 70], [zet, 11, Votes: 11, null, Votes: 11, null, Votes: 11], [Prasad Shir, 140, Votes: 140, null, Votes: 140, null, Votes: 140], [rszrama, 377, Votes: 378\nReceived: 1, 1, Votes: 378\nReceived: 1, null, Votes: 378\nReceived: 1], [MatthewS, 52, Votes: 52, null, Votes: 52, null, Votes: 52], [Exhausted, null, Votes: 0, null, Votes: 0, null, Votes: 0] ]); var options = { seriesType:'bars', orientation:'vertical', width:'100%', height:375, legend:{position:none}, chartArea:{left:100,top:0,width:'100%',height:350}, hAxis:{maxValue:557}, isStacked:true, colors:[#fcd050, #87cf32, #ef3638, #000000], series:{3:{type:'line', lineDashStyle:[8, 4]}} }; var chart = new google.visualization.ComboChart(document.getElementById(c0_2)); chart.draw(data, options); //--!]] /scriptpCount after eliminating gurubryan and transferring votes. /p hr /h3 id=anchor-3 style=margin-bottom:0Round 3/h3 p style=margin-top:0;font-size:small; (a href=#anchor-2prev/a)(a href=#anchor-4next/a)/p div id=c0_3/div script type=text/javascript !--//--![CDATA[// !-- var data = new google.visualization.DataTable(); data.addColumn(string, Candidate); data.addColumn(number, Votes); data.addColumn({type:string, role:tooltip}); data.addColumn(number, Received); data.addColumn({type:string, role:tooltip}); data.addColumn(number, Transferred); data.addColumn({type:string, role:tooltip}); data.addRows([ [-enzo-, 243, Votes: 244\nReceived: 1, 1, Votes: 244\nReceived: 1, null, Votes: 244\nReceived: 1], [jackniu, 115, Votes: 115, null, Votes: 115, null, Votes: 115], [mehuls, null, Votes: 0\nTransferred: 9, null, Votes: 0\nTransferred: 9, 9, Votes: 0\nTransferred: 9], [Rahul Seth, 13, Votes: 14\nReceived: 1, 1, Votes: 14\nReceived: 1, null, Votes: 14\nReceived: 1], [redacted, 28, Votes: 28, null, Votes: 28, null, Votes: 28], [Riaan Burger, 65, Votes: 66\nReceived: 1, 1, Votes: 66\nReceived: 1, null, Votes: 66\nReceived: 1], [gurubryan, null, Votes: 0, null, Votes: 0, null, Votes: 0], [ok_lyndsey, 116, Votes: 116, null, Votes: 116, null, Votes: 116], [johnkennedy, 70, Votes: 71\nReceived: 1, 1, Votes: 71\nReceived: 1, null, Votes: 71\nReceived: 1], [zet, 11, Votes: 12\nReceived: 1, 1, Votes: 12\nReceived: 1, null, Votes: 12\nReceived: 1], [Prasad Shir, 140, Votes: 140, null, Votes: 140, null, Votes: 140], [rszrama, 378, Votes: 379\nReceived: 1, 1, Votes: 379\nReceived: 1, null, Votes: 379\nReceived: 1], [MatthewS, 52, Votes: 52, null, Votes: 52, null, Votes: 52], [Exhausted, null, Votes: 3\nReceived: 3, 3, Votes: 3\nReceived: 3, null, Votes: 3\nReceived: 3] ]); var options = { seriesType:'bars', orientation:'vertical', width:'100%', height:375, legend:{position:none}, chartArea:{left:100,top:0,width:'100%',height:350}, hAxis:{maxValue:557}, isStacked:true, colors:[#fcd050, #87cf32, #ef3638, #000000], series:{3:{type:'line', lineDashStyle:[8, 4]}} }; var chart = new google.visualization.ComboChart(document.getElementById(c0_3)); chart.draw(data, options); //--!]] /scriptpCount after eliminating mehuls and transferring votes. /p hr /h3 id=anchor-4 style=margin-bottom:0Round 4/h3 p style=margin-top:0;font-size:small; (a href=#anchor-3prev/a)(a href=#anchor-5next/a)/p div id=c0_4/div script type=text/javascript !--//--![CDATA[// !-- var data = new google.visualization.DataTable(); data.addColumn(string, Candidate); data.addColumn(number, Votes); data.addColumn({type:string, role:tooltip}); data.addColumn(number, Received); data.addColumn({type:string, role:tooltip}); data.addColumn(number, Transferred); data.addColumn({type:string, role:tooltip}); data.addRows([ [-enzo-, 244, Votes: 245\nReceived: 1, 1, Votes: 245\nReceived: 1, null, Votes: 245\nReceived: 1], [jackniu, 115, Votes: 115, null, Votes: 115, null, Votes: 115], [mehuls, null, Votes: 0, null, Votes: 0, null, Votes: 0], [Rahul Seth, 14, Votes: 14, null, Votes: 14, null, Votes: 14], [redacted, 28, Votes: 29\nReceived: 1, 1, Votes: 29\nReceived: 1, null, Votes: 29\nReceived: 1], [Riaan Burger, 66, Votes: 66, null, Votes: 66, null, Votes: 66], [gurubryan, null, Votes: 0, null, Votes: 0, null, Votes: 0], [ok_lyndsey, 116, Votes: 119\nReceived: 3, 3, Votes: 119\nReceived: 3, null, Votes: 119\nReceived: 3], [johnkennedy, 71, Votes: 71, null, Votes: 71, null, Votes: 71], [zet, null, Votes: 0\nTransferred: 12, null, Votes: 0\nTransferred: 12, 12, Votes: 0\nTransferred: 12], [Prasad Shir, 140, Votes: 140, null, Votes: 140, null, Votes: 140], [rszrama, 379, Votes: 379, null, Votes: 379, null, Votes: 379], [MatthewS, 52, Votes: 52, null, Votes: 52, null, Votes: 52], [Exhausted, 3, Votes: 10\nReceived: 7, 7, Votes: 10\nReceived: 7, null, Votes: 10\nReceived: 7] ]); var options = { seriesType:'bars', orientation:'vertical', width:'100%', height:375, legend:{position:none}, chartArea:{left:100,top:0,width:'100%',height:350}, hAxis:{maxValue:557}, isStacked:true, colors:[#fcd050, #87cf32, #ef3638, #000000], series:{3:{type:'line', lineDashStyle:[8, 4]}} }; var chart = new google.visualization.ComboChart(document.getElementById(c0_4)); chart.draw(data, options); //--!]] /scriptpCount after eliminating zet and transferring votes. /p hr /h3 id=anchor-5 style=margin-bottom:0Round 5/h3 p style=margin-top:0;font-size:small; (a href=#anchor-4prev/a)(a href=#anchor-6next/a)/p div id=c0_5/div script type=text/javascript !--//--![CDATA[// !-- var data = new google.visualization.DataTable(); data.addColumn(string, Candidate); data.addColumn(number, Votes); data.addColumn({type:string, role:tooltip}); data.addColumn(number, Received); data.addColumn({type:string, role:tooltip}); data.addColumn(number, Transferred); data.addColumn({type:string, role:tooltip}); data.addRows([ [-enzo-, 245, Votes: 245, null, Votes: 245, null, Votes: 245], [jackniu, 115, Votes: 116\nReceived: 1, 1, Votes: 116\nReceived: 1, null, Votes: 116\nReceived: 1], [mehuls, null, Votes: 0, null, Votes: 0, null, Votes: 0], [Rahul Seth, null, Votes: 0\nTransferred: 14, null, Votes: 0\nTransferred: 14, 14, Votes: 0\nTransferred: 14], [redacted, 29, Votes: 30\nReceived: 1, 1, Votes: 30\nReceived: 1, null, Votes: 30\nReceived: 1], [Riaan Burger, 66, Votes: 66, null, Votes: 66, null, Votes: 66], [gurubryan, null, Votes: 0, null, Votes: 0, null, Votes: 0], [ok_lyndsey, 119, Votes: 119, null, Votes: 119, null, Votes: 119], [johnkennedy, 71, Votes: 72\nReceived: 1, 1, Votes: 72\nReceived: 1, null, Votes: 72\nReceived: 1], [zet, null, Votes: 0, null, Votes: 0, null, Votes: 0], [Prasad Shir, 140, Votes: 142\nReceived: 2, 2, Votes: 142\nReceived: 2, null, Votes: 142\nReceived: 2], [rszrama, 379, Votes: 380\nReceived: 1, 1, Votes: 380\nReceived: 1, null, Votes: 380\nReceived: 1], [MatthewS, 52, Votes: 52, null, Votes: 52, null, Votes: 52], [Exhausted, 10, Votes: 18\nReceived: 8, 8, Votes: 18\nReceived: 8, null, Votes: 18\nReceived: 8] ]); var options = { seriesType:'bars', orientation:'vertical', width:'100%', height:375, legend:{position:none}, chartArea:{left:100,top:0,width:'100%',height:350}, hAxis:{maxValue:557}, isStacked:true, colors:[#fcd050, #87cf32, #ef3638, #000000], series:{3:{type:'line', lineDashStyle:[8, 4]}} }; var chart = new google.visualization.ComboChart(document.getElementById(c0_5)); chart.draw(data, options); //--!]] /scriptpCount after eliminating Rahul Seth and transferring votes. /p hr /h3 id=anchor-6 style=margin-bottom:0Round 6/h3 p style=margin-top:0;font-size:small; (a href=#anchor-5prev/a)(a href=#anchor-7next/a)/p div id=c0_6/div script type=text/javascript !--//--![CDATA[// !-- var data = new google.visualization.DataTable(); data.addColumn(string, Candidate); data.addColumn(number, Votes); data.addColumn({type:string, role:tooltip}); data.addColumn(number, Received); data.addColumn({type:string, role:tooltip}); data.addColumn(number, Transferred); data.addColumn({type:string, role:tooltip}); data.addRows([ [-enzo-, 245, Votes: 245, null, Votes: 245, null, Votes: 245], [jackniu, 116, Votes: 117\nReceived: 1, 1, Votes: 117\nReceived: 1, null, Votes: 117\nReceived: 1], [mehuls, null, Votes: 0, null, Votes: 0, null, Votes: 0], [Rahul Seth, null, Votes: 0, null, Votes: 0, null, Votes: 0], [redacted, null, Votes: 0\nTransferred: 30, null, Votes: 0\nTransferred: 30, 30, Votes: 0\nTransferred: 30], [Riaan Burger, 66, Votes: 68\nReceived: 2, 2, Votes: 68\nReceived: 2, null, Votes: 68\nReceived: 2], [gurubryan, null, Votes: 0, null, Votes: 0, null, Votes: 0], [ok_lyndsey, 119, Votes: 119, null, Votes: 119, null, Votes: 119], [johnkennedy, 72, Votes: 74\nReceived: 2, 2, Votes: 74\nReceived: 2, null, Votes: 74\nReceived: 2], [zet, null, Votes: 0, null, Votes: 0, null, Votes: 0], [Prasad Shir, 142, Votes: 143\nReceived: 1, 1, Votes: 143\nReceived: 1, null, Votes: 143\nReceived: 1], [rszrama, 380, Votes: 380, null, Votes: 380, null, Votes: 380], [MatthewS, 52, Votes: 55\nReceived: 3, 3, Votes: 55\nReceived: 3, null, Votes: 55\nReceived: 3], [Exhausted, 18, Votes: 39\nReceived: 21, 21, Votes: 39\nReceived: 21, null, Votes: 39\nReceived: 21] ]); var options = { seriesType:'bars', orientation:'vertical', width:'100%', height:375, legend:{position:none}, chartArea:{left:100,top:0,width:'100%',height:350}, hAxis:{maxValue:557}, isStacked:true, colors:[#fcd050, #87cf32, #ef3638, #000000], series:{3:{type:'line', lineDashStyle:[8, 4]}} }; var chart = new google.visualization.ComboChart(document.getElementById(c0_6)); chart.draw(data, options); //--!]] /scriptpCount after eliminating redacted and transferring votes. /p hr /h3 id=anchor-7 style=margin-bottom:0Round 7/h3 p style=margin-top:0;font-size:small; (a href=#anchor-6prev/a)(a href=#anchor-8next/a)/p div id=c0_7/div script type=text/javascript !--//--![CDATA[// !-- var data = new google.visualization.DataTable(); data.addColumn(string, Candidate); data.addColumn(number, Votes); data.addColumn({type:string, role:tooltip}); data.addColumn(number, Received); data.addColumn({type:string, role:tooltip}); data.addColumn(number, Transferred); data.addColumn({type:string, role:tooltip}); data.addRows([ [-enzo-, 245, Votes: 255\nReceived: 10, 10, Votes: 255\nReceived: 10, null, Votes: 255\nReceived: 10], [jackniu, 117, Votes: 118\nReceived: 1, 1, Votes: 118\nReceived: 1, null, Votes: 118\nReceived: 1], [mehuls, null, Votes: 0, null, Votes: 0, null, Votes: 0], [Rahul Seth, null, Votes: 0, null, Votes: 0, null, Votes: 0], [redacted, null, Votes: 0, null, Votes: 0, null, Votes: 0], [Riaan Burger, 68, Votes: 74\nReceived: 6, 6, Votes: 74\nReceived: 6, null, Votes: 74\nReceived: 6], [gurubryan, null, Votes: 0, null, Votes: 0, null, Votes: 0], [ok_lyndsey, 119, Votes: 126\nReceived: 7, 7, Votes: 126\nReceived: 7, null, Votes: 126\nReceived: 7], [johnkennedy, 74, Votes: 77\nReceived: 3, 3, Votes: 77\nReceived: 3, null, Votes: 77\nReceived: 3], [zet, null, Votes: 0, null, Votes: 0, null, Votes: 0], [Prasad Shir, 143, Votes: 144\nReceived: 1, 1, Votes: 144\nReceived: 1, null, Votes: 144\nReceived: 1], [rszrama, 380, Votes: 398\nReceived: 18, 18, Votes: 398\nReceived: 18, null, Votes: 398\nReceived: 18], [MatthewS, null, Votes: 0\nTransferred: 55, null, Votes: 0\nTransferred: 55, 55, Votes: 0\nTransferred: 55], [Exhausted, 39, Votes: 48\nReceived: 9, 9, Votes: 48\nReceived: 9, null, Votes: 48\nReceived: 9] ]); var options = { seriesType:'bars', orientation:'vertical', width:'100%', height:375, legend:{position:none}, chartArea:{left:100,top:0,width:'100%',height:350}, hAxis:{maxValue:557}, isStacked:true, colors:[#fcd050, #87cf32, #ef3638, #000000], series:{3:{type:'line', lineDashStyle:[8, 4]}} }; var chart = new google.visualization.ComboChart(document.getElementById(c0_7)); chart.draw(data, options); //--!]] /scriptpCount after eliminating MatthewS and transferring votes. /p hr /h3 id=anchor-8 style=margin-bottom:0Round 8/h3 p style=margin-top:0;font-size:small; (a href=#anchor-7prev/a)(a href=#anchor-9next/a)/p div id=c0_8/div script type=text/javascript !--//--![CDATA[// !-- var data = new google.visualization.DataTable(); data.addColumn(string, Candidate); data.addColumn(number, Votes); data.addColumn({type:string, role:tooltip}); data.addColumn(number, Received); data.addColumn({type:string, role:tooltip}); data.addColumn(number, Transferred); data.addColumn({type:string, role:tooltip}); data.addRows([ [-enzo-, 255, Votes: 259\nReceived: 4, 4, Votes: 259\nReceived: 4, null, Votes: 259\nReceived: 4], [jackniu, 118, Votes: 125\nReceived: 7, 7, Votes: 125\nReceived: 7, null, Votes: 125\nReceived: 7], [mehuls, null, Votes: 0, null, Votes: 0, null, Votes: 0], [Rahul Seth, null, Votes: 0, null, Votes: 0, null, Votes: 0], [redacted, null, Votes: 0, null, Votes: 0, null, Votes: 0], [Riaan Burger, null, Votes: 0\nTransferred: 74, null, Votes: 0\nTransferred: 74, 74, Votes: 0\nTransferred: 74], [gurubryan, null, Votes: 0, null, Votes: 0, null, Votes: 0], [ok_lyndsey, 126, Votes: 139\nReceived: 13, 13, Votes: 139\nReceived: 13, null, Votes: 139\nReceived: 13], [johnkennedy, 77, Votes: 84\nReceived: 7, 7, Votes: 84\nReceived: 7, null, Votes: 84\nReceived: 7], [zet, null, Votes: 0, null, Votes: 0, null, Votes: 0], [Prasad Shir, 144, Votes: 148\nReceived: 4, 4, Votes: 148\nReceived: 4, null, Votes: 148\nReceived: 4], [rszrama, 398, Votes: 414\nReceived: 16, 16, Votes: 414\nReceived: 16, null, Votes: 414\nReceived: 16], [MatthewS, null, Votes: 0, null, Votes: 0, null, Votes: 0], [Exhausted, 48, Votes: 71\nReceived: 23, 23, Votes: 71\nReceived: 23, null, Votes: 71\nReceived: 23] ]); var options = { seriesType:'bars', orientation:'vertical', width:'100%', height:375, legend:{position:none}, chartArea:{left:100,top:0,width:'100%',height:350}, hAxis:{maxValue:557}, isStacked:true, colors:[#fcd050, #87cf32, #ef3638, #000000], series:{3:{type:'line', lineDashStyle:[8, 4]}} }; var chart = new google.visualization.ComboChart(document.getElementById(c0_8)); chart.draw(data, options); //--!]] /scriptpCount after eliminating Riaan Burger and transferring votes. /p hr /h3 id=anchor-9 style=margin-bottom:0Round 9/h3 p style=margin-top:0;font-size:small; (a href=#anchor-8prev/a)(a href=#anchor-10next/a)/p div id=c0_9/div script type=text/javascript !--//--![CDATA[// !-- var data = new google.visualization.DataTable(); data.addColumn(string, Candidate); data.addColumn(number, Votes); data.addColumn({type:string, role:tooltip}); data.addColumn(number, Received); data.addColumn({type:string, role:tooltip}); data.addColumn(number, Transferred); data.addColumn({type:string, role:tooltip}); data.addRows([ [-enzo-, 259, Votes: 266\nReceived: 7, 7, Votes: 266\nReceived: 7, null, Votes: 266\nReceived: 7], [jackniu, 125, Votes: 133\nReceived: 8, 8, Votes: 133\nReceived: 8, null, Votes: 133\nReceived: 8], [mehuls, null, Votes: 0, null, Votes: 0, null, Votes: 0], [Rahul Seth, null, Votes: 0, null, Votes: 0, null, Votes: 0], [redacted, null, Votes: 0, null, Votes: 0, null, Votes: 0], [Riaan Burger, null, Votes: 0, null, Votes: 0, null, Votes: 0], [gurubryan, null, Votes: 0, null, Votes: 0, null, Votes: 0], [ok_lyndsey, 139, Votes: 155\nReceived: 16, 16, Votes: 155\nReceived: 16, null, Votes: 155\nReceived: 16], [johnkennedy, null, Votes: 0\nTransferred: 84, null, Votes: 0\nTransferred: 84, 84, Votes: 0\nTransferred: 84], [zet, null, Votes: 0, null, Votes: 0, null, Votes: 0], [Prasad Shir, 148, Votes: 165\nReceived: 17, 17, Votes: 165\nReceived: 17, null, Votes: 165\nReceived: 17], [rszrama, 414, Votes: 432\nReceived: 18, 18, Votes: 432\nReceived: 18, null, Votes: 432\nReceived: 18], [MatthewS, null, Votes: 0, null, Votes: 0, null, Votes: 0], [Exhausted, 71, Votes: 89\nReceived: 18, 18, Votes: 89\nReceived: 18, null, Votes: 89\nReceived: 18] ]); var options = { seriesType:'bars', orientation:'vertical', width:'100%', height:375, legend:{position:none}, chartArea:{left:100,top:0,width:'100%',height:350}, hAxis:{maxValue:557}, isStacked:true, colors:[#fcd050, #87cf32, #ef3638, #000000], series:{3:{type:'line', lineDashStyle:[8, 4]}} }; var chart = new google.visualization.ComboChart(document.getElementById(c0_9)); chart.draw(data, options); //--!]] /scriptpCount after eliminating johnkennedy and transferring votes. /p hr /h3 id=anchor-10 style=margin-bottom:0Round 10/h3 p style=margin-top:0;font-size:small; (a href=#anchor-9prev/a)(a href=#anchor-11next/a)/p div id=c0_10/div script type=text/javascript !--//--![CDATA[// !-- var data = new google.visualization.DataTable(); data.addColumn(string, Candidate); data.addColumn(number, Votes); data.addColumn({type:string, role:tooltip}); data.addColumn(number, Received); data.addColumn({type:string, role:tooltip}); data.addColumn(number, Transferred); data.addColumn({type:string, role:tooltip}); data.addRows([ [-enzo-, 266, Votes: 322\nReceived: 56, 56, Votes: 322\nReceived: 56, null, Votes: 322\nReceived: 56], [jackniu, null, Votes: 0\nTransferred: 133, null, Votes: 0\nTransferred: 133, 133, Votes: 0\nTransferred: 133], [mehuls, null, Votes: 0, null, Votes: 0, null, Votes: 0], [Rahul Seth, null, Votes: 0, null, Votes: 0, null, Votes: 0], [redacted, null, Votes: 0, null, Votes: 0, null, Votes: 0], [Riaan Burger, null, Votes: 0, null, Votes: 0, null, Votes: 0], [gurubryan, null, Votes: 0, null, Votes: 0, null, Votes: 0], [ok_lyndsey, 155, Votes: 167\nReceived: 12, 12, Votes: 167\nReceived: 12, null, Votes: 167\nReceived: 12], [johnkennedy, null, Votes: 0, null, Votes: 0, null, Votes: 0], [zet, null, Votes: 0, null, Votes: 0, null, Votes: 0], [Prasad Shir, 165, Votes: 171\nReceived: 6, 6, Votes: 171\nReceived: 6, null, Votes: 171\nReceived: 6], [rszrama, 432, Votes: 443\nReceived: 11, 11, Votes: 443\nReceived: 11, null, Votes: 443\nReceived: 11], [MatthewS, null, Votes: 0, null, Votes: 0, null, Votes: 0], [Exhausted, 89, Votes: 137\nReceived: 48, 48, Votes: 137\nReceived: 48, null, Votes: 137\nReceived: 48] ]); var options = { seriesType:'bars', orientation:'vertical', width:'100%', height:375, legend:{position:none}, chartArea:{left:100,top:0,width:'100%',height:350}, hAxis:{maxValue:557}, isStacked:true, colors:[#fcd050, #87cf32, #ef3638, #000000], series:{3:{type:'line', lineDashStyle:[8, 4]}} }; var chart = new google.visualization.ComboChart(document.getElementById(c0_10)); chart.draw(data, options); //--!]] /scriptpCount after eliminating jackniu and transferring votes. /p hr /h3 id=anchor-11 style=margin-bottom:0Round 11/h3 p style=margin-top:0;font-size:small; (a href=#anchor-10prev/a)(a href=#anchor-12next/a)/p div id=c0_11/div script type=text/javascript !--//--![CDATA[// !-- var data = new google.visualization.DataTable(); data.addColumn(string, Candidate); data.addColumn(number, Votes); data.addColumn({type:string, role:tooltip}); data.addColumn(number, Received); data.addColumn({type:string, role:tooltip}); data.addColumn(number, Transferred); data.addColumn({type:string, role:tooltip}); data.addRows([ [-enzo-, 322, Votes: 356\nReceived: 34, 34, Votes: 356\nReceived: 34, null, Votes: 356\nReceived: 34], [jackniu, null, Votes: 0, null, Votes: 0, null, Votes: 0], [mehuls, null, Votes: 0, null, Votes: 0, null, Votes: 0], [Rahul Seth, null, Votes: 0, null, Votes: 0, null, Votes: 0], [redacted, null, Votes: 0, null, Votes: 0, null, Votes: 0], [Riaan Burger, null, Votes: 0, null, Votes: 0, null, Votes: 0], [gurubryan, null, Votes: 0, null, Votes: 0, null, Votes: 0], [ok_lyndsey, null, Votes: 0\nTransferred: 167, null, Votes: 0\nTransferred: 167, 167, Votes: 0\nTransferred: 167], [johnkennedy, null, Votes: 0, null, Votes: 0, null, Votes: 0], [zet, null, Votes: 0, null, Votes: 0, null, Votes: 0], [Prasad Shir, 171, Votes: 187\nReceived: 16, 16, Votes: 187\nReceived: 16, null, Votes: 187\nReceived: 16], [rszrama, 443, Votes: 496\nReceived: 53, 53, Votes: 496\nReceived: 53, null, Votes: 496\nReceived: 53], [MatthewS, null, Votes: 0, null, Votes: 0, null, Votes: 0], [Exhausted, 137, Votes: 201\nReceived: 64, 64, Votes: 201\nReceived: 64, null, Votes: 201\nReceived: 64] ]); var options = { seriesType:'bars', orientation:'vertical', width:'100%', height:375, legend:{position:none}, chartArea:{left:100,top:0,width:'100%',height:350}, hAxis:{maxValue:557}, isStacked:true, colors:[#fcd050, #87cf32, #ef3638, #000000], series:{3:{type:'line', lineDashStyle:[8, 4]}} }; var chart = new google.visualization.ComboChart(document.getElementById(c0_11)); chart.draw(data, options); //--!]] /scriptpCount after eliminating ok_lyndsey and transferring votes. /p hr /h3 id=anchor-12 style=margin-bottom:0Round 12/h3 p style=margin-top:0;font-size:small; (a href=#anchor-11prev/a)/p div id=c0_12/div script type=text/javascript !--//--![CDATA[// !-- var data = new google.visualization.DataTable(); data.addColumn(string, Candidate); data.addColumn(number, Votes); data.addColumn({type:string, role:tooltip}); data.addColumn(number, Received); data.addColumn({type:string, role:tooltip}); data.addColumn(number, Transferred); data.addColumn({type:string, role:tooltip}); data.addRows([ [-enzo-, 356, Votes: 390\nReceived: 34, 34, Votes: 390\nReceived: 34, null, Votes: 390\nReceived: 34], [jackniu, null, Votes: 0, null, Votes: 0, null, Votes: 0], [mehuls, null, Votes: 0, null, Votes: 0, null, Votes: 0], [Rahul Seth, null, Votes: 0, null, Votes: 0, null, Votes: 0], [redacted, null, Votes: 0, null, Votes: 0, null, Votes: 0], [Riaan Burger, null, Votes: 0, null, Votes: 0, null, Votes: 0], [gurubryan, null, Votes: 0, null, Votes: 0, null, Votes: 0], [ok_lyndsey, null, Votes: 0, null, Votes: 0, null, Votes: 0], [johnkennedy, null, Votes: 0, null, Votes: 0, null, Votes: 0], [zet, null, Votes: 0, null, Votes: 0, null, Votes: 0], [Prasad Shir, null, Votes: 0\nTransferred: 187, null, Votes: 0\nTransferred: 187, 187, Votes: 0\nTransferred: 187], [rszrama, 496, Votes: 557\nReceived: 61, 61, Votes: 557\nReceived: 61, null, Votes: 557\nReceived: 61], [MatthewS, null, Votes: 0, null, Votes: 0, null, Votes: 0], [Exhausted, 201, Votes: 293\nReceived: 92, 92, Votes: 293\nReceived: 92, null, Votes: 293\nReceived: 92] ]); var options = { seriesType:'bars', orientation:'vertical', width:'100%', height:375, legend:{position:none}, chartArea:{left:100,top:0,width:'100%',height:350}, hAxis:{maxValue:557}, isStacked:true, colors:[#fcd050, #87cf32, #ef3638, #000000], series:{3:{type:'line', lineDashStyle:[8, 4]}} }; var chart = new google.visualization.ComboChart(document.getElementById(c0_12)); chart.draw(data, options); //--!]] /scriptpCount after eliminating Prasad Shir and transferring votes. Candidate rszrama is elected. /p hr /h3Winners/h3 pWinner is rszrama./p script type=text/javascript !--//--![CDATA[// !-- $(document).ready(function() { }); //--!]] /script/div/div/div

Virtuoso Performance: Thoughts on the Drupal community

Mon, 03/27/2017 - 17:47
span property=schema:name class=field field-name-title field-formatter-string field-type-string field-label-hiddenThoughts on the Drupal community/span div property=schema:text class=clearfix text-formatted field field-node--body field-formatter-text-default field-name-body field-type-text-with-summary field-label-hidden has-singlediv class=field__itemsdiv property=schema:text class=field__itemp dir=ltrspanI did make /spana href=http://buytaert.net/comment/131486#comment-131486spanone comment on Dries’ blog/span/aspan in the immediate aftermath of learning about the situation which is roiling the Drupal community, but since then have taken some time to listen and ponder. The community is in deep pain now, and many of us are reacting to that pain with anger. Trust is in short supply. Healing seems nearly impossible./span/p p dir=ltrspanWe need to start from compassion for all involved. The pain is deepest for those in the middle. /spana href=https://www.garfieldtech.com/blog/tmi-outingspanLarry has already expressed his pain eloquently/span/aspan - I know losing the Drupal community would cut me deeply, and pragmatically this is a major blow to his career as well. But, let’s also consider Drupal leadership - Dries, the /spana href=https://www.drupal.org/associationspanDrupal Association/span/aspan, the /spana href=https://www.drupal.org/governance/community-working-groupspanCommunity Working Group/span/aspan. Regardless of whether we agree with their decision, I see no reason to believe it was done arbitrarily or with malice. Reaching such a decision against someone who has given so much to the community over the years must have been extraordinarily difficult, and the fact that this decision seems to have eroded much of the community’s trust in them is surely agonizing./span/p p dir=ltrspanWe need to recognize and address the asymmetries in this situation. The power in the relationship is unbalanced - Drupal leadership has an ability to affect Larry’s life profoundly that is not reflected. On the other hand, the information is also unbalanced - Larry is able to say what he chooses publicly, but the Drupal leadership has a responsibility to maintain confidentiality. Yes, “confidentiality” can be used as a smokescreen - but there really is a legitimate need to respect it - to protect those who gave evidence to the CWG, and to protect Larry himself from public accusations without public evidence. Transparency and confidentiality are at odds, and it is exceedingly difficult to find a “perfect” balance between them./span/p p dir=ltrspanThat all being said, and recognizing that the information I have is incomplete, my main thoughts on the three parties involved:/span/p olli dir=ltr p dir=ltrspanThe impression Larry’s blog post leaves is that his dismissal was primarily due to BDSM/Gorean practices in individual personal relationships (that certainly appears to be the main takeaway in much of the criticism online). On the other hand, statements from the other side suggest it may have had more to do with broader statements of belief (and commitment to living that belief totally) which seem in conflict with the Drupal community’s values (although it’s difficult for me to be sure of whether they were meant to be taken literally in the real world, or as a form of cosplay - as portrayal of a Gorean character). Just to be clear - although I strongly disagree with some statements I saw, as long as they were not reflected in Larry’s behavior within the Drupal community I don’t see standing to dismiss him (except, perhaps, from representation to the PHP community if it seemed like it might diminish his effectiveness in that role). But, if this was indeed the main issue presented to Larry, I would have liked to see him address it head-on. He does deal with it somewhat in the section “/spanemLarry is a proponent for the enslavement of women!/emspan”, but the section title itself looks like an exaggeration of the actual accusation, and it is down at the bottom of the accusations he addresses, de-emphasizing it./span/p /li li dir=ltr p dir=ltrspanI think Drupal leadership needs to tilt the balance at least a little more towards transparency. The community does need to better understand broadly why Larry was dismissed. Dries’ post stated “I did this because it came to my attention that he holds views that are in opposition with the values of the Drupal project”. This suggests that the primary reason for the dismissal was those statements outside of Drupal - I (and many others) feel that what happens outside of the Drupal community, should stay outside of the Drupal community. Then, the DA stated “We want to be clear that the decision to remove Larry's DrupalCon session and track chair role was not because of his private life or personal beliefs... Our decision was based on confidential information conveyed in private by many sources.” This contradicts Dries’ original statement, which is concerning. It also fails to address the central concern many people have - did Larry do or say anything /spanwithinspan the Drupal community?/span/p /li li dir=ltr p dir=ltrspanI don’t think the Drupal community has acquitted itself well here. The immediate outpouring has been based on one point of view - admittedly, there is little hard information otherwise, but we should all be slower to react when we know we don’t have all the facts, and lead off with questions rather than diatribes. One thing to be concerned about is that the one-sided onslaught is likely to discourage expressions that disagree with the crowd - anyone who might agree with the Drupal leadership’s decision, or who might know of some concrete reasons they may have made that decision, has reason to fear speaking up. I’m thinking here of /spana href=https://en.wikipedia.org/wiki/Gamergate_controversyspanGamerGate/span/aspan. No, I’m not saying the people criticizing the decision are like the GamerGaters - but what I am saying is that, given that the center of this controversy is around beliefs and statements that look an awful lot like misogyny, and that much of the rhetoric has carried a whiff of torches and pitchforks, I would not be at all surprised if women (and feminists of all gender identities) felt good reason to fear a GamerGate-like backlash if they did speak up. We need to leave more room for all voices and not flood the space unilaterally./span/p /li /olp dir=ltrspanSo, where do we go from here? In reverse order,/span/p olli dir=ltr p dir=ltrspanThe Drupal community is certainly Internet-savvy - we’ve all seen so many cases where based on one piece of information the flamers descend without waiting for fact-checking, the other side of the story, etc. We need to jerk our knees a little more slowly. We need to recognize we don’t have (and will never have) all the information, and the fact that we won’t have it is not in and of itself proof that the decisions of Dries/DA/CWG were wrong./span/p /li li dir=ltr p dir=ltrspanDrupal leadership does need to tell us more, and I think it can be done without violating confidentiality. Simply put - did Larry’s dismissal involve anything he did within the Drupal community? If they say it did, I for one, am willing to accept it and move on - I’m not in a position to know the specifics (nor should I be), but I recognize this as a legitimate exercise of authority, even if I don’t know if I would have voted the same way if I had seen the evidence. If, on the other hand, this is based purely on statements and actions outside of the Drupal community, it’s important for all of us in the Drupal community to understand that - we all need to know if the DA and CWG will hold us accountable for our online presence outside of Drupal. On that score, I’ve created a separate Twitter account for my Drupal and professional communications under my DBA, /spana href=https://twitter.com/VirtPerformancespanVirtuoso Performance/span/aspan. To be fair, I’ve considered doing this anyway just in terms of work/life balance, but now it seems all the more important to keep things separate./span/p /li li dir=ltr p dir=ltrsspanI know it’s a lot to ask - actually, I know that it’s too much to ask and don’t actually expect it, but in the interests of symmetry I’m putting it out there… It would be great if Larry could share (without violating the confidentiality of anyone involved - redacting names and details) precisely what he was told were the specific charges that led to his dismissal. We’re not going to get any specifics from the Drupal leadership side - he’s the only person who can provide us with any hard information. Again, I don’t expect this - Larry has suffered more than anyone here, and has already really put himself out there. /span/sspanEdit: a href=https://www.garfieldtech.com/blog/tmi-part-2Larry has now responded with more information/a, which I will take some time to review before making further comment./span/p /li /olpspanUltimately, while this is a painful episode in Drupal’s history, I hope we can find a way to get through it and come out the other side with a better understanding of each other, and rebuild trust within the community./span/p /div/div /div span rel=schema:author class=field field-name-uid field-formatter-author field-type-entity-reference field-label-hiddenspan lang= about=/user/6 typeof=schema:Person property=schema:name datatype=mikeryan/span/span span property=schema:dateCreated content=2017-03-27T15:47:57+00:00 class=field field-name-created field-formatter-timestamp field-type-created field-label-hiddenMonday, March 27, 2017 - 10:47am/span div class=field field-node-field-tags field-entity-reference-type-taxonomy-term field-formatter-entity-reference-label field-name-field-tags field-type-entity-reference field-label-aboveh3 class=field__labelTags/h3div class=field__itemsdiv class=field__item field__item--planet-drupal span class=field__item-wrappera href=/tags/planet-drupal property=schema:about hreflang=enPlanet Drupal/a/span /divdiv class=field__item field__item--drupal span class=field__item-wrappera href=/tags/drupal property=schema:about hreflang=enDrupal/a/span /div/div /div section rel=schema:comment class=field field-node--comment field-formatter-comment-default field-name-comment field-type-comment field-label-above display-mode-threaded comment-bundle-comment comment-wrapper a name=comments/adiv class=comment-form-wrapper h2 class=comment-form__titleAdd new comment/h2drupal-render-placeholder callback=comment.lazy_builders:renderForm arguments=0=nodeamp;1=66amp;2=commentamp;3=comment token=dbf7b108/drupal-render-placeholder/div/section

Sooper Drupal Themes: New: Customize Glazed Builder With Glazed Theme 2.6.4 and Glazed Builder 1.1.3!

Mon, 03/27/2017 - 17:40
div class=field-blog-image img typeof=foaf:Image class=img-responsive src=http://www.sooperthemes.com/sites/default/files/styles/bootstrap3_col12/public/blog-images/sooper6-blog-header_4.png?itok=bpLEetXn width=1140 height=403 / /div div class=field-body div class=az-element az-section data-az-id=b6 data-azb=az_section data-containment-id-gv191= style= div class=az-ctnr container data-azcnt=true/div /div div class=az-element az-row row az-row--sm data-az-id=b2 data-azat-device=sm data-azb=az_row data-azcnt=true style= div class=az-element az-ctnr az-column col-sm-12 data-az-id=b3 data-azb=az_column data-azcnt=true style= div class=az-element az-text data-az-id=b5 data-azb=az_text data-azcnt=true style= pToday I'm excited to announce a new Glazed Builder and Theme release... Imagine having a meeting with your client tomorrow. You've promised your client the ability to update landing pages without needing any help. The client imagines he'll just be changing images and simple text blocks. Then you show him the Glazed Builder Sidebar and it's filled with your strongemcustom designed/em/strong icon boxes, testimonial block, and even custom branded sliders. All accessible and editable without needing even basic HTML skills./p h3 class=st-title bg-glazedCustom HTML Drag and Drop Elements in the Glazed Builder Sidebar!nbsp;/h3 pAdding elements to the sidebar is now extremely easy, you don't need to have a custom module or even any PHP code. You just drop a folder with your custom elements in your theme or subtheme folder and your custom elements will magically appear as editable drag and drop elements. You just to add a class or two to indicate editable portions of your HTML elements and that's it. Of course, you can find all the details and an example zip file in the a href=http://www.sooperthemes.com/documentation/add-your-own-html-snippets-glazed-builder-sidebarsidebar elements documentation/a.nbsp;/p /div div class=az-element az-image text-center data-az-id=b7 data-azat-el_class=text-center data-azat-height= data-azat-image=https://www.sooperthemes.com/sites/default/files/glazed-builder/timeline-demo-edit-w600.gif?fid=1677 data-azat-width= data-azb=az_imageimg alt= src=https://www.sooperthemes.com/sites/default/files/glazed-builder/timeline-demo-edit-w600.gif?fid=1677 style= title=/div div class=az-element az-text data-az-id=b4 data-azb=az_text data-azcnt=true style= p/p h3 class=st-title bg-glazed style=text-align: center;Various Fixes/h3 pWe made various improvements to the Glazed Builder and Theme user experience, details of which you can read in the a href=http://www.sooperthemes.com/documentation/changelog-glazed-builderGlazed Builder Changelog/a and a href=http://www.sooperthemes.com/documentation/changelog rel=nofollowGlazed Theme changelog/a. We're ironing out as many little issues as possible while working on thea href=http://www.sooperthemes.com Drupal 8 theme releases/a!/p pNeed any help with sidebar elements? Just create a ticket in the support forum and we'll try to help you out and simultaneously improve our product to match any expectations you have that we did not think of./p /div /div/div /div div class=field-content-banner glazed-util-float-right float-right a href=http://bit.ly/1MRJwVWimg typeof=foaf:Image class=img-responsive src=http://www.sooperthemes.com/sites/default/files/default_images/sooper-theme-banner-2016-300x140.png width=300 height=140 alt= //a /div

Xeno Media: Xeno Media's Michael Porter to present The Butler Did It: Putting Jenkins To Work For You at Drupal MidCamp Saturday, April 1

Mon, 03/27/2017 - 17:12
pXeno Media Lead Developer Michael Porter was selected to present a href=https://www.midcamp.org/session/butler-did-it-putting-jenkins-work-youThe Butler Did It: Putting Jenkins To Work For You/a at Drupal MidCamp on April 1 in Chicago./p pMichael's presentation shows how use the power of Continuous Integration (CI) servers for offloading some of the repetitive tasks developers and software maintainers need to do on a daily basis. /p pThe session will demonstrate how to use Jenkins, the leading open source automation server to:/p ulliRun Drupal core and module updates/li liRun and report on behat tests/li liRun and report on Coding Standards/li liTrigger Offsite backup of production sites/li liUse Jenkins Pipeline workflows to build branch/feature based servers./li liTriggering jobs with webhooks/li liReport progress, and results to Slack/li /ulpMidCamp participation is part of Xeno Media's strategic dedication to Drupal and the Open Source community. We have been a MidCamp sponsor for two years and  Web Strategist Jim Birch is an active organizer./p pLearn more:/p ullia href=https://www.midcamp.org/MidCamp website/a/li lia href=https://www.midcamp.org/scheduleMidCamp 2017 Schedule/a/li /ul

Virtuoso Performance: The Drupal (migration) expert is in at MidCamp

Mon, 03/27/2017 - 16:55
span property=schema:name class=field field-name-title field-formatter-string field-type-string field-label-hiddenThe Drupal (migration) expert is in at MidCamp/span div property=schema:text class=clearfix text-formatted field field-node--body field-formatter-text-default field-name-body field-type-text-with-summary field-label-hidden has-singlediv class=field__itemsdiv property=schema:text class=field__itempa href=https://www.midcamp.org/MidCamp/a is imminent, and I'm proud to announce that Virtuoso Performance (i.e., me!) is sponsoring a a href=https://www.midcamp.org/drupal-expert-virtuoso-performanceDrupal Expert Is In session/a Saturday April 1 at 1pm. I'll be in the main room (120) to answer your Drupal 8 migration questions, help you get through any tricky plugin issues, and demonstrate how to approach migration problems. The plan is to make this an open session - to allow anyone interested in Drupal 8 migration to sit around the campfire and learn from each other's issues./p pMigrate all the things!/p/div/div /div span rel=schema:author class=field field-name-uid field-formatter-author field-type-entity-reference field-label-hiddenspan lang= about=/user/6 typeof=schema:Person property=schema:name datatype=mikeryan/span/span span property=schema:dateCreated content=2017-03-27T14:55:43+00:00 class=field field-name-created field-formatter-timestamp field-type-created field-label-hiddenMonday, March 27, 2017 - 09:55am/span div class=field field-node-field-tags field-entity-reference-type-taxonomy-term field-formatter-entity-reference-label field-name-field-tags field-type-entity-reference field-label-aboveh3 class=field__labelTags/h3div class=field__itemsdiv class=field__item field__item--planet-drupal span class=field__item-wrappera href=/tags/planet-drupal property=schema:about hreflang=enPlanet Drupal/a/span /divdiv class=field__item field__item--drupal span class=field__item-wrappera href=/tags/drupal property=schema:about hreflang=enDrupal/a/span /div/div /div section rel=schema:comment class=field field-node--comment field-formatter-comment-default field-name-comment field-type-comment field-label-above display-mode-threaded comment-bundle-comment comment-wrapper a name=comments/a/section div class=node__linksul class=links inlineli class=comment-forbiddena href=/user/login?destination=/blog/mikeryan/drupal-migration-expert-midcamp%23comment-formLog in/a or a href=/user/register?destination=/blog/mikeryan/drupal-migration-expert-midcamp%23comment-formregister/a to post comments/li/ul/div

ADCI Solutions: Top 10 responsive Drupal themes

Mon, 03/27/2017 - 11:32
pWe love exploring Drupal themes. They save plenty of time when you need to be ahead of everybody and launch your website as soon as possible. They simplify the whole development process for a novice Drupaller. They are designed for you so that the only thing to worry about is content that you should add to your website.br / In this article we present you the themes that cover one of Drupal out-of-box features - responsive design.a href=https://www.adcisolutions.com/knowledge/top-10-responsive-drupal-themes?utm_source=drupal-planet-feedamp;utm_medium=postamp;utm_campaign=responsive-themesamp;utm_term=noneamp;utm_content=rss-summary Click here to continue./a/p pa href=https://www.adcisolutions.com/knowledge/top-10-responsive-drupal-themes?utm_source=drupal-planet-feedamp;utm_medium=postamp;utm_campaign=responsive-themesamp;utm_term=noneamp;utm_content=rss-picimg alt= src=https://www.adcisolutions.com/sites/default/files/filebrowser/users/7/Knowledge/top_10_responsive_themes/easy%20booking.png style=width: 720px; height: 376px; //a/p

MD Systems blog: Drupal 8 security features: user-submitted data sanitization

Mon, 03/27/2017 - 09:21
Recently, we had to create a security report for one of our clients about their Drupal 8 project. We described how Drupal 8 protects against most common vulnerabilities and added some project specific tests to secure as good as possible that it cannot be attacked. This resulted in a document that we thought is worth to be transferred into a series of blog posts.

Platform.sh: Now you can save time in a database

Mon, 03/27/2017 - 03:00
p(With due apologies to Jim Croce.)/p pOur efforts to expand the power and capability of users of Platform.sh continues! The latest addition to our services suite is a href=https://docs.influxdata.com/influxdb/v1.2/Influx DB 1.2/a. Influx DB is a time-series database well suited to recording large volumes of data over time. That makes it a good choice for high-volume logging, data collection, and metrics./p pIn fact, we are planning to use it ourselves for that last point. Stay tuned…/p