In just over two weeks, The St. Louis Drupal User's Group will host St. Louis' first ever DrupalCamp. The final sessions were announced last week and it's shaping up to be an awesome experience for a wide variety of folks looking to learn more about Drupal.
As @geerlingguy, myself, and a few other great folks from the STLDUG began discussing the idea of hosting St. Louis' first ever DrupalCamp last year, we decided that we wanted to gear our first camp towards those who were just getting started with Drupal. I've been a part of the STLDUG for several years now and two things have been constant: newcomers looking to learn more about Drupal, and a strong need for Drupal developers in the St. Louis area. What's more is that the community of developers, stakeholders, and hobbyists in this city is nothing short of amazing. Naturally, it only made sense to put together a camp that would allow us to share our experiences and expertise with those wanting to learn.
At Museums and the Web earlier this month Ken Rickard and I ran a developer training seminar for the still-in-alpha-but-getting-there Drupal 8. It was a small group, which wasn't surprising given the event. One of the most interesting things about it, though, was that there was only one PHP developer in the room.
The most active student in the class was an experienced C# developer. He had never worked with PHP before, and, really, didn't seem like he was going to start any time soon. He was mostly there to get a sense for how to integrate Drupal with his company's product for museums.
Despite that, he was able to follow the material just fine. In fact, the only questions he had were related to PHP itself: Its shared-nothing runtime model, the magic __construct() method name, etc. The actual software engineering parts, the general syntax, dependency injection... all of those were easy. Most notably, when we got to the concept of services he even said aloud "Oh those, yeah, easy."
Here's an experienced developer who has never used PHP before, much less Drupal, and he could follow a code-intensive Drupal 8 training class. Let that sink in.
There's an old adage that once you know one language you can easily pick up another because it's all "just programming". That's not actually true; you can easily pick up another language in a similar family. Jumping between PHP, C#, and Java is fairly easy, but don't expect to jump right into Haskell, Erlang, or ML (or vice versa).
That's why our C# developer was able to follow Drupal 8 so easily. PHP's object-oriented model is, by design, very similar to that in Java, C#, and by extension somewhat to C++. It has its own quirks and flavor, to be sure, as does any language. The basic concepts, though — classes, methods, interfaces, services, domain objects, dependency injection — are fairly easily transferrable between them. The best practices that apply in one language are, generally, at least decent practices in another. The syntax may vary but the underlying principles are closely related and the syntax is generally recognizable.
In the latest TIOBE index of programming language popularity (March 2014 as of this writing), PHP has held fairly steady at a very respectable 6th place for over a decade. That's no mean feat. Look up a little bit higher on that list, though, and notice a few familiar faces: Java sits at 2nd place, C++ at 4th, and C# at 5th.
There are a lot of Java and C# developers out there. The corporate world especially is full of them. That's millions (yes, millions) of developers who may not know PHP, but already know the same underlying concepts behind modern, object-oriented PHP. If they need to learn PHP, they can.
That's millions (yes, millions) of developers who may not know Drupal but if they need to learn it, they can.
Conversely, what do you think happened when we showed our C# developer hooks? He recoiled. Physically.
Magic naming of language syntax is not a common practice in the Java/C++/C#/PHP family of languages. To developers coming in from other family languages hooks and big nested arrays are the least-familiar parts of the code base. Those are, in fact, the hardest to learn for the overwhelming majority of the world that is not already a Drupal developer. That's why there has been considerable effort to try and migrate away from naked data structures to industry standard language techniques: It makes Drupal easier to learn in the long run, as well as the other benefits of common patterns and easier modifiability. Hooks and arrays-of-doom haven't gone away yet, but in the long run their days are numbered.
Drupal 8 won't just be easier to learn for existing PHP developers. It will be easier to learn for existing developers, period.
First thing, have a D6 site with multilingual things ready to go! This node has a file attached (see end of post) with a copy of D6 with some translated nodes and site information (see settings.php file settings to translate these variables). The file is a drush archive.
D6 "Requirements" at this time:
- It must have CCK installed (2014-04-11)
- Recommended to install in the non-English language if you wish to download the translations automatically (this isn't working in the UI yet 2014-04-11). You can also go download the translations manually later.
Currently we do not work from the main branch as there are significant changes happening in this area of Drupal 8. Some things may be broken. You have been warned! Please test and update issue summaries where appropriate.
- Clone the IMP migration sandbox and install Drupal 8 https://drupal.org/sandbox/chx/2105305
- Enable migrate, migrate_drupal, content_translation, configuration_translation, locale/"Interface Translation", language (these last two are installed by default if you did not install in English)
- Enable English as a language
- Get the patch so you can bind to a second database in D8 https://drupal.org/node/2181775
- Create a manifest.yml file in the root
Put this file int he root of your D8 site. If you did migrations to D7 with the latest versions of migrate and d2d, this file similar to your migrate.inc file registration array (but in a completely new format).
#- d6_user (not working yet - "does not meet requirements" 2014-04-11)
- d6_language_types # Patch needed 2014-04-11 https://drupal.org/node/2225293
- d6_language_negotiation # needs above patch
- d6_language # Patches needed 2014-04-11 https://drupal.org/node/2166875 and https://drupal.org/node/2234623
- d6_node_settings # gets story content type
You can find the complete list of migrations at core/modules/migrate_drupal/migrate.config.yml some (like d6_user are not yet working 2014-04-11).Running the Migration
Then, on the command line, run your manifest file. I used a D6 database with no password because of the bug mentioned above.
drush migrate-manifest mysql://d6@localhost/d6 manifest.yml
You will need the latest Drush if you want support D8! A UI-based workflow is being developed here: https://drupal.org/node/2200379Rolling Back
This does not exist yet, but if you are familiar with doing this manually in D7 the process is the same:
Use the UI to delete the affected things (in this example, delete your nodes)
Clear the database table that stores the migration info for the specific migration: mysql> delete from migrate_map_d6_node;
Writing D6 to D8 entity migrations - https://groups.drupal.org/node/387488
How to test Drupal 6 to Drupal 8 migrations - https://groups.drupal.org/node/398588
eliza411 - http://dspeak.com/fldc14/dothis.html
You can follow the initiative at groups.drupal.org/imp.AttachmentSize Drupal 6 drush archive with translated nodes and site information1.72 MB Category: D8MIDrupal 8Drupal ArticlesDrupal Planet
If you came this far you probably liked this video just as much as I did :). You should really consider coming to Portorož in May to attend DC Alpe-Adria. We will have 2 days of great sessions, BoFs and sprints + 2 more day of extended sprints where we're going to focus on D8 and making it rock!
Portorož is also a great destination for children and families so you could bring your significant others and/or families with you and extend Drupal camp into an unforgettable vacation.
Interested? Of course you are! Find out more at drupalalpeadria.org.
I'm not much of a reader anymore these days (I used to be when I was a young teenager), but I still do tend to like reading something every once in a while. When I do, I generally prefer books that can be read front to cover in one go—because that allows me to immerse myself into the book so much more.
John Scalzi's book is... interesting. It talks about a bunch of junior officers on a starship of the "Dub U" (short for "Universal Union"), which flies off into the galaxy to Do Things. This invariably involves away missions, and on these away missions invariably people die. The title is pretty much a dead giveaway; but in case you didn't guess, it's mainly the junior officers who die.
What I particularly liked about this book is that after the story pretty much wraps up, Scalzi doesn't actually let it end there. First there's a bit of a tie-in that has the book end up talking about itself; after that, there are three epilogues in which the author considers what this story would do to some of its smaller characters.
All in all, a good read, and something I would not hesitate to recommend.
I've just released qcontrol 0.5.3. Changes since the last release:
- Reduce spaminess of temperature control (Debian bug #727150).
- Support for enabling/disabling RTC on ts219 and ts41x. Patch from Michael Stapelberg (Debian bug #732768).
- Support for Synology Diskstation and Rackstation NASes. Patch from Ben Peddell.
- Return correct result from direct command invocation (Debian bug #617439).
- Fix ts41x LCD detection.
- Improved command line argument parsing.
- Lots of internal refactoring and cleanups.
Get it from gitorious or http://www.hellion.org.uk/qcontrol/releases/0.5.3/.
The Debian package will be uploaded shortly.
For the past few years I've been running a simple service to block blog/comment-spam, which is (currently) implemented as a simple JSON API over HTTP, with a minimal core and all the logic in a series of plugins.
One obvious thing I wasn't doing until today was paying attention to the anchor-text used in hyperlinks, for example:<a href="http://fdsf.example.com/">buy viagra</a>
Blocking on the anchor-text is less prone to false positives than blocking on keywords in the comment/message bodies.
(Equally some modules are essentially applications; great that the authors shared, but virtually unusable, unless you 100% match their problem domain.)
I've written about this before when I had to construct, and publish, my own cidr-matching module.
Anyway expect an upload soon, currently I "parse" HTML and BBCode. Possibly markdown to follow, since I have an interest in markdown.
It was one year ago that our own Steven Merrill, Director of Engineering at Phase2, found himself at the RedHat Summit, when he stopped in front of the OpenShift booth. OpenShift is an open-source Platform As A Service (PaaS) solution that offers developers a cloud application platform with a choice of programming languages, frameworks and application lifecycle tools to build and run their applications. The platform provides built-in support for Node.js, Ruby, Python, PHP, Perl, and Java, as well as MySQL, PostgreSQL, and MongoDB. Developers can also add their own languages.
Right away Steven was intrigued by OpenShift since it’s the only PaaS that’s open source (OpenShift Origin,) and that also has a Red Hat-supported behind-the-firewall install (OpenShift Enterprise) and a public PaaS (OpenShift Online.) As Phase2’s DevOps luminary and frequent contributor to the Drupal community, Steven quickly acquainted himself with the OpenShift team and started to explore the possibility of spinning up OpenShift environments for Drupal. By the end of RedHat Summit 2013, Steven had laid the groundwork for a Drupal 8 cartridge and had created an updated PHP 5.4 cartridge for OpenShift.
Steven’s introduction to OpenShift at the RedHat Summit ignited excitement about diversifying our deployment optimization services here at Phase2. The possibility of creating quickstart packages for our Drupal distributions on OpenShift was especially attractive to us. Soon after the RedHat Summit, the Drupal 8 quickstart cartridge was committed to OpenShift, allowing developers to quickly and safely spin up a Drupal 8 environment to test and develop on.
Throughout the past year, our relationship with OpenShift strengthened as we worked together at DrupalCon Portland and DrupalCon Prague to develop Drupal compatibility with OpenShift. To our clients’ delight, we began implementing OpenShift into our deployment services. One of our recent clients, a Fortune 500 publishing company, was overjoyed to find that the deployment process we created for them using Openshift allowed them to cut onboarding time for new developers from an entire month to as little as a week.
Steven and Diane Mueller, the OpenShift community manager, recently co-hosted an OpenShift for Drupal training at NYC Camp. The training gave Drupal developers the tools and knowledge they need to quickly develop, host, and scale applications in an open source cloud environment. Next week we will be once again heading to RedHat Summit, one year later, exhibiting at the summit as an Advanced OpenShift partner.
Our partnership with OpenShift is a classic open source story: equally committed to open source solutions, Phase2 and OpenShift have teamed up to develop mutually beneficial service capabilities for our clients. We look forward to continuing our close relationship with OpenShift and announcing several more exciting developments and collaborative projects launching in the near future. Stay tuned – there are big things coming for Drupal on OpenShift, the cloud, and Phase2’s deployment services.
The Drupal Site Map module can be used to provide you Drupal website visitors with a high level overview of the content on your Drupal 7 site.Tags: DrupalContribDrupal 7Site BuildingDrupal PlanetSEO
When you have a big goal, do at least a little of it every day. Cory Doctorow writes books and stuff, and writes for at least twenty minutes every day. I write computer software, primarily Obnam, my backup program, and recently wrote the first rough draft of a manual for it, by writing at least a little every day. In about two months I got from nothng to something that is already useful to people.
I am now applying this to coding as well. Software development is famously an occupation that happens mostly in one's brain and where being in hack mode is crucial. Getting into hack mode takes time and a suitable, distraction-free environment.
I have found, however, that there are a lot of small, quick tasks that do not require a lot of concentration. Fixing wordings of error messages, making small, mechanical refactorings, confirming bugs by reproducing them and writing test cases to reproduce them, etc. I have foubd that if I've prepared for and planned such tasks properly, in the GTD planning phase, I can do such tasks even on trains and traun stations.
This is important. I commute to work and if I can spend the time I wait for a train, or on the train, productively, I can significant, real progress. But to achieve this I really do have to do the preparation beforehand. Th 9:46 train to work is much too noisy to do any real thinking in.
I would lie (and would i lie to you ?) if it say that im not extremely excited about theming in Drupal8. One the bigger painpoints in Drupal theming is figuring out where the markup is generated from. In Drupal8 we have build that directly in, i did a little screencast of it & damn its awesome.