Open Source & Strategy
Editing & Page Creation
This new text editor is cross browser compatible, makes clean HTML, is bootstrappy in its styling, and generally is totally awesome. Weve already integrated it with concrete5 so successfully that we can do text editing within the page instead of an overlay to our satisfaction.
This also works easily with the page in edit mode (skipping the click to put a specific block in edit mode), effectively giving us a middle edit state were going to use for other things later.
The only challenge were looking at here is what to do with legacy issues and TinyMCE. My own sense on this one is hey, you upgrade you lose old bad stuff and get sexy new stuff so if theres a strong argument for why concrete5 needs to support both editors, Id love to hear it.
As part of integrating redactor, weve been able to include a new snippits feature that amounts to Mail Merge in MSWord. You can pull in the current date, user name, page name, etc. Were architecting this in a flexible way so a developer might integrate with other data sources in handy ways.
Check out the video from a while ago...
Demoing editing a page on concrete5 always feels great, prospects just get it and quickly become clients. Demoing page creation is less awesome. Explaining to someone that your whole site is a tree and you have to goto the parent of where you want this page to be first is where they start to come back to earth and realize they need to pay attention. Composer starts to solve this problem a bit, but it also solves a completely different problem of making data entry screens for CRUD type problems. Adding more options rarely makes something less overwhelming. Were going to solve this problem by breaking it along more traditional lines:
1) What is composer today will mature into something that creates the scaffolding a developer needs to create a custom entry/edit UI in the dashboard. Use this for creating interfaces for inputting strongly typed content.
2) What is Add a Sub Page today will mature into something more geared for drafting as you go. You can add content from anywhere, you start writing (with auto-save) before you have to decide what it is youre making or where youre going to want to publish it. There will be mobile and browser toolbar versions of this Create tool.
New Add Block Interface
Adding a block will be as simple as dragging its icon from the Add Block toolbar into an area at the exact point you wish it to display.
The fact that sometimes page types exist for layout and sometimes as an object model is not great. Someone should be able to add a calendar event or a blog post, and also switch its form factor. Were going to introduce a new concept called Feature that we can use to quickly determine if a page contains certain types of data for programmatic purposes. This should let us organically push page types towards the layout solution and de-couple functionality from requiring specific page types more. Blocks and add-ons could mark pages as implementing these Features, meaning that youll never have to choose whether a page is a Calendar Event or a Product Detail page type.
Were currently rewriting Layouts completely. The next version of Layouts will honor permissions and permissions inheritance correctly, be better integrated nto the concrete5 editing system, work correctly with area-specific developer methods, integrate better with themes, and be a bit more aware of modern style guidelines. Yes you can lock layouts and reuse them today, but it feels like a last minute feature. We want to make it easier for you to create snap to points so a site owners layout falls on common alignment lines.
We currently have three image editing solutions in concrete5. The avatar picker, the image sizer from composer, and the edit image from file manager. Some of them are Flash (ick). All of them suck. Were rebuilding all of these to be served by one attractive well thought out extendable image editor that the community can add filters/plugins to.
A sneak peak into the goals and vision for the next major release of concrete5.....
Did you know that a major 4g wireless provider uses concrete5 across their web presence, which serves 66m+ pageviews a month?
How about the largest publisher and distributor of childrens books in the world?
The UK division of a well known american car company?
If you're not a regular viewer of Totally Random you may have missed the complete overhaul of the Advanced Permissions system we've been working on in the next version of concrete5. We're getting ready to unleash it onto the world, and we wanted to take a moment to share our schedule with you.
While concrete5 can support multiple authentication methods, and has built-in support for OpenID (in addition to the core concrete5 authentication method), there's no framework for building these authentication methods, making their settings available to administrators in the dashboard, grouping them on a login page or managing which authentication methods are available or how they are displayed. The Authentication Framework will change that.
As concrete5 continues to grow, our organization and roles are changing. When we started, it was just a couple of guys in their basement and a half a dozen sites using the software. Today there are 65,161 users on concrete5.org. More than 130,000 unique sites that have hit our servers for update information. 65,448 sites have connected to concrete5.org and made project pages.
Wow. If you haven't heard the drama, you should watch this video. In short, a premium theme developer (DYITthemes) which sells a wordpress theme named Thesis does not release it under the GPL license.
Matt Mullenweg, the co-founder and leader of Wordpress is calling him out on it; "when you violate someone's license it is breaking the law. It's a definition of breaking the law."
Chris Pearson says he doesn't have to release his theme under the GPL "They are not the highest authority node up on the tree that gets to decide everything that happens underneath them."
You can watch them get all sassy with each other for an hour, if you want. Plenty of people have and some of them are asking for our view on it.
concrete5 is a competitor to Wordpress in ways, and we had to choose a license when we started as well. We specifically did NOT choose the GPL for exactly this reason. Here's how we see it…
1) Much of this is about distribution. Our understanding of this is pretty simple:
If Thesis is distributed as a stand alone download that /includes/ a copy of Wordpress, then Chris is legally wrong. If you distribute GPL software, everything you add to it has to be GPL compatible. Clear and simple, period.
If Thesis is distributed on its own, I think Chris might have an argument to make. It's easy to think "hey this does nothing without Wordpress, it is dependent on it, it needs to honor whatever legal requirements Wordpress comes up with" but I don't think that's technically true. The GPL is about the copying and distribution of software and it doesn't really cover this with a tremendous amount of clarity. There's plenty of examples that would have been a lot more interesting to discuss than what they did in the interview. For example, just because you've written software that runs on Linux doesn't mean it has to be GPL. If you distribute Linux WITH your software as a single solution it does however. How's that for weird?
Regardless, Chris would have a much better high ground to stand on if Thesis actually worked with different CMS backends – much the way that C# application you wrote for linux could also run on a variety of other operating systems.
2) Matt seems like an awful nice guy, and Pearson comes off like a total douche in this interview. I've never met either, I'm sure they're both awesome, I'm just saying after losing an hour to listening to this crap there's a pretty clear answer for who I'd like to have a beer with. That's a tremendous shame because frankly Chris is the underdog here trying to build and maintain a nice small business and Wordpress is the big player trying to squash entrepreneurialism. Regardless, Matt comes off as the hero cause he's a nice guy and Chris comes off poorly because of the way he makes his arguments. Important lessons there, it's probably time for us to do a better job stripping drupal references from our customer testimonials.
3) Wow you can tell the difference that some funding makes. Let me just be clear about what I believe to be the real motivators here, please correct me if I'm mis-informed:
Wordpress Automattic has raised over $40m in venture capital. They have over 25 million blogs out there, and fundamentally they are in the content business. They don't make their real money by selling wordpress, or taking a cut of marketplace add-ons, or offering paid hosting, or any of the stuff we do, they make their money on content. The advertising value on wordpress.com is huge. You have 25 million individuals using your platform to create content, you can monetize that in big ways. That's why wordpress may be frequently used as a CMS to build some corporate site, but you'll never see their core team drop features that help my wife (who has an active wordpress blog about DIY sewing), in favor of features that make some corporate extranet easier to run. Matt doesn't have to worry about making payroll in two weeks, he has to worry about balancing ads and content on Wordpress.com so my wife keeps going there to find other cool sewing blogs she wants to cross link to. Wordpress's real competitors are Twitter, Facebook, Google – they're in that big business of re-inventing media. That's why the GPL makes sense to them. The more wordpress is out there, the better for wordpress, as long as it's called Wordpress.
Chris on the other hand is selling a Theme that helps turn Wordpress into a application that does something more. Again I'm just guessing here, but it wouldn't shock me at all to hear Chris's company is self funded, profitable, and it hasn't been easy to get there. The idea of having a product that you sell at $50 a pop being distributed for free or even worse sold for $49 somewhere else has to make him physically sick. The carrot of "but people will want you for support" is a pretty grim answer.
I'm not arguing that Matt has an easy life and Chris doesn't. Certainly the stress of looking Phil Black in the eye and saying "yes your $40m will turn into $800 million, sir" can't be fun. I'm just saying the two challenges are very different and you can read the distinction in motivation from just the tone of their voices alone.
4) The GPL is stupid, and O'Reilly did us all a tremendous disservice when he came up with "open source". Yeah I said it, so blah! When I was a developer growing up in the 80's, we had licenses that actually meant what they said. If you wanted to just give something away, you called it Freeware. If you wanted to save some money on sales but still own your software, you called it Shareware or Crippleware depending on if you offered a fully functional copy with additional features or if you did something like disable save. These labels came from the DIY software world where entrepreneurs could start successful businesses cheap by distributing stuff on BBS's. (go look up Apogee Games). Meanwhile there were any number of "big" projects that were being distributed under licenses that made sense for schools and huge corporate problems. NASA develops some standard and wants to share it with the world, how do they do that? Several big software vendors see value in a piece of software existing, but not being "owned" by any commercial entity, how do they do that? Everyone wrote their own license and while it was confusing, it worked. Then in the late 90's the successful technical book publisher O'Reilly came along and dubbed everything I've listed as "Open Source" for the benefit of the media which was having a hard time understanding how Linux could compete with Windows. Well that's cool and all, certainly having concepts that everyone can understand in a word is great, but clearly we aren't really there. Confusion abounds. People talk about "free beer vs. free speech" all the time, it sounds like a broken record. Any one with half a brain knows that nothing worth having in life is truly free (in cost), yet we also agree that the idea buying a car with the hood welded shut sounds like getting screwed. The goal to provide some clarity across all the different types of licenses that software was released under by calling half "open source" and the other half "commercial" has utterly failed.
5) You say you want freedom? Then the GPL isn't for you. It is not "freedom" to force people who extend your software to honor ANYTHING you say. I'm not saying it isn't a good business idea, I imagine it may frequently be a great business idea, but it's not "freedom" so don't try to take the moral high ground. You're limiting people and it doesn't matter that the perceived motivation of your limit is to enforce further freedom. Freedom doesn't work that way, but proponents of the GPL seem to think it needs protection. Here's how we see it:
If you're for the GPL, you believe freedom is a fragile flower that has to be protected. "This started as free, we're going to make sure it says free with all our impressive powers."
If you're against the GPL, you believe freedom is a force of nature. It may not look that powerful at a glance, but it's gonna win in the end. It's like entropy. It exists, it will win. It doesn't need your help, all it needs is your awareness and faith, and sooner or later it'll come out on top.
Freedom is the MIT license which to paraphrase in three words says : "Don't sue us". If your goal really is to give something away for no cost and have the world be "free" to do whatever it wants with it, that's all you need. Limit the creators exposure to liability, which would limit their own freedom, and you've made it "free." Of course if you do that you run the risk of someone taking your software packing it up and screwing you over in any number of ways, but no one said freedom was easy.
These issues with the GPL are not new, and it's sad to see this play out yet again. Frankly I like to think that any legal document's job is to create clarity, and whatever your view may be, its clear the GPL is pretty gray in spots. In some ways, I hope this does go to court so we can all get a clear answer on how this thing is supposed to work.
Meanwhile if you want to be part of something that is free, and is eager to be free in a simple understandable way, you should be developing stuff for concrete5.
UPDATE : Orrrrr I'm completely wrong.
As more debate continues in IRC and other forums a point has come up that we didn't address in the original post. Thesis uses wordpress's theme engine and that includes any number of lines of code that wordpress wrote. Clearly that is their work, covered by their license, and Thesis is a derivative of it. THAT being the case, he very well may be violating the GPL. What gets interesting there is where is the line for that not being derivative? If he just goes through and renames all the functions and variables but it functions the same way, is that new work? What if he changes some logic too, for loops become while loops, etc. Where is the line where something is no longer derivative but a new thing?
What if Thesis makes an abstraction layer from scratch that does nothing but give them some differently named hooks to the same stuff, and then releases THAT abstraction layer LGPL and continues to sell their theme? That sounds legal, annoyingly stupid but legal.
Regardless the fact that everyone's so confused about this does bring serious questions to the fore on the worth of GPL and what ‘freedom' means. I hope we find out.
Most of what I've learned from going open source are just good life lessons I probably could/should have picked up anyway, and this one's certainly in that camp. I've always idolized the renaissance man. I'm a big believer in knowing a little about a lot of things vs. knowing a lot about a little. I respect the need for specialists, but even then I think they tend to be better when they've put in the work to stretch their intellect across more than one silo of information. It builds empathy and humility to not always be the expert at what you're interested in.
Going open source has provided me the opportunity to run into any number of people who are very very bright at one thing, don't foster that fundamental curiosity about topics they have no expertise in, and yet seem to think their impressive intellect makes their opinion right on all topics regardless. Just because you're amazing at the 100 yard dash doesn't mean you know dick all about water polo.
I actually had one person complain about their in-ability to do something in concrete5 with the line "look, I /am/ a rocket scientist at such and such university.. I should be able to XYZ." Strangely I am not a rocket scientist and I dropped out of college, but I can do XYZ quite easily. Go figure.
I was reminded of this just now when a thread on slashdot came up. Some fellow is chastising Apple for calling their new iPhone screen technology "Retina Display." Apparently this "marketing drivel" has so offended this guy he feels the need to rant about it on slashdot:
"Again though, why the use of meaningless words? Couldn't he have just said "the resolution/DPI is so dense that your eyes won't be able to distinguish individual pixels"? What, does the average Apple customer really seek the need of some special word to wrap up the device's capabilities in? And if they do, what does that say about their average customer?
I think it's insulting to the people that buy Apple's products, regardless of whether people seek it out or not."
Holy crap dude! For real?? Yes. This is what we have language for. You use words and phrases to sum up larger concepts so a conversation can happen at an acceptable pace. Words do create some ambiguity as definitions tend to be subjective, but without some consolidation it's difficult for anyone to get beyond facts and into useful concepts in a real world situation. I mean clearly this individual is smart enough to understand what a pixel is, how DPI might work, etc… But the basic purpose of language (were not even talking about marketing yet!) seems to not only escape them, but insult them as well.
I take two lessons from this:
1) I am a moron. This one shows up a lot in my life lessons from open source. So far I find the dumber I assume myself to be, the more pleasantly surprised I am when I get something right. If I am hearing about something that others think is awesome and my geek-gland says "that's stupid marketing drivel," chances are they're right and I'm wrong.
2) Just because you're talking to someone "smart," doesn't mean they have a clue what they're talking about.
When we were commercial software things we're, quite frankly, easier in a lot of ways. We had a few dozen clients we had active relationships with, and we worked on about half a dozen projects at a time. In those days it was pretty easy to try out a new idea with the CMS because we would simply put it on the latest clients setup and see what happened. We didn't really worry too much about keeping everyone on the latest version of the platform, and subsequently we didn't have to spend a lot of time worried about backwards compatibility.
We also didn't see a tremendous amount of intentional abuse of our systems. While we did build some large, active, and successful sites, the code behind them was only open to people who had worked with us in the past. To break one of our sites in the commercial days, you'd simply have to guess at vulnerabilities instead of being able to scour code for them first.
Now things have changed. Every feature idea we have is more and more tempered by "what will this do to existing sites or old versions." We've learned about (and quickly addressed) any number of vulnerabilities that some guy in his basement found for free – when paid consultants had found none for five years before. You quickly learn that even the most well intentioned work can cause havoc.
For example, there are two blocks in concrete5 that are commonly used to build navigations: the Auto-Nav block and the Page List block. The Auto-Nav block had been built to honor a certain variable you can set at a page level to hide that page from the navigation. The Page List did not honor the same attribute, and someone from the community pointed out that it really would make more sense if it did. We agreed and "fixed" it as part of some other version changes. Weeks later, people started complaining that their sites we're missing pages. After some frustration we realized "duh" of course people had built sites that worked around the way the blocks behaved in the past and the simple "fix" to the Page List block actually broke their sites.
We spend a lot of our time trying to manage issues that could mature like this now. I tend to take much longer to release something than I used to. I tend to be more thoughtful about the reasons and needs behind any feature changes. The temptation to "fix" something that could have been better implemented in the first place is very strong. Learning to first resist and then very delicately architect not necessarily the perfect, but rather the lowest impact solution, has been a new adventure for me. Once you go open source it is safe to assume that someone somewhere who is smarter than you and has all the time in the world, is finding the mistakes, finding the holes, and making up their own weird work-arounds which will impact you later. Be careful what you touch because no good deed goes unpunished.
Okay, we've been through this enough times that it deserves a clear position from the CEO….
concrete5 core is free and open source. When we say free, we mean "free beer." Our belief is that content management is a human right, and we are committed to making it easy for everyone in the world to run a website.
However, not every add-on in our marketplace is free. All of them are open source – meaning once you buy it you are "free" to do what you want to it for that site, and you can get "under the hood" completely.
Why do we do this?
A lot of time and money has gone into concrete5. Anyone who doesn't think we're generous has vastly underestimated the amount of energy that goes into making a powerful CMS that makes sense and doesn't require an expert to configure. We are people too however and not only do we need to provide for our families, we also need to continue to put the level of coherent leadership into the project that it benefited from when we were strictly commercial software for 5 years.
A huge part (IMHO – most) of what makes concrete5 so compelling over other projects like Drupal and Joomlais the fact that it does take the risk of saying "this is the right solution" to many problems. No, we don't believe you really need 300 results for "permissions" when searching for add-ons to a project. How about manning up and just getting the core solution right? That's our philosophy. We don't always hit the mark because we're human, but we've done pretty well so far, and that's the goal for the future as well.
Same deal with the marketplace. Other projects seem to have a pretty low barrier of entry for add-ons. I'm not entirely sure if there even is any barrier, but if it exists, surely the question is "does this add-on work with a clean install of our app? Didn't break? Okay give them a project area – goooo Open Source!" Well bravo for Free Love and everyone being Super Duper, but I see that as unfair to the next schmoe who is trying to figure out how to solve their own problem. If I download a weather widget and my whole site breaks because it uses the same table as some image gallery I already had running, everyone fails. The weather widget developer looks like an ass, and so does the image gallery developer. Both end up doing way more individualized support than they should to keep their customers happy. Moreover, the overall project fails because now no one can trust any add-on to do anything easily. This is where Drupal certainly is today, just look at Acquia's business model. This is unacceptable to us.
At concrete5.org you will only find things that work. If they don't work, we're gonna make them work for you. $15, $55, or even a couple hundred bucks is a small price to pay for something that solves a real business need for you and is going to work in a seamless, happy, healthy way. When we evaluate a new add-on, the question will be "does it work on an install with EVERYTHING added?" This is a huge challenge, but we think it's going to be critical to the success of our project in the big picture.
How do we decide what is in core?
Anything that will make a fundamental change to the way concrete5 works which would impact all add-ons and benefits the community/project is free. So recent additions that fall in that category include things like:
- A My Profile section that various add-ons like forums or ecommerce would depend on.
- An advanced file system that all add-ons can use.
- A better way to create shared central blocks.
The reality is that with other projects like Drupal, once you've installed one modification to the way core permissions work you've effectively rendered their massive marketplace to you. How can the huge community really even help when everyone's configuration is a unique one off? We're going to do everything we can to keep this project from splintering into core pieces that don't work with one another and render all subsequent add-ons a crap shoot.
Anything that we think is a basic building block to 80% of the websites out there in the world, we'll make either part of the core or free in the marketplace. So things around embedding most types of content, some interaction like guestbooks and forums..etc.. We're not asking "would everyone benefit" – because who doesn't want free stuff, but rather "do you /need/ this to get your point across with the software." Some examples:
- You can place banner ads using the Content Block, the HTML block or the Image block and your site visitors will never know the difference. Want to track click-throughs, impressions, and pull from centralized ad groups that randomize choices? You can do that, you can have it TONIGHT! That costs $55.
- You can assign a date to any page in concrete5, so it's possible to make many different type of chronilogical interfaces with the core. You can also just include a Google Calendar with the HTML block. Want a month view, list view, and ajax driven agenda view to a multiple calendar system that makes event pages spread across your site? Want that working NOW? You need to pay something too.
How do we price things?
We make it up. We don't frankly care how long it took us to write it, we don't care how much the competition sells it for, we're guessing how much you're willing to pay to have it "just work." No lie. This is business 101.
But wait, what about the Community??!?
Here's some promises to our community we've always kept and always will:
- Your stuff can go in our marketplace. We don't care if you're selling it or giving it away, if your able to give us a stable, solid, correctly packaged add-on for concrete5 and we don't think it's malware, we'll stick it in the marketplace. I can't promise you we'll feature it above our own in every interface view, but we'll gladly post your free image gallery block right up there next to our own $15 per site one. If yours is better and you can make the community happy using it, so much the better for everyone.
- We will help you sell your own stuff. Software is about support as much as creation. If you're making something and giving it away, you might consider selling it and making a buck. Getting out of the purely hourly revenue model is the dream of almost every developer out there, and we think we're gonna make a lot of dreams come true with this awesome marketplace. If you're making stuff that people want, you should want to help them install and use it safely. You should want to add to it over time. You should be compenstated for your efforts. If you'd like to sell something you've built in our marketplace, all we ask is 25% cut of the price. This is less than Apple's iPhone App store and from what I can tell comperable toDot Net Nuke's system if not better.
- This stuff is not going to be super expensive. I've seen libraries that take this approach where solutions cost many thousands of dollars. Crap, I remember buying a Digital Asset Management system from the Cold Fusion marketplace back in the day for 8k and still shoveling out 30k to the developers to customize it to our client's needs. This isn't the model here. The highest price we've even debated setting a product at so far is $255. That's what most targeted consumer software is priced at today. There's no five figure recurring yearly license fees here.
What does this mean for the project?
It means a lot of great stuff. It means we're going to end up building a community that is not only passionate, but is actually making a better life for themselves and their families out of their contributions. It means when you go shopping for add-ons for your site, you'll be able to do it with a smile on your face and try stuff out without fear.
Is it open source? Absolutely yes. Open source as a term is really just a catch all for any number of different license types from the 80's and early 90's when we were cutting our teeth in the BBS scene, and this idea honors them all quite well.
If you're still not sold, ponder this:
THE MAN is actually just A Man.
Thanks for making it though this rant, hope you agree – I'm sure you all won't. If you don't I'm all ears on constructive suggestions. If the reply is "it should be free because I want it to be, and it's not my problem how you or the project succeeed in the big picture…"… the door is that-a way. <grin>