There are a boat-load of modules that send notifications..Tags: notificationsdrupal 7Drupal Development18ffeaturescharlottesville city councilviews rulesprofile2taxonomy
Recently I found myself musing about two Drupal-related posts from back in 2007 that projected very different futures for the software project.
The first was by Jeff Robbins of Lullabot: “How Drupal Will Save the World.”
Robbins took as his reference case a community in Nigeria facing exploitation by a multinational oil company. Drupal, he suggested, could empower the community and “give a voice to those who might not otherwise be heard,” driving an internet that was “a powerful force for social change.” To achieve that vision, Robbins laid out technical challenges, centered on making the software easier to learn and use.
A few months after Robbins’ post, Drupal contributor Fergus Geraghty initiated a Drupal.org discussion, “7 million reasons to consider democratising Drupal?” Drupal project lead Dries Buytaert had recently co-founded the company Acquia, and Buytaert’s start-up had just announced its first round of $7 million in venture capital financing. Geraghty expressed concern that the new commercial demands of Acquia could come to shape the overall direction of Drupal, pushing the project in the direction of profit maximization. Against this future, Geraghty proposed the creation of a co-operative to serve as the owner of the Drupal project.
Seven years later, which of these futures are we living? Is Drupal empowering the marginalized and saving the world?
Or is it serving “the man”?Software Freedom and Social Change
The idea that Drupal and free software could have a role in revolutionizing society might not be as off-the-wall as it sounds.
In Mutual Aid: A Factor of Evolution, the 19th century anarchist Peter Kropotkin countered the social Darwinist “survival of the fittest” thesis by arguing that cooperation was a driving force of evolution and a basis for free human societies.
This is the third in a series of blog posts about the relationship between Drupal and Backdrop CMS, a recently-released fork of Drupal. The goal of the series is to explain how a module (or theme) developer can take a Drupal project they currently maintain and support it for Backdrop as well, while keeping duplicate work to a minimum.
Usually when you try to uninstall a field-based module you're confronted with the following error message:[module] is a required module and can't be disabled. Reason: Field type(s) in use - see Field list
In this blogpost I'm showing you how to uninstall such a module anyway (deleting all the stored data).Tags:
When you start a new project, you want your client to be happy with your solution because then you’ll get paid for what you’ve delivered. But what if your customer isn’t happy with your project results? Most likely, you won’t get paid the full amount of your order. The project setup with all the necessary agreements is one of the most critical parts of a project, and it influences the overall project's results. The good thing is that it’s not as hard as it seems to draft solid project agreements. When we at Bright Solutions start a new project, we always consider the following three questions. This provides a good basis for a robust project process that will deliver results and, ultimately, make clients happy.1) What should you deliver and when?
This question is essential and the most important one, so I’ll devote a few words to it. Spend as much time as needed to clarify all your client’s detailed requirements and have him commit to them. This detailed agreement should already be part of your quote. Don't just talk vaguely about requirements; use mind maps, mock-ups and user stories – they’re good tools for requirements engineering. This will help you avoid misunderstandings and failed projects. I’ll give you a short example:
"We need a registration process" is a requirement, in fact. You could agree on this – but you really should elaborate the particulars to reduce the risk of change requests down the road. "We need a registration process that allows a user to enter his/her company and user name in a single-line text field and with a button to sign in via Facebook" is a much more detailed requirement! Any old process by which a user can register would fulfill the first requirement, but this may not be what your customer expects. Next, always clarify the type of contract that underlies your business relationship. There are really only two kinds:
- Time and material: You’ll be hired for your skills and paid by the working hour, regardless of the result. Freelancers mostly work on this basis in project teams.
- Contract for work and labor: With this sort of contract you get paid only for the results, no matter how long you spend on delivering it.
Be conscientious and don't confuse these two contract types. Take care of the details during the engineering of requirements and write them all down.2) Who is responsible for what?
Clarify your role in the project and what kind of responsibility you’re assuming in this role. Are you a project manager, responsible for the project’s success? Are you a developer who just does the work you’re assigned? Or, are you an architect who transforms requirements into the software architecture that the developers need to do their part? This should be defined at the start of every undertaking to avoid misunderstandings during the project.3) When will I get paid?
Last but not least you should clarify when you’ll get paid. There are several options and it should be clear which one applies. Your client won’t be happy if you just send an invoice whenever you want: you should invoice according to your agreement. This could take one of the following forms:
- After the project is completely finished and successful (this payment modality is mostly for work-and-labor contracts)
- At the end of a specific time period (week, month, year), based on the hours you spent on a project (mostly for time-and-material contracts)
- After delivering pre-defined milestones
Add your payment modality to your quote to ensure that both you and your client agree on the same facts.
There’s a lot of project-related jargon floating around these days, like "agile", "fixed price", "waterfall" and "T&M". Ask 10 different people and you’ll get 11 different opinions on how these terms might apply to your projects! But my advice is: when it comes to negotiations with your client or contractor, simply focus on clarifying these three crucial questions and you’ll lay a strong foundation for your business relationship. Don’t be misled by buzzwords if you don't know exactly what they mean for you.
In upcoming blog posts I’ll share some additional information about successful project setup, management and controlling.
DrupalCamp Johannesburg 2015 will be held on Saturday the 28th of March 2015, from 09:00 until 15:00 at:
Business Connexion Park North
789 16th Road
Just off New Road, Midrand
Attendance to DrupalCamp Johannesburg is free; Let us know you are going to be there on meetup.com.
Please consider sponsoring DrupalCamp Johannesburg 2015, we have very affordable options available:Gold Sponsors: R 6 000
- Logo on a Stage Banner.
- Logo on a large Shark Fin.
- 6 Vinyl (back-of-laptop) Gold Sponsor Stickers.
- Noted, always, on DASA.org.za website as a Gold Sponsor.
- Logo on a Stage Banner.
- Logo on a medium Shark Fin.
- 4 Vinyl (back-of-laptop) Silver Sponsor Stickers.
- Noted, always, on DASA.org.za website as a Silver Sponsor.
- 2 Vinyl (back-of-laptop) Individual Sponsor Stickers.
- Noted, always, on DASA.org.za website as an Individual Sponsor.
Because we have printed material to prepare, the deadline for confirming that you will be a sponsor and for receiving your creative (logo for landscape, ISO216) is noon the 5th of March. It's urgent to contact firstname.lastname@example.org as soon as possible to arrange sponsorship. The deadlines are tight and it may be tough to handle a heavier load of work close to the deadline.DASA Board
DASA Governing Board Members agreed, when we formed DASA, to always stand aside if limited sponsorship options are available and the community wishes to sponsor an event. We have only five Gold and five Silver sponsorship spots open. If the community sponsors those and board members already also booked sponsorship, the board members' sponsorship will be downgraded to the first available lower level sponsorship.
Version 0.9.3 of the Dramble—running Drupal 8 on 6 Raspberry Pis
I've been tinkering with computers since I was a kid, but in the past ten or so years, mainstream computing has become more and more locked down, enclosed, lightweight, and, well, polished. I even wrote a blog post about how, nowadays, most computers are amazing. Long gone are the days when I had to worry about line voltage, IRQ settings, diagnosing bad capacitors, and replacing 40-pin cables that went bad!
But I'm always tempted back into my earlier years of more hardware-oriented hacking when I pull out one of my Raspberry Pi B+/A+ or Arduino Unos. These devices are as raw of modern computers as you can get—requiring you to actual touch the silicone chips and pins to be able to even use the devices. I've been building a temperature monitoring network that's based around a Node.js/Express app using Pis and Arduinos placed around my house. I've also been working a lot lately on a project that incorporates three of my current favorite technologies: The Raspberry Pi 2 model B (just announced earlier this month), Ansible, and Drupal!
I wanted to get some clarity on what I mean by the term "site builder". In a general sense, it refers to the actual process of building a website, but in Drupal the term Site Builder tends to have a specific meaning. I realised that my definition may vary from others so I wanted to be precise about what I think it means, and what I think it means to be a Drupal Site Builder.
I am a developer. I studied programming languages in depth. I did research into the semantic analysis of object oriented languages. But, when it comes to Drupal, I love to be a Site Builder.
I run a Creative Coding Meetup in London. At last night's meeting I was explaining Friday's Drupal Camp training to someone. I am clear about the aims and objectives of the training, I know my material, and I've given similar trainings many times before, but, the fact I labelled it an "intermediate" and "site builder" training causes some confusion.
First of all, I realised that using the word "intermediate" doesn't really mean anything. Drupal developers (or anyone building Drupal sites) of all skill levels have benefited from this training. So, perhaps what I mean by "intermediate" is actually "not beginner". As all I am really saying is that I'm not covering the very basics of getting Drupal up and running.
The term "site builder" is more problematic, possibly because my definition of a Drupal Site Builder may be wider than what most people expect. I thought about this a lot, and what I came up with was a clear set of statements of what I think it means to be a Drupal Site Builder...The Drupal Site Builder Manifesto
As Drupal Site Builders...
We work in a multi-disciplinary role.
We take initiative, and play a central role in the web development process.
We are usually the ones to take ownership of the final product.
We don't just “click and configure” websites. We have knowledge of all the areas involved in building a Drupal website.
We work with the rest of the team to ensure everyone is doing what they do best and contributing to the project in a meaningful way.
We may not all be trained developers, but we do appreciate how to think like a developer. We apply software development principles and Drupal best practises when creating Drupal configuation.
We may not all know how to write optimal PHP code, but we know when to build something using Drupal core or contributed modules, and when we need a custom plugin or custom module creating.
We may not all be able to produce the most stunning web designs, but because we understand how Drupal works we will work with designers to ensure their designs are consistent and well structured.
We may not all know all the latest front-end tricks, but when given well build front-end code we know how to get Drupal to generate the appropriate markup.
Most importantly, we know how to get the best results out of Drupal's building blocks, we know how to turn good designs and ideas into great websites, and we know how to build websites in a methodical, flexible, and maintainable way.
How do you collect public comments on a web-based PDF? It should be simple. But it isn’t.
For those of us who have been breathlessly waiting, it’s finally here: registration for DrupalCon Los Angeles is open at last!
Coming up in May, DrupalCon Los Angeles promises to be a fantastic time — so make sure you register today to get the earlybird rate.
There are a log of ways to arrange fields in drupal 7... If possible I like using display suite... it's convenient great for most projects... however when working with government forms there is often a need to be consistent with existing paper forms.Tags: Drupal Developmentarrange fieldsdrupal 7government formsvdotcharlottesville city council18f
Eric Mandel, CEO of infrastructure provider Blackmesh, and I got the chance to speak at PHP World 2014 (where I was also a keynote speaker). We spoke about his history with development, open source, and Drupal. I also had the chance to ask Eric about how Blackmesh has become a leader in the area of corporate contribution to Drupal, employing Cathy Theys to work on Drupal core, mentor new Drupal contributors, and help out at code sprints around the world.
Drupal 8 comes with many improvements over its predecessor we have grown to both love and hate. Next to prominent systems such as Views in core, configuration management or a useful translation service, there are also less known changes but that are equally important to know and use. One such improvement has been the cache API that solves many performance problems we have in Drupal 7.
In this article, I want to shine a bit of light over the new cache API. To this end, we are going to look at how we can use it in our custom modules as we are encouraged to do so much more in Drupal 8.
Additionally, I have prepared a little demonstration in the shape of a module you can install for testing the impact of the cache API. It’s a simple page that in its rendering logic makes an external API call (to a dummy JSON endpoint) and caches its results. The page then displays the actual time it takes for this to happen, contrasting the external call time vs. the cached version time.The new cache API Bins
The new cache API (with the default DatabaseBackend storage) is stored in multiple bins which map to tables that start with the prefix cache_. When interacting with the cache, we always start by requesting a cache bin:$cache = \Drupal::cache();
Where $cache will be an instance of the DatabaseBackend object that represents the default bin (cache_default). To request a particular bin we pass in the name in the constructor:$render_cache = \Drupal::cache('render');
Where $render_cache will represent the render cache bin (which is new in Drupal 8 and is supposed to improve render performance across the board).
Continue reading %Exploring the Cache API in Drupal 8%
For the first time, DrupalCon happened in Latin America! Dagmar, Emma and me spent a week in Bogotá to speak about Drupal and to connect with the local communities.
DrupalCon Latin America
To be honest, after low registration numbers and too many e-mail reminders for buying tickets, my expectations for the first DrupalCon in Latin America were not too high. Together with our project manager Dagmar and front-end expert Emma, we were still excited to go and support the regional communities. After having made many friends during my Drupal tours in Central America it felt like a great opportunity to visit South America for the first time and share experiences with local leaders.A local looking out over Bogotá, the capital city of Colombia
Colombian's selling coffee on the streets of Bogotá
With 260 attendees, the conference was more like a camp and can't be compared with DrupalCons in the U.S. or Europe, which have several thousands of attendees. Still, this DrupalCon Latin America wasn't just a camp: attendees came from all over Latin America and many even flew in from the United States, Europe or even South Korea. The presentations I was listinig to where of high quality and the live-translation service from and into Spanish, Portuguese and English seemed to be working great and was constantly being used by many attendees.Attendees gathering in the main conference room
While Dries Buytaert's keynote pointed out some good examples on how the web is evolving, the analogy of using technology to minimize time being spent for getting a valentines present didn't play well for my taste. Larry Garfields held a very motivating keynote and you could feel the audience getting excited for the sprints on Thursday.
DriesnoteLarry Garfield's keynote
Other session highlights include: Drupal 8 CMI on Managed Workflow with a great music / dance intro by Matt Cheney and Molly Byrnes; Drupal in the Post-PHP-Renaissance World by EclipseGc; Designing Drupal 8 by Lewis Nyman; An Overview of the Drupal 8 Plugin System by Joe Shindelar and Persiguiendo el unicornio: Por más mujeres en tecnología by Kandra. As usual you can find the videos on the Association's Youtube Channel and they are linked from the session pages.A dancy kick-off to the CMI managed workflow session
Dagmar did a presentation on SEO for Drupal. The presentation was packed and a big success. My presentation for DrupalCon was special for me. For the first time #d8rules - Web-automation with Rules in Drupal 8 was code-driven. Given the early stage and complexity of the project, I initially struggled with the preparation. In the end, diving into the Rules 8.x code and putting it into a presentation turned out to be fun and a good example to show some new programming patterns in Drupal 8.Dagmar presenting Amazee Labs best practices on SEO
The size of the event also allowed to connect even better with the attendees. I feel like I got to shake almost everyones hands and was able to connect much better than on large-scale DrupalCons where it is unlikely to run into the same person twice even during several days of conference.Attendees wearing ear-plugs for live translation services from and to English, Spanish and&amp;amp;nbsp;Portuguese
I love to travel in the Latin American region because of the friendliness of people and the special vibe of the culture. The local team setup a great set of social activities ranging from cycling through the city, traditional & explosive games to enjoying city views at night and of course latin dances such as Salsa. "Northern" Drupal events tend to be a bit stiff, we can definitely learn from our Latin friends in this matter!Watching the city lights as part of a tour organised by the local team
The conference venue after the last session
Drupal in Latin America
Latin America is an uprising market that has lots of potential, not directly comparable but similar to India where DrupalCon makes its extra-stop in 2016. It was good to see a variety of local Drupal shops present at the conference that already have years of experience in delivering web solutions based on Drupal that where looking to hire new talent to grow their business.A room full of sprinters working on Drupal 8 and other initiatives
There is a lot of dedication and passion available from the regional folks. It was great to see people from many countries such as Mexico, Costa Rica, Argentina, Chile, Ecuador, Venezuela, Brasil etc. Most of them have vibrant local communities and you could see their interest in contributing by the sheer number of people that showed up for the sprints on Thursdays (67% attended, compare with 23% Austin and 34% Amsterdam!).Sprinters at work
Unfortunately, WiFi couldn't make up for number of sprinters in the beginning, but after a cold start and passionate leading from the mentors, it turned into a productive day. On our side, Emma was especially excited to get patches committed for people that she had introduced into the contribution workflow as part of her Bartik mentoring work, Dagmar worked on a prototype to improve mobile table drag & drop UX and I worked on a first integration to scaffold Rules 8.x plug-ins with the shiny Drupal Console project that is exclusively maintained by Latin Americans.Sprinters at work
Around the conference
While the primary goal is to meet, present and connect on Drupal, Bogotá was also a great opportunity to get to know an exotic country for many non-locals. People hiked Monserrate, travelled to the rain forests or Dagmar, Joel and me even did our first hike above 5000m at the Sierra Nevada of El Cocuy. Special thanks to our client Exped: their gears made sure that we could travel light while being prepared well for nights below 0°C.
Hiking up and above 5000m at Los Nevados de El CocuyHiking up and above 5000m at Los Nevados de El Cocuy
Sunrise at Los Nevados de El Cocuy
You can find more pictures on our flickr page. Also see Nick Vidal's and Jesus Manuel Olivas' blog posts. Thank you everyone involved in DrupalCon Latin America 2015. We are looking forward to more conferences like this one!
After a great week in Bogota and some time to reflect I can say the first DrupalCon in Latin America was even better than I expected - yes it did feel more like a DrupalCamp than a DrupalCon - but it was still a great event! The quality of sessions were very good and as usual the greatest part was the chance to get together with a lot of friends from all over and especially Latin America.
Here my highlights:Training:
Our Community Trainings - Intro to Symfony, Getting Ready for D8
This is the first article of a long series (I hope :P ). Every Wednesday we get to know a new module, little known or just published on the Drupal official web site.
In this article we will review Focal Point.
In the first two installments of this series we looked at a general introduction to creating WOW with Drupal and adding some "Technical Wow". Today's let's tackle ...Creating Wow - Aesthetic
This is part 3 of a 5 part series. Read the rest of the series here.
Can you help Fuzion take the Drupal 8 integration module that was developed as part of 2014 Google Summer of Code and get it working with the most recent version of Drupal 8 and publicly available for testing?
Getting CiviCRM ready for Drupal 8 was always going to be a task with many stages. Thanks to the funding from the Google Summer of Code 2014 in August last year Torrance, was able to get CiviCRM functioning well on what was then the latest alpha of Drupal 8. Highlights of this work included a native, Drupal-side installer for CiviCRM, Views integration using CiviCRM to discover the database schema (cutting the Views module from 15,000 lines to code to under 2,000), and a set of integration tests for both CiviCRM and Views.
But as Drupal 8 has continued active development, many core APIs have changed and ….. the integration has regressed.
Lots of these changes are relatively minor: during alpha there were still plenty of structured arrays hanging around which have now mostly been moved into well defined interfaces; or similarly plenty of hard dependencies on object classes have been abstracted into interfaces. There’s also been a few slightly more significant code changes, with several hooks that were still hanging around having been pulled into the new plugin system for example.
Drupal 8 is now at beta 6 and is becoming much more stable; APIs have settled down and the code churn is much reduced. Now is a good time to work through the existing Drupal 8 integration code, update function signatures to match the new interfaces, and get CiviCRM working correctly on Drupal 8.
By getting through this next tranche of work we can set the ground for thorough testing of the module in the lead up for Drupal 8.0 final.
Fuzion is proposing to fund 1 hour for every 4 hours funded for the next tranche of 50 hours of work (our estimate for getting Drupal and CiviCRM playing nicely enough that we can get this pushed out). So yes we are looking for others in the CiviCRM community to chip in and help fund this important work to make sure CiviCRM is set for Drupal 8.
Can you help us push on with this next stage so we can get the integration available for public testing? If so please drop by this page and chip in.