FLOSS Project Planets
Every drupaler’s heart was beating faster yesterday. Expectation, excitement, and absolute joy! Yes, it finally happened! Drupal 8.0.0 was officially released yesterday! Did we celebrate it? You bet we did! InternetDevels Drupal development company threw not just one, but 3 parties in different Ukrainian cities to honor the latest and coolest version of our favourite site-building platform. So let us tell you a tale of three cities...and of three awesome cakes as well. Here we go!Read more
Both Swagger and WADL are about describing REST APIs and while the former has a definite momentum, the latter has proved to be very capable and helpful to JAX-RS users.
The important thing is that we have users who submit WADL documents to the runtime or build time code generators which is all working fine. We also have Swagger users who use cool Swagger features and being happy with a nice UI being generated. And WADL users, while being happy with WADL (which IMHO is indeed a very capable language for describing schema rich XML but with some extensions - even JSON - services) would like to use Swagger to introspect the code generated by WADL processors and have a nice API UI.
So my colleague Andrei and Francesco, Apache Syncope maestro, have driven the work about enhancing a WADL generator to set WADL documentation fragments as Java Docs in the generated sources and then having CXF Swagger features being very smart about enhancing Swagger JSON payloads with these Java Docs, with Francesco doing some magic there. I should also mention Andriy Redko doing some work earlier on directly with Swagger for it to better support JAX-RS annotations and initiating the CXF Swagger project and Aki Yoshida doing a lot of Swagger2 work next.
So here you go, WADL and Swagger United in Apache CXF.
IMHO this project has been a perfect example of the power of the Open Source collaboration with the contributors from different teams working effectively on this project.
It's been at least a year since I last did any work on Debian, but this week I finally uploaded a new version of squishyball, an audio sample comparison tool, incorporating a patch from Thibaut Girka which fixes the X/X/Y test method. Shamefully Thibaut's patch is nearly a year old too. Better late than never...
I've also uploaded a new version of smartmontools which updates the package to the new upstream version. I'm not the regular maintainer for this package, but it is in the set of packages covered by the collab-maint team. To be polite I uploaded it to DELAYED-7, so it will take a week to hit unstable. I've temporarily put a copy of the package here in the meantime.
Large website projects involving multiple people in different roles face special challenges. The work needs to be coordinated and scheduled in such a way as to allow for parallel development of different parts of the project on different systems. As a consequence, sooner or later the different parts of the whole must be brought back together and integrated into the project’s main development trunk. Often, this process happens seamlessly; at other times, overlapping changes must be integrated manually.
In a Drupal 8 project, the Configuration Management module allows the website configuration files to be stored in a Git repository alongside the project code. As an added bonus, Git also provides features that facilitate distributed development, allowing work to be done on branches and merged together as required. When there are conflicts, external tools are available to visually present the conflicts to the user, making it easier to determine what happened in each instance.
Recently, the Drush project introduced a new command, config-merge, that streamlines the tasks needed to manage the configuration workflow steps to fetch and merge changes from a remote Drupal site.
What I mean by an "installable Django package": a reusable component that can be shared across Django projects, allowing us to combine our own efforts with others. Some examples include:
Ever want to quickly create a similarly installable Django package to submit to PyPI and Django Packages? One that goes beyond the basics described in the Django tutorial? Specifically, a package that includes:
- Test runner so you don't need a example/test project (Although those can be useful).
- The important configuration in place: Travis, editorconfig, gitignore, etc.
- The important documentation in place: Readme, License, Read the Docs-ready Sphinx docs, etc.
- Static files ready to go.
- A base DTL/Jinja2 template ready to go.
- All those other fiddly bits not included in django-admin.py startapp that are hard to remember.
Well, here's how I do it.Introducing cookiecutter-djangopackage
First, get Cookiecutter. Trust me, it's awesome:$ pip install cookiecutter
Now run it against this repo:$ cookiecutter https://github.com/pydanny/cookiecutter-djangopackage.git
You'll be prompted to enter some values. Enter them. Then an installable Django package will be built for you.
Warning: app_name must be a valid Python module name or you will have issues on imports.
Enter the new package (in my case, I called it 'newpackage') and look around. Open up the AUTHORS.rst, setup.py, or README.rst files and you'll see your input inserted into the appropriate locations.
Now, instead of monkeying around for awhile doing copy/paste package setup, I'm immediately ready to write code.Summary
cookiecutter-djangopackage does a lot, but even with its tight focus on package creation it could do more. Some of the things I would love to see included in the future:
- Option for Appveyor CI support
- Option to replace django.test with py.test.
- Generation of model boilerplate, admin, and CRUD views.
- More in the issue tracker.
Try it out and let me know what you think. I'm open to new ideas and receiving pull requests.
Achievement unlocked I flew to Austin, TX for the SC15 conference. I had two personal goals: to eat BBQ for lunch or dinner every day, and to stay within Austin. Aside from visits to small towns around Austin (Wimberly for crafts, Johnson City for LBJ's home, and Driftwood for the Salt Lick), I accomplished my goals. I asked friends for recommendations and got a few; over 7 days I had BBQ 9 times, from 8 places. The only failure was Franklin.
- Sat: Iron Works BBQ
- Sun: Stiles Switch BBQ & Beer (better than Iron Works)
- Mon: Salt Lick (Driftwood, TX)
- Tue: Brazilian all-you-can-eat meat (steak) dinner, then Rudy's takeout (token brisket) at another party.
- Wed: la barbecue (lunch, uncrowded), with dinner at the Alamo Drafthouse (Spectre @ the Ritz)
- Thu: Micklethwait Craft Meats (late lunch); Black's takeout (token brisket) at the Texas Longhorns stadium.
- Fri: We arrived at Franklin BBQ at 10:40, and the line looked reasonable, but the hostess told us that we'd get food at 2pm. This was absurd and too late for our 2:30 flight, so we walked to Micklethwait for another excellent lunch (first order when they opened at 11am).
I am so saddened by the news this week. The attacks in Paris, Beirut, and Mali. The reaction of fear, anger, and hate. Governors racing to claim they will keep out refugees, even though they lack the power to do so. Congress voting to keep out refugees.
Emotions are a powerful thing. They can cause people to rise up and accomplish stunning things that move humanity forward. And they can move us back. Fear, and the manipulation of it, is one of those.
What have I to fear?
Even if the United States accepted half a million Syrian refugees tomorrow, I would be far more likely to die in a car accident than at the hands of a Syrian terrorist. I am a careful and cautious person, but I understand that life is not lived unless risk is balanced. I know there is a risk of being in a car crash every time I drive somewhere — but if that kept me at home, I would never see my kids’ violin concert, the beautiful “painted” canyon of Texas, or the Flint Hills of Kansas. So I drive smart and carefully, but I still drive without fear. I accept this level of risk as necessary to have a life worth living in this area (where there are no public transit options and the nearest town is miles away).
I have had pain in my life. I’ve seen grandparents pass away, I’ve seen others with health scares. These things are hard to think about, but they happen to us all at some point.
What have I to fear?
I do not fear giving food to the hungry, shelter to the homeless, comfort to those that have spent the last years being shot at. I do not fear helping someone that is different than me. If I fail to do these things for someone because of where they come from or what their holy book is, then I have become less human. I have become consumed by fear. I have let the terrorists have control over my life. And I refuse to do that.
If governors really wanted to save lives, they would support meaningful mass transit alternatives that would prevent tens of thousands of road deaths a year. They would support guaranteed health care for all. They would support good education, science-based climate change action, clean water and air, mental health services for all, and above all, compassion for everyone.
By supporting Muslim registries, we look like Hitler to them. By discriminating against refugees based on where they’re from or their religion, we support the terrorists, making it easy for them to win hearts and minds. By ignoring the fact that entering the country as a refugee takes years, as opposed to entering as a tourist taking only minutes, we willfully ignore the truth about where dangers lie.
So what do I have to fear?
Only, as the saying goes, fear. Fear is making this country turn its backs on the needy. Fear is making not just the US but much of Europe turn its backs on civil liberties and due process. Fear gives the terrorists control, and that helps them win.
I refuse. I simply refuse to play along. No terrorist, no politician, no bigot gets to steal MY humanity.
Ultimately, however, I know that the long game is not one of fear. The arc of the universe bends towards justice, and ultimately, love wins. It takes agonizingly long sometimes, but in the end, love wins.
So I do not fear.
Even though I spend more time staring at the screen than typing, there are times when I - after lots and lots of prior brain work - sit down and start typing, a lot. A couple of years ago, I started to feel pain in my wrists, and there were multiple occasions when I had to completely stop writing for longer periods of time. These were situations I obviously did not want repeated, so I started to look for remedies. First, I bought a new keyboard, a TypeMatrix 2300, which while not ergonomic, was a huge relief for my hands and wrists. I also started to learn Dvorak, but that's still something that is kind-of in progress: my left hand can write Dvorak reasonably fast, but my right one seems to be Qwerty-wired, even after a month of typing Dvorak almost exclusively.
This keyboard served me well for the past five year or so. But recently, I started to look for a replacement, partly triggered by a Clojure/conj talk I watched. I got as far as assembling a list of keyboards I'm interested in, but I have a hard time choosing. This blog post here serves two purposes then: first to make a clear pros/cons list for myself, second, to solicit feedback from others who may have more experience with any of the options below.
Update: There is a [follow up post], with a few more keyboards explored, and a semi-final verdict. Thanks everyone for the feedback and help, much appreciated!
Lets start with the current keyboard!TypeMatrix 2030Pros
- The Matrix architecture, with straight vertical key columns has been incredibly convenient.
- Enter and Backspace in the middle, both large: loving it.
- Skinnable (easier to clean, and aids in learning a new layout).
- Optional dvorak skin, and a hardware Dvorak switch.
- The layout (cursor keys, home/end, page up/down, etc) is something I got used to very fast.
- Multimedia keys close by with Fn.
- Small, portable, lightweight - ideal for travel.
- Small: while also a feature, this is a downside too. Shoulder position is not ideal.
- Skins: while they are a terrific aid when learning a new layout, and make cleaning a lot easier, they wear off quickly. Sometimes fingernails are left to grow too long, and that doesn't do good to the skin. One of my two QWERTY layouts has a few holes already, sadly.
- Not a split keyboard, which is starting to feel undesirable.
All in all, this is a keyboard I absolutely love, and am very happy with. Yet, I feel I'm ready to try something different. With my skins aging, and the aforementioned Clojure/conj talk, the desire to switch has been growing for a while now.Desired properties
There are a few desired properties of the keyboard I want next. The perfect keyboard need not have all of these, but the more the merrier.
- Ergonomic design.
- Available in Dvorak, or with blank keys.
- Preferably a split keyboard, so I can position the two parts as I see fit.
- Ships to Hungary, or Germany, in a reasonable time frame. (If all else fails, shipping to the US may work too, but I'd rather avoid going through extra hoops.)
- Mechanical keys preferred. But not the loud clicky type: I work in an office; and at home, I don't want to wake my wife either.
I plan to buy one keyboard for a start, but may end up buying another to bring to work (like I did with the TypeMatrix, except my employer at the time bought the second one for me). At work, I will continue using the TypeMatrix, most likely, but I'm not sure yet.
Anyhow, there are a number of things I do with my computer that require a keyboard:
- I write code, a considerable amount.
- I write prose, even more than code. Usually in English, sometimes in Hungarian.
- I play games. Most of them, with a dedicated controller, but there are some where I use the keyboard a lot.
- I browse the web, listen to music, and occasionally edit videos.
- I multi-task all the time.
- 90% of my time is spent within Emacs (recently switched to Spacemacs).
- I hate the mouse, with a passion. Trackballs, trackpoints and touchpads even more. If I can use my keyboard to do mouse-y stuff well enough to control the browser, and do some other things that do not require precise movement (that is, not games), I'll be very happy.
I am looking for a keyboard that helps me do these things. A keyboard that will stay with me not for five years or a decade, but pretty much forever.The optionsUltimate Hacking KeyboardPros
- Split keyboard.
- Mechanical keys (with a quiet option).
- Ships to Hungary. Made in Hungary!
- Optional addons: three extra buttons and a small trackball for the left side, and a trackball for the right side. While I'm not a big fan of the mouse, the primary reasons is that I have to move my hand. If it's in the middle, that sounds much better.
- Four layers of the factory keymap: I love the idea of these layers, especially the mouse layer.
- Programmable, so I can define any layout I want.
- Open source firmware, design and agent!
- An optional palm rest is available as well.
- Blank option available.
- Likely not available before late summer, 2016.
- No thumb keys.
- Space/Mod arrangement feels alien.
- The LED area is useless to me, and bothers my eye. Not a big deal, but still.
- While thumb keys are available for the left side, not so for the right one. I'd rather have keys there than a trackball. The only reason I'd want the $50 addon set, is the left thumb-key module (which also seems to have a trackpoint, another pointless gadget).
The keyboard looks nice, has a lot of appealing features. It is programmable, so much so that by the looks of it, I could emulate the hardware dvorak switch my TypeMatrix has. However, I'm very unhappy with the addons, so there's that too.
All in all, this would cost me about $304 (base keyboard, modules, palm rest and shipping). Not too bad, certainly a strong contender, despite the shortcomings.ErgoDoxPros
- Great design, by the looks of it.
- Mechanical keys.
- Open source hardware and firmware, thus programmable.
- Thumb keys.
- Available via ErgoDox EZ as an assembled product.
- Primarily a kit, but assembled available.
- Not sure when it'd ship (december shipments are sold out).
The keyboard looks interesting, primarily due to the thumb keys. From the ErgoDox EZ campaign, I'm looking at $270. That's friendly, and makes ErgoDox a viable option! (Thanks @miffe!)Kinesis AdvantagePros
- Mechanical keys, Cherry-MX brown.
- Separate thumb keys.
- Key wells look interesting.
- Available right now.
- QWERTY/Dvorak layout available.
- Not a split keyboard.
- Not open source, neither hardware, nor firmware.
- Shipping to Hungary may be problematic.
- The QWERTY/Dvorak layout is considerably more expensive.
- Judging by some of the videos I saw, keys are too loud.
The key wells look interesting, but it's not a split keyboard, nor is it open source. The cost come out about $325 plus shipping and VAT and so on, so I'm probably looking at something closer to $400. Nah. I'm pretty sure I can rule this out.Kinesis FreeStyle2Pros
- Split keyboard.
- Available right now.
- Optional accessory, to adjust the slope of the keyboard.
- Not open source, neither hardware, nor firmware.
- Doesn't seem to be mechanical.
- Shipping to Hungary may be problematic.
- No Dvorak layout.
- No thumb keys.
While a split keyboard, at a reasonably low cost ($149 + shipping + VAT), it lacks too many things to be considered a worthy contender.MaltronPros
- Mechanical keyboard.
- Key wells.
- Thumb keys.
- Built in palm rest.
- Available in Dvorak too.
- Not a split keyboard.
- The center numeric area looks weird.
- Not sure about programmability.
- Not open source.
Without shipping, I'm looking at £450. That's a very steep price. I love the wells, and the thumb keys, but it's not split, and customisability is a big question here.AtreusPros
- Sleek, compact design.
- No keycaps.
- Mechanical keyboard.
- Open source firmware.
- More keys within thumbs reach.
- Available right now.
- Ships as a DIY kit.
- Not a split keyboard.
While not a split keyboard, it does look very interesting, and the price is much lower than the rest: $149 + shipping ($50 or so). It is similar - in spirit - to my existing TypeMatrix. It wouldn't take much to get used to, and is half the price of the alternatives. A strong option, for sure.Keyboardio M01Pros
- Mechanical keyboard.
- Hardwood body.
- Blank and dot-only keycaps option.
- Open source: firmware, hardware, and so on. Comes with a screwdriver.
- The physical key layout has much in common with my TypeMatrix.
- Numerous thumb-accessible keys.
- A palm key, that allows me to use the keyboard as a mouse.
- Fully programmable LEDs.
- Custom macros, per-application even.
- Fairly expensive.
- Custom keycap design, thus rearranging them physically is not an option, which leaves me with the blank or dot-only keycap options only.
- Available late summer, 2016.
With shipping cost and whatnot, I'm looking at something in the $370 ballpark, which is on the more expensive side. On the other hand, I get a whole lot of bang for my buck: LEDs, two center bars (tripod mounting sounds really awesome!), hardwood body, and a key layout that is very similar to what I came to love on the TypeMatrix.
I also have a thing for wooden stuff. I like the look of it, the feel of it.The Preference List
The UHK is cheaper, but not by a large margin. It lacks the thumb keys and the palm key the M01 has. It also looks rather dull (sorry). They'd both ship about the same time, but, the M01 is already funded, while the UHK is not (mind you, there's a pretty darn high chance it will be).
The ErgoDox has thumb keys, split keyboard, and is open source. Compared to the UHK, we have the thumb keys, and less distraction, for a better price. But the case is not so nice. Compared to the Model 01: no leds, or center bar, and an inferior case. But, much better price, which is an important factor too.
Then, there's the Atreus. While it's a DIY kit, it is much more affordable than the rest, and I could have it far sooner. Yet... it doesn't feel like a big enough switch from my current keyboard. I might as well continue using the TypeMatrix then, right?
The rest, I ruled out earlier, while I was reviewing them anyway.
So, the big question is: should I invest close to $400 into a keyboard that looks stunning, and will likely grow old with me? Or should I give up some of the features, and settle for one of the $300 ones, that'll also grow old with me. Or is there an option I did not consider, that may match my needs and preferences better?
If you, my dear reader, got this far, and have a suggestion, please either tweet at me, or write an email, or reach me over any other medium I am reachable at (including IRC, hanging out as algernon on FreeNode and OFTC).
Thank you in advance, to all of you who contact me, and help me choose a keyboard!
One US presidential candidate has said a lot recently, but the comments about making a database of Muslims may qualify as the most extreme.
Of course, if he really wanted to, somebody with this mindset could find all the Muslims anyway. A quick and easy solution would involve tracing all the mobile phone signals around mosques on a Friday. Mr would-be President could compel Facebook and other social networks to disclose lists of users who identify as Muslim.Databases are a dangerous side-effect of gay marriage
In 2014 there was significant discussion about Brendan Eich's donation to the campaign against gay marriage.
One fact that never ranked very highly in the debate at the time is that not all gay people actually support gay marriage. Even where these marriages are permitted, not everybody who can marry now is choosing to do so.
The reasons for this are varied, but one key point that has often been missed is that there are two routes to marriage equality: one involves permitting gay couples to visit the register office and fill in a form just as other couples do. The other route to equality is to remove all the legal artifacts around marriage altogether.
When the government does issue a marriage certificate, it is not long before other organizations start asking for confirmation of the marriage. Everybody from banks to letting agents and Facebook wants to know about it. Many companies outsource that data into cloud CRM systems such as Salesforce. Before you know it, there are numerous databases that somebody could mine to make a list of confirmed homosexuals.
Of course, if everybody in the world was going to live happily ever after none of this would be a problem. But the reality is different.
While discrimination: either against Muslims or homosexuals - is prohibited and can even lead to criminal sanctions in some countries, this attitude is not shared globally. Once gay people have their marriage status documented in the frequent flyer or hotel loyalty program, or in the public part of their Facebook profile, there are various countries where they are going to be at much higher risk of prosecution/persecution. The equality to marry in the US or UK may mean they have less equality when choosing travel destinations.
Those places are not as obscure as you might think: even in Australia, regarded as a civilized and laid-back western democracy, the state of Tasmania fought tooth-and-nail to retain the criminalization of virtually all homosexual conduct until 1997 when the combined actions of the federal government and high court compelled the state to reform. Despite the changes, people with some of the most offensive attitudes are able to achieve and retain a position of significant authority. The same Australian senator who infamously linked gay marriage with bestiality has successfully used his position to set up a Senate inquiry as a platform for conspiracy theories linking Halal certification with terrorism.There are many ways a database can fall into the wrong hands
Ironically, one of the most valuable lessons about the risk of registering Muslims and homosexuals was an injustice against the very same tea-party supporters a certain presidential candidate is trying to woo. In 2013, it was revealed IRS employees had started applying a different process to discriminate against groups with Tea party in their name.
It is not hard to imagine other types of rogue or misinformed behavior by people in positions of authority when they are presented with information that they don't actually need about somebody's religion or sexuality.
Beyond this type of rogue behavior by individual officials and departments, there is also the more sinister proposition that somebody truly unpleasant is elected into power and can immediately use things like a Muslim database, surveillance data or the marriage database for a program of systematic discrimination. France had a close shave with this scenario in the 2002 presidential election when
Jean-Marie Le Pen, who has at least six convictions for racism or inciting racial hatred made it to the final round in a two-candidate run-off with Jacques Chirac.
The best way to be safe- wherever you go, both now and in the future - is not to have data about yourself on any database. When filling out forms, think need-to-know. If some company doesn't really need your personal mobile number, your date of birth, your religion or your marriage status, don't give it to them.
That's right, Drupal 8 was born in the City of the Big Shoulders, that Midwestern metropolis where monsters roam the midway, hot dogs never come with ketchup and office towers scrape the sky. Back in 2011, Chicago was host to DrupalCon and Dries was giving his State of Drupal address to a crowd of more than 2,000 attendees. It was during this address that Dries created the development branch for Drupal 8 and the future of the Drupal project started to take shape.
One of his latest projects has been to do with wiring Apache HTrace into CXF such that CXF users can HTrace calls starting from CXF clients going to CXF servers and then to such HTrace aware containers as HBase and using the collectors like Zipkin.
I'm looking forward to Andriy talking in detail about it on his blog and at the conferences, but in meantime you can check the documentation. Note that it works not only for JAX-RS but for JAX-WS too: if we can have a new feature working with both frontends then you know it will be done. The demo is here.
Give it a try and stay on top of the web services game :-)
JAX-RS 2.1 is entirely Java 8 based and a number of new enhancements are on the way. I was concerned earlier on that having a Java 8 will slow down the adoption but I think now the spec leads were right, Java 8 is so rich and JAX-RS needs to be open to accepting the latest Java features - ultimately this is what will excite the users.
The main new features list is: support for Server-Sent Events (something CXF users will enjoy experimenting with while also keeping in mind CXF has some great WebSocket support done by Aki), enhanced NIO support and introducing a reactive mode into Client API.
I've already mentioned before that JAX-RS 2.0 AsyncResponse API is IMHO very impressive as it makes a fairly complex task of dealing with suspended invocations becoming rather trivial to deal with. Marek and Santiago are doing it again with the new 2.1 proposals. Of course there will be some minor disagreements here and there but overall I'm very positive about this new JAX-RS project.
We now have a CXF Java 8 master branch to support the future JAX-RS 2.1 features but having a Java 8 trunk is great for all of the CXF community.
What is really good is that there appears to be no obvious end to the new requirements coming into the JAX-RS space. The HTTP services space is wide open, with the new ideas generated around the security, faster processing, etc, and it all will be eventually available as future JAX-RS features. I'm confident JAX-RS 3.0 will be coming in due time too.
On November 13th and 14th in New York City, several hundred people gathered to talk about the problems of an online economy reliant on monopoly, extraction, and surveillance— and discuss how to build a "cooperative Internet, built of platforms owned and governed by the people who rely on them."
My experience at the Platform Cooperativism summit was Wow, everyone here really gets it and so many are doing awesome things; and then Hmm, there are still some really important differences to be worked out; and then We'll have to continue for months to figure out strategy for building fair platforms and we also need to restructure the whole economy.Some definitions
In the sense technologists use it a platform is, like a physical platform, a technology that holds a lot of people up. It convenes people and gives them a chance to do something they wouldn't otherwise be able to do. Platforms can often be natural monopolies due to capturing the benefits of network effects (one person with a telephone is pointless, having nearly everyone available by telephone is incredibly valuable). Amazon and eBay are both platforms for sellers and buyers, Uber and Lyft for drivers and riders, Mechanical Turk and TaskRabbit for piece-workers and buyers of their work.
A cooperative is a jointly owned and democratically-controlled enterprise formed by people voluntarily uniting to meet their common needs and aspirations. Agaric is a small worker-owned cooperative, Mondragon is a very large group of integrated worker cooperatives, consumer cooperatives are businesses owned by their customers, credit unions are financial institutions owned by their members (with a one person, one vote governance), and producer cooperatives like CROPP Cooperative are formed by member businesses (which are not necessarily cooperatives themselves).
A platform cooperative, then, is a platform owned and controlled by the people directly affected by it. A company must be accountable, and as Omar Freilla put it, accountable means those impacted make the decisions.The power to do harm
This summit was a follow-up to the Digital Labor summit held one year before which detailed myriad ways centralized online platforms extract value from dispersed workers who have few options or bargaining power. Control of online platforms by the representatives of capital has or will have negative effects on workers, similar to exploitation in global manufacturing (think electronic devices and clothing), and negative effects on customers (think the massive money grab by oligopolies of fossil fuel and telecommunications corporations).
Agaric's Michele Metts told the Digital Labor summit organizers every chance she got that cooperatives and Free Software were the answer to exploited labor in the Internet economy, but something even more powerful than Micky's advocacy must have been at work: nearly every participant at Platform Cooperativism spoke of the need for workers to own the platforms that control their work, and people presenting on technology took for granted that source code and algorithms have to be open for democratic control to be meaningful. As Micky said on her panel, "You cannot build a platform for freedom on someone else's slavery."
The opening presentations made the case that platforms will exploit us unless we take control, and we moved on to discussing strategies for building platform businesses that are cooperatives of the people using the platforms. We also celebrated those already starting, like Loconomics, Fairmondo (in Germany), and Member's Media.Building for shared power and uplift
The biggest unsolved, but acknowledged, problem is getting the resources to build platforms that can compete with venture capital-funded platforms. Dmytri Kleiner made the claim that profit requires centralization, and, moreover, that centralization requires organizing along the lines of a profit-taking venture. How can people get the resources to build without both having to give up control and having to exploit people using the platform? Robin Chase reminded us that it costs millions of dollars, at least, to build a viable platform. Her solution is to continue to seek venture capital and work for some environmental or community goals while compromising on control.
A more popular possible solution is to replace centralized systems with decentralized ones, even to the point of replacing specific software with protocols, so the cost of building and operating platforms can be more widely shared, along with the benefits. However, as Astra Taylor summed up the widely felt point, decentralization does not always mean distributed power. Therefore control of technology decisions, and so democratic control of platforms, is more important than technology itself.
The potential positive role for government regulation was often mentioned, as Sarah Ann Lewis summarized the sentiment in a tweet: Platforms are not special snowflakes that must be exempt from regulation. If you can only succeed by exploitation you deserve to melt. Indeed, the centralized and surveillance nature of most platforms would make it much easier to ensure non-discrimination and fair wages.
More excitement came from the mention that local government has long played a role and can play a stronger part in democratic ownership of physical spaces. Several speakers urged people to get involved in local government, where harmful policies may be more the result of a lack of knowledge than of embedded corruption. Government can also get involved in mandating an open API for ride hailing services, which would remove the monopoly power from centralizing companies.On ownership and control
Hundreds of possible solutions faced lively questioning and debate, yet in all of this the titular solution, cooperative ownership, did not get the scrutiny it merits. Jessica Gordon Nembhard's Collective Courage has made me see that the connections and overlaps between worker cooperatives and other types of cooperatives are much more significant than I'd thought, but there are still differences. And I'm not sure the differences are made clear by people building platform cooperatives.
If Brianna Wettlaufer refers to it as a multi-stakeholder cooperative and it has been around since 2012 so they've surely worked it out, but this question is at the heart of how platform cooperatives must operate and it was hardly addressed at all.
The answer can be simple. The Black Star Coop brewery and restaurant in Austin, Texas, is owned by its customer-members while the workers manage it. The workers are internally a democracy, but there's no question they work for a businesses which is managed democratically by the customers. This makes even more sense for a quasi-monopoly platform: It's more important for, say, millions of people relying on a platform for livelihood or transportation or communication to own it than for the relatively small number of people who built it to own it.
This brings up another question that went largely unasked at the conference: does ownership mean anything when it's spread out among thousands or millions of people? Federated structures can mitigate this, but in general whoever controls communication among members effectively controls decisions. It may be possible to have horizontal mass communication by way of democratic moderation. At a small workshop I held at the conference, participants discussed ways collective control can be made real as democratic platforms scale—but that's a topic for another discussion.
The sense that displacing an app or website is easier than reconstructing global supply chains fueled a lot of the excitement at the conference. Notwithstanding, the need to restructure the rest of the economy so that it works to serve the needs of people, rather than sacrificing people's needs to the dictates of the economy, was never far from people's minds. Videos of most sessions are online and will certainly make you think about the opportunities for cooperative ownership of services and structures that define our lives, online and off.
Since getting the juicer, I’ve made a few interesting discoveries. New flavours – some better than others – and some interesting rules of thumb. Perhaps the most interesting revelation is what it can do with roots. Both the general-purpose mixer (the carrot), and the strong flavours (like ginger, radishes, turmeric). Why do we not see more roots in the range of juices sold by our supermarkets?
I have observed when shopping for juice that apple is treated as a pretty-universal mixer. Both when explicitly named (apple-and-[pear|mango|elderflower|etc] and in the blends with labels like “exotic”, “garden”, or “tropical” (hmm, bit of a mismatch there). Basically it just works with everything. The only substantial exception is citrus fruits, which rarely blend much with anything non-citrus.
But trying it at home, I find the carrot to be pretty-much just as good and universal a mixer. For example, I was sure apple-pear-ginger would be delicious, and now I find carrot-pear-ginger works just as well. It’s a little less sweet, but the pears bring ample sweetness, and the main flavours are still the pear and ginger. The only time I wouldn’t want to use carrots in place of apples is when I really want the extra sweetness: for example, while apple-cucumber-mint work nicely, I’ve no burning desire to try that with carrot.
Another case was today’s brew, when I tried another root in there for the first time. Taking the view that the earthiness of turmeric would want to be offset by something sweet, I blended it into apples and grapes. It worked nicely, but I suspect would be an acquired taste with less sweetness.
One more flavoursome root that works nicely in small amounts is radishes. And though I have yet to try them, I expect I might get something interesting with horseradish or wasabi.
Actually, the one strong flavour that has disappointed is chillies. As with today’s turmeric, I thought they’d need to go in something sweet, so I tried back in the summer in an apple/strawberry blend. The heat of the chilli didn’t really make it into the drink: I guess it must’ve ended up in the pulp and gone to waste.
One other minor revelation: things one doesn’t much like in their normal form can work well in a drink. Specifically celery: some time back I had some spare after using it in a tomato-and-basil soup, so I tried blending it into a drink. Given that I’ve never much liked it raw, I was pleasantly surprised by that flavour.
Alas, washing up is quite a chore. Now the novelty has worn off, I’m not using the machine more than once or twice a week, and drinking supermarket juices the rest of the time.
Building Drupal 8 with all of you has been a wild ride. I thought it would be fun to take a little end-of-week look back at some of our community's biggest milestones through Twitter. If you can think of others important Tweets, please share them in the comments, and I'll update the post.Feeling nostalgic? See every single version of Drupal running!
— Cheppers (@cheppers) November 19, 2015Here is how we opened the development branch for Drupal 8: live at Drupalcon!
The secretsauce of #drupal isn't code or features or market share, important thought they are. The secret sauce is community.
— Sean Yo (@seanyo) March 10, 2011
— Jeff Geerling (@geerlingguy) March 10, 2011Drupal 8's first beta showed the power of community
Drupal 8.0.0 beta 1 released! https://t.co/FwdmRYaZUx Ahh the power of COMMUNITY driven software! :-)
— Doug Vann (@dougvann) October 1, 2014
— Gábor Hojtsy (@gaborhojtsy) October 1, 2014We had issues ... but the queue steadily declined
— xjm (@xjmdrupal) September 19, 2014
Drupal 8.0.x-rc1 release window is today. Good sign of real stability is major issue count going down for 6+ weeks. pic.twitter.com/5VnHGmL9zb
— catch (@catch56) October 7, 2015We held sprints around the world: here are just a few
— xjm (@xjmdrupal) July 5, 2015
Working on D8 Criticals at the Ghent DA critical sprint, this is how the "My issues" page looks for me right now! pic.twitter.com/y5SnavVtND
— Sascha Grossenbacher (@berdir) December 13, 2014
— Cameron Eagans (@cweagans) March 23, 2012And we created many game-changing features
— Wim Leers (@wimleers) April 8, 2015
And.... there we go! http://t.co/ed6XtMIs MOTHER BLEEPING VIEWS IN MOTHER BLEEPING CORE!
— webchick (@webchick) October 22, 2012
— Alex Pott (@alexpott) February 15, 2014
With Content + Config Translation in core D8 core is more translatable than D7 with all of contrib. #drupal
— Tobias Stöckler (@tstoeckler) November 18, 2013
Amazing to see Drupal 8's multilingual capabilities explained on the multilingual release page (for example Farsi): pic.twitter.com/9owVE3xABo
— Gábor Hojtsy (@gaborhojtsy) November 19, 2015The founder of PHP said: Drupal 8 + PHP7 = a lot of happy people
— Rasmus Lerdorf (@rasmus) April 21, 2015We reached the first release candidate and celebrated ... a little
— Whitney Hess (@whitneyhess) October 7, 2015
— Manuel Garcia (@drupalero) October 7, 2015
Kudos to the 3000+ contributors and to the entire Drupal community that helped make this happen. https://t.co/FtATRtSmCU
— Leslie Glynn (@leslieglynn) October 7, 2015And, just yesterday, we painted the world blue and celebrated Drupal 8 ... a lot!
— Drupal (@drupal) November 10, 2015
— Drupal (@drupal) November 19, 2015
— Taco Potze˙ (@tacopotze) November 19, 2015
— Duo (@DuoConsulting) November 19, 2015
— Shakeel Tariq (@shakeeltariq) November 19, 2015
— Agustin Rojas Silva (@Aguztinrs) November 19, 2015
— HornCologne (@HornCologne) November 19, 2015
— webchick (@webchick) November 19, 2015
— Paul Johnson (@pdjohnson) November 19, 2015
— Dries Buytaert (@Dries) November 18, 2015
There are a lot of different reasons why people need a site audit. For example, you may be transferring a project from an old team to a new team that needs to understand the project what they're taking over.
Or maybe there's an internal management change inside a large organization.
For example, in an audit I'm doing now, the site was managed by one team and now they're splitting up the company and that team is not going to manage the site anymore. The people taking over have no experience with the site and they want to find out what they're dealing with.Was it Done Right?
They might have specific concerns like security or performance that they want to audit. They might be planning a whole new phase of their project and they would like to understand where they're at with their site beforehand.Sometimes an audit is requested to validate a hunch. Sometimes a manager doesn't think a site was built well, and wants an audit to show that. On the other hand, there are times when a developer wants an audit to show their boss that they did do things right. For example, we had somebody who wanted an audit because his boss kept on telling him that he built the site wrong because he used multiple content types and his boss was sure that you should only ever have one content type. So he wanted an audit that would back him up and say he did a good job, and he did actually do a great job. Update to Drupal 8
Another reason you might have an audit in 2015-16 is that you're considering upgrading to Drupal 8 and nobody can give you a good estimate of how much it's actually going to cost you to upgrade because nobody knows what your site does or even what problems it has. You might need an audit just to help you evaluate that.Here Comes Judge Jody
At work, they call me Judge Jody. Being judgmental is one of those personality traits that’s both positive and negative. But when it comes to doing certain types of tasks, being judgmental is very useful. You might have some people on your team that are very open and accepting who say, "Oh, that's an interesting idea" to just about everything. They don't disagree strongly with much of anything. These folks are not necessarily the best ones to do an audit because they'll go through and all they can come up with is, "Oh, that's interesting." Someone who really has strong opinions can go faster and decide what looks problematic.One Judge...Or Many?
You could have just one of your top people doing an audit, but you can also split it up into multiple domain experts. I also like to have an assistant when I'm doing the auditing, someone more junior who can help me write up the document, do the document formatting and learn while we're going along. As you're working on an audit you're not just learning how to do a site audit, you're also learning a lot about Drupal and the different issues people can get into making sites. I've learned more from looking at all of the awful sites that we inherit and rescue than I would have just building sites on my own because you see the consequences of all the different bad common practices that people make, where it leads, and how much work it is to clean it up. It makes me feel more strongly when I say, 'we never do this this way and this is why. We've seen what happens.’It's also good if someone on the auditing team will potentially continue working on this site if this becomes an ongoing project. No matter how much people write in their reports, they're also putting a lot in their heads getting to know this project. That's really valuable and you want them to continue working on the site. It actually takes a long time to really get to know a project if it's a pretty complicated site, or just a particularly troubled one. Manual or Automated?
There are parts of an audit where you should use automated tools. But it’s also important to do a lot manually and just look everywhere. I'll look from the top left pixel all the way across to the bottom right. Then I'll look at the server, the code and every page I can. I'll look at the HTML, the CSS, the navigation, and the content itself. One of the amazing things I take away at the end of some site audits is that after a week of looking at some sites I still have very little idea of what the organization does, or perhaps how to purchase a product from the company. Noticing that the site does not serve its primary mission is something automated tools will not do for you.Document Everything
I start an outline in a Google Doc, and I follow my curiosity around the site. Productive procrastination is my main mode. When I don't feel like looking at the permissions, I go look at the design, and keep jumping around until the outline starts to fill itself out.The first step is to get access. If it is a problem to access the server, the code base, or get a copy of the database, that in itself can be a finding of the audit. If the people you're working with don't know how to get you a copy of the database or access to the server, or they don't have SSH keys, that is part of the environment that the site is living in. It could itself be a finding. These sites don’t exist in a vacuum.
If the client refuses to give you access because they have some security reasons and nothing you can sign is going to do anything about it, you'll be really limited so you'll have a smaller scope to your audit.
Ideally, work locally and get a local copy of the site set up. That way you can click around everywhere, run all the automated reports you want, and not have to worry about messing anything up. As an auditor, you change nothing. Click everywhere, but never hit save.
Typically in an audit the more you find, the better. You're not going to lose points for looking at things that people didn't think you were supposed to be looking at. Take notes the entire time you're looking so you can eventually write those up into a proper document. Talk it Over
It’s critical to set up a series of meetings as part of the audit. First, have a kick-off meeting to get basic background information: a little about the organization, how this site came to be, what it's supposed to be doing, and who's involved. Confirm the boundaries of the audit- for example should you be auditing everything at one subdomain, or more. Also make sure you have access to everything you need. There’s no need to get into too much detail at that kick-off meeting other than a basic situational awareness.After a day or two of digging into the site, I like to have another meeting because then I have some questions and I'm very focused on the project at that point. Then I like to really dig in and ask questions about their specific concerns and odd things I’ve started to uncover.
You want to make sure that you're auditing and paying special attention to things that that the client is focused on and concerned about. It's also important to have these meetings to get a sense of the client’s technical vocabulary and background and whom you're actually addressing in this audit. It's easy to make an audit that makes you look really smart, and they will not use it at all because they don't understand what you're talking about and you’re not making your points clearly enough. Then we just have this huge, intimidating pile of paper. It’s about clear communication and not being pedantic.
Stay tuned for Part 2: Top Three Priorities of A Site Audit. Terms:
In Part 1 of this series, I showed an easy system for including oEmbed rich content in a WYSIWYG, including reusing that content. In this installment I'll step through how to set it all up in Drupal 7.How to Set Up Asset and oEmbed modules
First of all, in order to use Asset module you can't use WYSIWYG module - you need to use CKeditor module. CKeditor module is great though - you have more control of your editor configuration than with WYSIWYG module.
Install Asset module from drupal.org: I typically enable only Asset, Asset document, and Asset image, out of the submodules in the Asset package.
Similar to how Media module works, you need to enable the Asset filter on your input format(s). On the CKeditor settings make sure you enable the Media Asset plugin.
Also add oEmbed module and enable its submodules oEmbed Field oEmbed Embedly. Add an API key to the oEmbed Embedly configuration.
Create a new Asset type (Structure: Asset Types: Add Asset Type) called 'Embed' and pick an icon for it. At 'Manage Fields' add a link field, and at 'Manage Display' choose oEmbed for the display formatter of the link (for both Default and Full Size modes). Go back the CKeditor settings and drag your new button into your WYSIWYG configuration.
You may also want to do some templating and styling: I overrode the oembed.tpl.php from oEmbed to not show an extra title link to the embed. I also overrode the asset.tpl.php to likewise not show the Asset title.
Media module has a nice ability to be used as a widget for a file field, letting you reuse media from your library or add new media. So how can we get a similar feature using our beloved Asset module library?
Because Asset is an entity type, you can create entity reference fields to reuse assets. A great widget for entity reference fields is Inline Entity Form. This lets you add a new or existing asset of any type as a field. We contributed a patch for Asset to add support for Inline Entity Form, which is in the latest Dev release of Asset module.Using Inline Entity Form, you can add a new or existing asset as a field. Adding a new Embed Asset within Inline Entity Form. Do I have to do this for every new site I make?
Of course not. This is the kind of setup you should do in a starter-kit: an install profile that you use for every site. We've added it to our Bear Starter-kit, which you're welcome to fork.OK, but what if I use Scald or Media module and can't switch to Asset?
If you're not ready to make the Asset module plunge, you can still use oEmbed. If you like Scald, you can do a similar setup using this Embedly Scald module. And if you use Media module you can use the Media oEmbed submodule (included in oEmbed module).
Product by USAopoly More about this product
List Price: $34.99 Price: $31.90 You Save: $3.09 (9%)
Stay tuned for Part 3 in which we report on what we've done to make it easy to embed 3rd party content in Drupal 8.Terms:
In Paris, the protest started at Place de la Bastille :
APRIL was present, with in particular its president Lionel Allorge, and two members who wore the traditional anti-DRM suit :
Jérémie Zimmermann from La Quadrature du Net gave a speech and urged people to contact their legal representatives, in addition to protesting in the street :
The protest was cheerful and free of violence :
It got decent media coverage :
Notable places it crossed include Place des Victoires :
and Palais Royal, where it ended :
Next protest is in 2 weeks, on March 10th. Update your agenda!
The Learn OpenGL ES website recently switched its licensing to Creative Commons BY-SA 3.0
It provides tutorials for OpenGL ES using Java/Android and WebGL, and is focusing on a more community-oriented creative process. Give them cheers!