Recently, I have been reflecting on, discussing and writing about open source. After the publication of an article on the Wired web site, one of my colleagues, Kristofer Joseph, came to me and essentially said: “I think there is something about open source that your article does not cover, that is important and that people often miss”. Of course, Kristofer had my full attention with that introduction. So we talked more and Kristofer went on to explain that he felt that the ‘working in the open’ part of the open source culture was either overlooked or not understood. I think he is right so, let’s talk about that. Why open source often means working in the open (it should)? Why is it important?
When you work in an open source project, your code is visible by anyone. Not only your source code, but every single code commits you make and every interaction (comments, issue tracker, mailing list) you have with the community. There is no hiding in open source. Your contributions and interactions paint a living memory of your persona.
You have to show your true color and that is why open source is a meritocracy and not a status based culture. Your work speaks for yourself. That typically makes people raise their standards, strive for excellence and I am convinced that the open collaboration explains a large part of the open source software’s success.
Get early and constant feedback
If you work in the open, you can interact with people as you develop your code. In a way, it is related to the lean start-up model that is geared towards early customer feedback that allows quick iteration and course correction. Transposed to an open source project, working in the open is letting you be lean: your customers, people who might use your project, can see an on-going project, try early versions of the software and comment. You can also reach out to them to ask for opinions, preferences or guidance. You can experiment fairly quickly and validate or invalidate hypothesis you have.
A great example of early and constant feedback is the work that Kristofer and his team do on the Topcoat project. By working in the open, we have made a lot of design choices and course correction, thanks to the feedback we got from our bleeding edge users.
But working in the open has its traps. As Kristofer mentioned, it is not always understood.
Working in the open means good and bad work in progress is shared
People not familiar with open source sometimes have the expectation that it should be like a product from a commercial company. So if I get code from the project, and if it is not perfect, then there is disappointment.
This is where open source projects are usually careful at setting expectations and try to guide their users, making it clear where to get a stable build, versus a development version or a beta build. For example, you can get nightly builds of WebKit and by the design of that version of the project, it is clear it is work in progress.
The best open source projects use continuous integration to get natural quality assurance on their code for building, testing, coverage and performance regressions, which helps maintain high standards even for in-progress work.
Working in the open means that you can implement your own wishes!
Another thing which sometimes happens is that people would expect that they can interact with an open source project like they do with a vendor. If there is a feature that I want, then I should demand that it be added. It works a bit differently in open source.
Of course, projects typically welcome suggestions or requests for features. That is part of getting feedback and guidance from the users. But if you really want something to happen on your schedule, the best approach is to actually contribute to the project and start engaging and contributing to the effort. A lot of individuals and companies do that routinely with a lot of success, for example around the Eclipse open source project.
So, why work in the open? Not just for open source!
Working in the open makes your project run like a start-up trying to get constant feedback, reacting to demand quickly and adjusting course as needed. It makes you and your team raise your standards. It means that you have to set expectations properly too, but that is ok. And it also allows you to welcome contributions to your project, making it more valuable than you could on your own. So Kristofer is right, this is all important!
A final, important point: working in the open can also be done for non ‘open-source’ projects. It is an approach you can take for internal project and even very large companies such as SAP have been able to implement that successfully, as Dirk Riehle described in his research.
The Web is an ever changing place and the first half of the year has been rich in surprises, big announcements and industry shifts! A diversity of implementations is good for many reasons we will discuss. But a more fragmented web could be the price to pay. Will it be the case?
About Implementation diversity
A few weeks ago Opera announced they were stopping work on their Presto rendering engine and switching to Chromium. They have already started contributing code to the project. Then, earlier this month, Google announced the Blink project, essentially a new fork of WebKit. And now Opera announced they will contribute to Blink!
Reactions were interesting as we went from WebKit monopoly concerns to worries about web platform fragmentation in a matter of weeks. Quite a 180 degrees turn!
At Adobe, we actively contribute to Web standards and browser implementations (historically mostly WebKit and Chromium, even though we also make some contributions to Gecko). As such we are delighted to see Opera join one of the projects we contribute to. Their considerable web expertise will undoubtedly be an asset.
So we were not too concerned about a WebKit monoculture. But…
As Brendan Eich says in his blog about “why Mozilla matters”:
“The web needs multiple implementations of its evolving standards to keep them interoperable.”
I believe this tenet to be central to delivering on the promise of the Open Web. A single implementation does not establish a standard. The W3C process even recommends two implementations in order for a specification to reach completion.
The Web needs Mozilla’s Gecko and Microsoft’s Trident engines to nurture an open, innovative environment. Historically, both companies have done a lot for the Web - think of XHR which Microsoft invented (among other key contributions) or WOFF from Mozilla – and they continue to innovate: Microsoft and Mozilla co-edit the CSS Grid specification, which provides much needed and improved layout flexibility to CSS.
I trust that the addition of Blink will strengthen an already healthy browser competition. Over time, the Blink code base will diverge from WebKit’s but no harm to the web occurs if both engines implement the same features in different ways. Only significantly different feature sets could result in harmful fragmentation. Making sure that WebKit, Blink and other browser engines interoperate is more important than it has ever been.
About testing, fragmentation and experimental features
As the founders of Test the Web Forward, we have come to appreciate the mutually reinforcing benefits multiple independent implementations bring to standards. Historically, testing has been key to the success of web standards. For example, the focused testing effort on CSS 2.1 has shaped that specification and its implementations in the corner stone CSS has become. A single implementation would leave a lot of stones unturned.
It should also be noted that the Blink policy regarding prefixes is really good for standards and compatibility across browsers: draft standard features can become truly experimental features that will not be used (and abused) in production. This should help avoid browser compatibility headaches down the line and I hope this example will be followed by all browsers.
About fragmentation and Adobe’s contributions
In this new web platform landscape, what about Adobe’s contributions to open source browsers? What impact does additional browser fragmentation has on Adobe’s efforts?
Adobe contributes to standards in open browser implementations for many reasons.
One of them is that our new generation Edge tools use a ‘web design surface’. For well over a year now, we have chosen to use the Chromium Embeded Framework (CEF) to provide this ‘web design surface’. So naturally, we will contribute to Blink since it is now the core engine that powers CEF.
Another reason for contributing to open browsers is to accelerate the availability of new features on the web. This is why we collaborate with Mozilla on a number of standards and contribute code to Gecko (like this patch on masking for canvas). And this is why we will also contribute to WebKit, in addition to Blink, now that the two are separate projects.
An open, innovative and tested web!
So yes, I think it is good to have multiple browser engines and Blink is a welcome addition to the web platform landscape. It is bringing a healthy diversity that I hope will help keep the web open and foster innovation as long as all browsers strive to implement ‘the same web’.
And this is where testing efforts are key to achieving diversity without fragmentation. I hope testing activities (of browser code of course, but of standard test suites as well and major initiatives that the W3C is driving) will be a major focus for all the browser vendors going forward, in particular for Google with its new Blink implementation.
Today, we’re unveiling a new addition to the Digital Media blog, focused on the Web platform. The new blog, called Adobe & The Web, will touch on thought leadership, industry trends and product related announcements from Adobe and partners in the standards and open source Web space. We’ll also touch on commercial tools and service offerings. See our inaugural post below and look for much more to come.
Today in San Francisco, we kicked off Create the Web, a worldwide tour for interactive web designers and developers and partners that will provide us with the opportunity to share our vision for the web. We are delivering a live streamed keynote that lays out our vision for the web and the role that Adobe will play.
Our mission is to make the web better and to build the best tools in the world for web designers and developers.
We contribute to web standards and to open source projects, like WebKit and Cordova, to move the web forward. We get involved in the community, through hackatons and meet-ups. For example, we have worked with the community to organize a series of events called Test The Web Forward. These are a kind of hackatons where we focus on identifying and fixing interoperability problems in the various browsers. We welcome and encourage the participation of anyone interested in joining us.
We are contributing improvements in a few areas where we have some expertise, including magazine-quality layout (CSS Regions & CSS Exclusions), graphical foundation (blend modes, compositing and transforms), better device APIs and cinematic visual effects (CSS custom filters). We are also making available today CSS FilterLab, a fun experiment to play with custom filters, which even allows you to write and debug custom shaders right from your browser.
We also build the tools and services that web designers and developers need. This includes tools like Dreamweaver, our all-in one web production tool. We are releasing today an update to Dreamweaver with support for new HTML5 elements, faster FTP, a streamlined insert panel, support for Edge Animate and more. This update is available for free to Creative Cloud members.
We’ve also introduced Edge Web Fonts, a new service built on the Typekit engine to deliver free and open source fonts.
We’ve given a sneak preview of a new tool we’re working on called Edge Reflow which makes it easy to create responsive web content visually, but using standard CSS and media-queries.
We had a lot of exciting news to tell you about today. To find out more about what we’re doing to make the web better, visit html.adobe.com.