12 January 2009 ~ 20 Comments

Flex SDK Source does not an “open source” project make

The title of this post is a topic that has fired me up for a really long time. It is the idea that spurred me to get involved with some of the open source cfml frameworks that I use. Fusebox is actually a really great example of this. At CFUnited 05 and later Frameworks conf that year many people were talking about the fact that while Fusebox was technically open source, no one had any idea what was going on with the development of that project. Everyone knew who was responsible but we all felt like we had no mechanism for input into the framework. Sadly enough this was the opinion of several members of the infamous Fusebox Council. If I remember correctly it was then at those conferences that the steps were taken to change the leadership of the project and start the Trac and SVN sites to enable transparency in the project. I think it was this action that really spurred the growth of open source in the ColdFusion community. Now I don’t take any credit for this process, there were many folks involved, but the point is that the community around Fusebox was much happier and stronger once the mechanism for transparency was put in place.

At MAX US this last year I got on a tirade at the Openness at Adobe BoF session speaking about a very similar topic. Everyone was very excited by Adobe choosing to open the source the Flex SDK. But I will be honest that I never really understood their intentions. My joke at the session answered the question of why? “because the competition wont”. But it really is a great question. What does Adobe have to gain from open sourcing the Flex Framework. Opinions on this vary but after talking with lots of folks about this I really do think that they wanted to enrich the community and better the framework through community contribution.

So lets talk about contribution for just a second. I’ll be honest there are two ways I see of contributing to the flex framework. The first is reactionary, its bug fixes. It is submitting patches through the bug system to help eliminate software problems that made it out into production code. I am going to assume that 99% of the contributions Adobe get around flex are this kind of submission.

The second kind of contribution would be feature development. This would include adding new functionality to the SDK for inclusion in the framework. I would expect this to be the area where the community could most help Adobe in developing Flex because every serious Flex shop I know of is working off a private branch of the Flex SDK because they have needed to add some functionality or another that Adobe had not included. The problem is that there is currently no way to submit this kind of contribution to Adobe. You can not submit your new functionality and there is no forum to discuss what those features are and if the community believes they should be included.

This is the crux of this post/rant/whatever – Creating an open source project is about openness in planning and development. Not just about giving people the right to do with the code what they will. And this part of the Flex project is a complete failure. Adobe is in a prime position to absolutely crush any alternative framework or platform because they have built an enormous community of potential framework developers. Everyone who writes a single line of Actionscript 3 code is a potential contributor to the Flex SDK. The current Flex SDK team has about 20 developers and they are fiendishly working on the code for the next version of Flex, version 4 code named Gumbo. And they are doing all that development in private, behind closed doors with nothing but commit logs for us to know what is happening. This is an open source project and we have no idea what is going coming or what the timelines are for milestones. What the hell are the milestones?

While I may not agree with Adobe’s discussion to open source Flex (thats right, I don’t think they should have) they did. And its time that they fulfill the obligations of that decision. It is our responsibility as users of Flex that we hold them accountable for our project and that we ensure the project is being directed as we choose. It is up to us to ensure that stupid decisions guided by problems in the tools don’t affect the Open Source SDK. Of course I am talking about the decision to prefix all gumbo components with Fx. This is a stupid (project altering developer abandoning) solution to a problem that did not really exist. As I understand the problem from ranting at Adobe employees this was done because we can not style classes from the halo and gumbo toolsets separately using CSS. Because they have the same class name and are only separated by a xml prefix they can not be separately styled using the style selectors (ie Buttion {} ). But this is only a problem first, if you are using halo class and the same class from gumbo (ie Button) in the same project. And second this “problem” can be solved by using the styleName property or a couple other css tricks. And again while this is a very silly and bad decision (my opinion), the problem is that before this choice was made, before they decided to refactor the entire gumbo component set, before they chose to deviate from the standards they had set forth, no one in the community had a chance to give any input. And because the SDK is being developed behind closed doors in conjunction with the tools we use to write our code, we can’t change it back. Because even though the SDK is open, the other tools Adobe is writing are not, and they are major projects inside adobe that have financial connections within the company we can not comprehend.

I am a huge proponent of open source software. And I think its amazing that Adobe has opened so many of its products. But the time has come for them to change that from a marketing decision to an implementation that the community can provide input on. The community can not be kept in the dark about the plans and future of the Flex SDK. I understand that Adobe is a company that builds tools and makes money, but the tools should support the work of the community on the Flex SDK. The tools can not drive the decisions around the Flex SDK.

If you agree make sure adobe knows. I have talked to everyone I have access to. Make sure that everyone you know at Adobe understands this problem because its the only way we can get this issue resolved. Dave McAllister tells me that Adobe will always develop the Flex SDK as a Benevolent Dictatorship. I am totally ok with that as long as I know that they decisions they make are influenced by the voice of the community. And that Adobe knows that if they F*@K this up, we can and will fork and fix the SDK.

Tags: , , ,

20 Responses to “Flex SDK Source does not an “open source” project make”

  1. Sebastien Arbogast 12 January 2009 at 6:48 am Permalink

    I was at Dave McAllister’s session at MAX Europe and there was this panel discussion with Dave Story and Ryan Stewart about “Why Open Source? What Makes The Cut?”. And what I remember from this talk is how hard it can be to switch from a closed to an open model in such a big company. There is clearly some will to do things right, but those guys are constantly fighting against old beliefs and resistance. And the resistance is even stronger because of the growing richness of the Flash platform. Look, Flex is Open Source, but Photoshop and Illustrator are not, and now there is this new tool inbetween, Flash Catalyst, that will be influenced by and will influence all the products it interacts with.

    I mean, we have to give them more time. I totally agree with on what needs to be done but we cannot expect them to do it like now! And if we fork and improve, then it’s not gonna help at all. From what I remember, there is a change of management: Dave Story is now the Director of Product Management for the Flash platform. And from what I’ve heard, he’s very open-minded and willing to listen to feedback from the community. But those things take time.

  2. Adam Haskell 12 January 2009 at 7:53 am Permalink

    Wow dude great editorial, 100% agree. Even some of Adobe’s closed source projects have better involvement from the community, I feel like they really listened to the community for ColdFusion in the past. It’s sad to see such a closed process for Flex SDK when the rest of the company is trying to become more transparent.

  3. Simeon 12 January 2009 at 8:09 am Permalink

    @Sebastien, I was in that panel as well. And I refrained from stirring up the same discussion I had started at MAX US. I understand that Adobe is a big company and they mean well with what they do. And that you can’t just change the course of an iceberg over night. The problem is that if we don’t stand up an say something they wont know they need to change. I know there are other people that have expressed the same concerns I have but a few shouts in the crowd can be easily overlooked. We need to be loud and forceful so that we can make a difference.

    Forking the framework is a last resort. But Adobe needs to understand that we have the force and numbers to be successful in doing so, or else they have no reason to change the way they do things. Either they can run a community based Flex project, or we can run a community based Flex SDK fork.

    I know lots of people on the Flex teams and they work hard and they want to make us happy. They work hard to build amazing software and tools for us. And I think this decision needs to be made from higher up than there team. Most of the folks I talk to agree with the rants I get on but are not in a position to change anything. So the threat has to be severe enough that the chain gets involved high enough to make a difference.

    I made it a point to introduce myself to Dave in that panel in europe. I hope that he will remember the passionate guy in the front row if he gets a chance to read this.

  4. Dave McAllister 12 January 2009 at 12:50 pm Permalink

    Good day.

    Believe it or not, this issue is on my “strategic to-do” list. And yes, your voice(s) do help get the message through.

    It is a hard balancing act, providing a great open source community and dealing with internal (and confidential) needs. It is clear that we need to do better, to make things easier to work together.

    This is a learning process with in Adobe. I welcome your constructive ideas. And let’s work to make sure we can meet the concepts of the community, balanced against our own ideas.

    davemc
    Dave McAllister

  5. Simeon 12 January 2009 at 1:28 pm Permalink

    HI Dave,

    You have I have talked about this, and I know its something you are working on. I value your work and your commitment to steering Adobe on its path to open source.

    But I also know that you have many responsibilities and are often the only advocate for these endeavors at Adobe. I lend my voice and want to try to rally those who would support your effort to also give their voice to this problem. So many people agree with what I suggest, and support your efforts. I know that forking a project is very rarely a solution that yields positive results. And I consider this a last resort.

    However, it is an option that needs to be considered right now. Everyday Adobe works with silent deliberation towards the next release of flex. And the further along they get the more embedded the problem becomes. We need to raise awareness of the problem and try to invoke a clatter from the community so that the people who need to be convinced (the ones you are working with) have a reason to beyond your telling them its a good idea.

    I value your voice inside Adobe, and respect your efforts. My efforts are only to help you along. Well… and to make sure things don’t get messed up while you steer the iceberg! :)

  6. Bjorn Schultheiss 12 January 2009 at 4:02 pm Permalink

    I’m going to pass on the Flex 4 Gumbo testing.
    It seems their development is very focused on integration with their other toolsets, FB4, Thermo, FXML….

    It would be interesting if the entire community could get behind and start submitting features.

    nice article.

  7. IanT 19 January 2009 at 2:05 am Permalink

    Every time I hear that Fx* prefix nonsense I shudder and can feel a rant building up…

  8. Alan 19 January 2009 at 12:07 pm Permalink

    I’ve posted on other blogs this idea – I’m all for a ‘Flex-Lite’ framework. If anyone starts this, go a head and sign me up… really ….no joke, email me and sign me up.

    Wade has inspired me:

    http://wadearnold.com/blog/?p=194

  9. Dave Story 19 January 2009 at 11:18 pm Permalink

    Hi, Dave Story here. Yes, I’ve joined the Platform BU as VP of Developer Tools. That means my teams are responsible for product development and product management of Flex SDK, Flex Builder, Flash Catalyst (“Thermo”) and ColdFusion. For some perspective, today is day 10 in my new role, so I’m catching up on discussions and issues.

    I just found and read your blog, and I look forward to spending time helping with the next steps. I and others are listening.

    Stay tuned, there are a lot of variables, but everyone at Adobe wants to do the right thing for all our stakeholders.

    And thanks for your passion!

    Cheers,

    Dave Story

  10. Richard Lord 20 January 2009 at 1:56 am Permalink

    I agree. I’m constantly extending flex with new components and improvements to existing components, but it never occurs to me to submit them to the project because it doesn’t seem possible to do so.

    As for Fx, CSS3 contains a proposal for handling namespaces – wouldn’t that have been a better solution.

  11. Joeflash 26 January 2009 at 9:35 pm Permalink

    i totally agree dude. And if you hate the Fx prefixing as much as I do, then you NEED to vote for this “bug”: https://bugs.adobe.com/jira/browse/SDK-17854

  12. quality reviews 3 March 2009 at 6:19 pm Permalink

    Thanks for the info, I love finding out about new techniques

  13. John Taylor 23 April 2009 at 4:22 pm Permalink

    Interesting blog post. What would you say was the most important marketing factor?

  14. Felis 14 July 2009 at 4:40 pm Permalink

    You seem to be a real expert, did you study what you’re talking about? lol …


Leave a Reply

PHVsPjxsaT48c3Ryb25nPndvb19hYm91dDwvc3Ryb25nPiAtIEhpISBNeSBuYW1lIGlzIFNpbWVvbiBCYXRlbWFuIGFuZCBJIGFtIGEgd2ViIGFwcGxpY2F0aW9uIGRldmVsb3BlciBzcGVjaWFsaXppbmcgaW4gdGhlIEFkb2JlIEZsYXNoIFBsYXRmb3JtLiAgSSBhbSBhbiBBZG9iZSBDb21tdW5pdHkgUHJvZmVzc2lvbmFsIGFuZCBhbiBBZG9iZSBDZXJ0aWZpZWQgVHJhaW5lciBmb3IgRmxleCBhbmQgQUlSLiAgSSBhbSBhbHNvIHRoZSBQcmluY2lwbGUgSW5zdGlnYXRvciBmb3IgUE5XIFJhaW4gTExDIGEgUklBIGNvbnN1bHRpbmcgYW5kIG1lbnRvcmluZyBjb21wYW55LjwvbGk+PGxpPjxzdHJvbmc+d29vX2Fkc19yb3RhdGU8L3N0cm9uZz4gLSB0cnVlPC9saT48bGk+PHN0cm9uZz53b29fYWRfaW1hZ2VfMTwvc3Ryb25nPiAtIGh0dHA6Ly93d3cud29vdGhlbWVzLmNvbS9hZHMvd29vdGhlbWVzLTEyNXgxMjUtMS5naWY8L2xpPjxsaT48c3Ryb25nPndvb19hZF9pbWFnZV8yPC9zdHJvbmc+IC0gaHR0cDovL3d3dy53b290aGVtZXMuY29tL2Fkcy93b290aGVtZXMtMTI1eDEyNS0yLmdpZjwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX2ltYWdlXzM8L3N0cm9uZz4gLSBodHRwOi8vd3d3Lndvb3RoZW1lcy5jb20vYWRzL3dvb3RoZW1lcy0xMjV4MTI1LTMuZ2lmPC9saT48bGk+PHN0cm9uZz53b29fYWRfaW1hZ2VfNDwvc3Ryb25nPiAtIGh0dHA6Ly93d3cud29vdGhlbWVzLmNvbS9hZHMvd29vdGhlbWVzLTEyNXgxMjUtNC5naWY8L2xpPjxsaT48c3Ryb25nPndvb19hZF90b3A8L3N0cm9uZz4gLSBmYWxzZTwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX3RvcF9hZHNlbnNlPC9zdHJvbmc+IC0gPC9saT48bGk+PHN0cm9uZz53b29fYWRfdG9wX2ltYWdlPC9zdHJvbmc+IC0gaHR0cDovL3d3dy53b290aGVtZXMuY29tL2Fkcy93b290aGVtZXMtNDY4eDYwLTIuZ2lmPC9saT48bGk+PHN0cm9uZz53b29fYWRfdG9wX3VybDwvc3Ryb25nPiAtIGh0dHA6Ly93d3cud29vdGhlbWVzLmNvbTwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX3VybF8xPC9zdHJvbmc+IC0gaHR0cDovL3d3dy53b290aGVtZXMuY29tPC9saT48bGk+PHN0cm9uZz53b29fYWRfdXJsXzI8L3N0cm9uZz4gLSBodHRwOi8vd3d3Lndvb3RoZW1lcy5jb208L2xpPjxsaT48c3Ryb25nPndvb19hZF91cmxfMzwvc3Ryb25nPiAtIGh0dHA6Ly93d3cud29vdGhlbWVzLmNvbTwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX3VybF80PC9zdHJvbmc+IC0gaHR0cDovL3d3dy53b290aGVtZXMuY29tPC9saT48bGk+PHN0cm9uZz53b29fYWx0X3N0eWxlc2hlZXQ8L3N0cm9uZz4gLSBraGFraS5jc3M8L2xpPjxsaT48c3Ryb25nPndvb19hdXRvX2ltZzwvc3Ryb25nPiAtIGZhbHNlPC9saT48bGk+PHN0cm9uZz53b29fY2F0X21lbnU8L3N0cm9uZz4gLSBmYWxzZTwvbGk+PGxpPjxzdHJvbmc+d29vX2NvbnRlbnRfYXJjaGl2ZXM8L3N0cm9uZz4gLSBmYWxzZTwvbGk+PGxpPjxzdHJvbmc+d29vX2NvbnRlbnRfaG9tZTwvc3Ryb25nPiAtIGZhbHNlPC9saT48bGk+PHN0cm9uZz53b29fY3VzdG9tX2Nzczwvc3Ryb25nPiAtIDwvbGk+PGxpPjxzdHJvbmc+d29vX2N1c3RvbV9mYXZpY29uPC9zdHJvbmc+IC0gPC9saT48bGk+PHN0cm9uZz53b29fZmFjZWJvb2s8L3N0cm9uZz4gLSBzaW1iYXRlbWFuPC9saT48bGk+PHN0cm9uZz53b29fZmVlZGJ1cm5lcl91cmw8L3N0cm9uZz4gLSA8L2xpPjxsaT48c3Ryb25nPndvb19mb290X2NhdF9tZW51PC9zdHJvbmc+IC0gZmFsc2U8L2xpPjxsaT48c3Ryb25nPndvb19mb290X25hdl9leGNsdWRlPC9zdHJvbmc+IC0gPC9saT48bGk+PHN0cm9uZz53b29fZ29vZ2xlX2FuYWx5dGljczwvc3Ryb25nPiAtIDxzY3JpcHQgdHlwZT1cInRleHQvamF2YXNjcmlwdFwiPg0KdmFyIGdhSnNIb3N0ID0gKChcImh0dHBzOlwiID09IGRvY3VtZW50LmxvY2F0aW9uLnByb3RvY29sKSA/IFwiaHR0cHM6Ly9zc2wuXCIgOiBcImh0dHA6Ly93d3cuXCIpOw0KZG9jdW1lbnQud3JpdGUodW5lc2NhcGUoXCIlM0NzY3JpcHQgc3JjPVwnXCIgKyBnYUpzSG9zdCArIFwiZ29vZ2xlLWFuYWx5dGljcy5jb20vZ2EuanNcJyB0eXBlPVwndGV4dC9qYXZhc2NyaXB0XCclM0UlM0Mvc2NyaXB0JTNFXCIpKTsNCjwvc2NyaXB0Pg0KPHNjcmlwdCB0eXBlPVwidGV4dC9qYXZhc2NyaXB0XCI+DQp0cnkgew0KdmFyIHBhZ2VUcmFja2VyID0gX2dhdC5fZ2V0VHJhY2tlcihcIlVBLTExMTUwNTYtNFwiKTsNCnBhZ2VUcmFja2VyLl90cmFja1BhZ2V2aWV3KCk7DQp9IGNhdGNoKGVycikge308L3NjcmlwdD4NCjwhLS0gUGl3aWsgLS0+DQo8c2NyaXB0IHR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIj4NCnZhciBwa0Jhc2VVUkwgPSAoKFwiaHR0cHM6XCIgPT0gZG9jdW1lbnQubG9jYXRpb24ucHJvdG9jb2wpID8gXCJodHRwczovL3N0YXRzLnBud3JhaW4uY29tL1wiIDogXCJodHRwOi8vc3RhdHMucG53cmFpbi5jb20vXCIpOw0KZG9jdW1lbnQud3JpdGUodW5lc2NhcGUoXCIlM0NzY3JpcHQgc3JjPVwnXCIgKyBwa0Jhc2VVUkwgKyBcInBpd2lrLmpzXCcgdHlwZT1cJ3RleHQvamF2YXNjcmlwdFwnJTNFJTNDL3NjcmlwdCUzRVwiKSk7DQo8L3NjcmlwdD48c2NyaXB0IHR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIj4NCnRyeSB7DQp2YXIgcGl3aWtUcmFja2VyID0gUGl3aWsuZ2V0VHJhY2tlcihwa0Jhc2VVUkwgKyBcInBpd2lrLnBocFwiLCAxKTsNCnBpd2lrVHJhY2tlci50cmFja1BhZ2VWaWV3KCk7DQpwaXdpa1RyYWNrZXIuZW5hYmxlTGlua1RyYWNraW5nKCk7DQp9IGNhdGNoKCBlcnIgKSB7fQ0KPC9zY3JpcHQ+PG5vc2NyaXB0PjxwPjxpbWcgc3JjPVwiaHR0cDovL3N0YXRzLnBud3JhaW4uY29tL3Bpd2lrLnBocD9pZHNpdGU9MVwiIHN0eWxlPVwiYm9yZGVyOjBcIiBhbHQ9XCJcIiAvPjwvcD48L25vc2NyaXB0Pg0KPCEtLSBFbmQgUGl3aWsgVGFnIC0tPjwvbGk+PGxpPjxzdHJvbmc+d29vX2xvZ288L3N0cm9uZz4gLSAvYXNzZXRzL2ltYWdlcy9iZWNhdXNlSVNhaWRTby5wbmc8L2xpPjxsaT48c3Ryb25nPndvb19tYW51YWw8L3N0cm9uZz4gLSBodHRwOi8vd3d3Lndvb3RoZW1lcy5jb20vc3VwcG9ydC90aGVtZS1kb2N1bWVudGF0aW9uL21haW5zdHJlYW08L2xpPjxsaT48c3Ryb25nPndvb19uYXZfZXhjbHVkZTwvc3Ryb25nPiAtIDwvbGk+PGxpPjxzdHJvbmc+d29vX3Byb2ZpbGU8L3N0cm9uZz4gLSBodHRwOi8vaTMueXRpbWcuY29tL3ZpL3I5YWRpTU5aNEY0L2RlZmF1bHQuanBnPC9saT48bGk+PHN0cm9uZz53b29fcmVzaXplPC9zdHJvbmc+IC0gdHJ1ZTwvbGk+PGxpPjxzdHJvbmc+d29vX3Nob3J0bmFtZTwvc3Ryb25nPiAtIHdvbzwvbGk+PGxpPjxzdHJvbmc+d29vX3RoZW1lbmFtZTwvc3Ryb25nPiAtIE1haW5zdHJlYW08L2xpPjxsaT48c3Ryb25nPndvb190aHVtYl9oZWlnaHQ8L3N0cm9uZz4gLSAxMDA8L2xpPjxsaT48c3Ryb25nPndvb190aHVtYl93aWR0aDwvc3Ryb25nPiAtIDEwMDwvbGk+PGxpPjxzdHJvbmc+d29vX3R3aXR0ZXI8L3N0cm9uZz4gLSBzaW1iYXRlbWFuPC9saT48L3VsPg==