Monday Aug 10, 2009

ADO.Net Entity Framework on MySQL

Reggie Burnett, the lead behind MySQL Connector/NET, will be presenting a MySQL webinar, "For ISVs: ADO.NET Entity Framework for MySQL", tomorrow at 10 Pacific Time!

Among other topics, Reggie will discuss how to

  • Develop your application against SQL Server and then switch it to MySQL with zero code changes

  • Optimize your database schema without requiring any code changes in your application

  • Use LinQ syntax for type safety in your applications

(Interest in using MySQL on Windows is growing. The 2008 MySQL OEM Annual Survey, which closed in March 2009, shows that some 73% of MySQL OEM customers develop applications on Windows, and some 59% deploy these applications on Windows.)

If you're interested in Windows programming with MyQL, do not miss Reggie's other upcoming webinar for Sept. 15: "For ISVs: What's New in MySQL Connector/NET 6.1".

Thursday Jun 04, 2009

Raison d'être of JavaOne Conference

Elsewhere, I wrote about the Raison d'être of the JavaOne Conference.

Wednesday May 27, 2009

Haskell and Python

Luke Plant's short note ("Why learning Haskell/Python makes you a worse programmer") actually motivates the reader to learn more about Haskell and Python

Sunday May 10, 2009

Sun Contributor Agreement and MySQL

On my last count, there are now 20+ Sun Contributor Agreement (SCA) signatories whose names appear on the master list and who are interested in contributing to MySQL. Only this week, three new members signed the SCA.

These 22+ signatories have all been added since mid-February when we launched the new, Sun-compliant SCA signing process. Before the end of 2009, if we proceed at this same rate, MySQL SCA signatories list should grow to about 70 to 90 contributors.

In the meantime, contributions from many of these contributors have already been accepted and integrated. (I had earlier pointed to Armin Schöffmann's contribution as a simple example of how all this works.)

Some people continue to wonder why an SCA is required.

First of all, it is important to note that by signing the SCA the contributor retains copyrights while also granting those rights to Sun as the project sponsor. This granting is very specific to a particular code base and the community around it. (This is a code base that has been available under GPL.)

Second, as I have summarized, in a series of Golden Rules for Open Source Contribution-Based Communities, several important rules for such communities help it to operate well. As part of rule G, "Setting Expectations," I did mention how

2. Anticipating the future and related risk management helps all market participants to reduce transaction costs.

However, I failed to add that an important ingredient in that risk management is the management of ownership claims.

I believe this particular aspect of rule G, which is implicit there, and which perhaps needs to be made more explicit, explains clearly why something like an SCA is required in order to maintain a flow of contributions to MySQL in a form that allows clear code ownership. 

Note that other open-source communities, such as the Apache Software Foundation, also require their own contributor agreement. Often, these agreements are there to protect the maintainers of the project/product or the general integrity of the products' ownership.

BSD-based communities seem to avoid this need by posting various clear signs in various places -- in their member-initiation or commit e-mails -- that all contributions are made under BSD. However, these communities have remained somewhat fragmented due to the greater openness of BSD licenses. Don't get me wrong. I love BSD. Note that often, BSD contriutors would rather contribute to a BSD project. The whole objective of contributing to a BSD project is that you are building a based that can be used by anyone for open and closed business with that same base. This is very unique to BSD type or Apache type licenses and forms one of the main reasons contributors contribute to these projects.

So, let's now go beyond the question of SCA and see what else is going on.

The update and simplification of SCA submission process for MySQL, came along with equally important simplification of forge pages for contributors and with an effort to speed up the review of contributions and continuting with greater openness in MySQL development processes. [These apparently fragmented but hopefully useful (and ultimately coherent) steps have all been part of a larger initiative to facilitate openness, community participation and contributions. Again, please refer to the Golden Rules. Hopefully, you can faciliate and help the MySQL community to get more open and vibrant as an open-source community.]

It is important to note, here, that roots of this initiative go back to some years earlier. So, the initiative is related in part to a continuing series of efforts to make MySQL more open and more contributor friendly, including the famous "quality contribution program," which was originally launched by the MySQL community team. (In a sensem the "quality contribution program" has evolved into this simpler, more robust model and many of the lessons learned there have also been applied and used here.)

Under the SCA, contributors can contribute to all MySQL open-source products in open forums and issue tracking "systems"-- internals list, bug tracking system, worklog system. I put quotes around "systems" because there's more to be done to make these systmes work better together in a more open environment. Note that the MySQL team prefers to receive code contributions and bug fixes through the first two modes because those two modes (i.e., bugs db issue tracking and the internals mailing list) better afford two-way communications. Note, too, that contributions can be at the level of bug fixes or features.

Why would anyone contribute?

Well, there's a great deal of challenge to contribute anything to a software as sophisticated and complex as a database.

Besides the reputational effects, there's also this practical effect that once a contribution has been absorbed, the contributor will no longer have to worry about constant merges to get the effect he or she expects form MySQL.

Of course, there are many other reasons as well. For example, there are those who are just problem solvers, and find it exciting to contribute to MySQL. However, let me stop speculating on this any further. Instead, let me point you to an "internals" posting by Stefan Hinz, regarding a "MySQL University" session on replication features in 5.1 and 6.0.

Tuesday Apr 21, 2009

Portlanders Take the Realm

Last year, OSCON decided to move from its traditional venue in Portland.

Now, Portlanders, who identify their city as the real bastion of Open Source Software, have decided to establish OpenSourceBridge.ORG, a conference for Open Source citizens!

In July, where would you rather be?

Friday Apr 17, 2009

A BoF on Community Code Contributions to MySQL

The BoF schedule for MySQL Conference and Expo (2009) is now published. Lenz Grimmer, Sergei Golubchik, Tomas Ulin and myself will be available during a BoF which focuses on MySQL Community Code Contributions. Lenz will be moderating. For background material, you may start here.

Wednesday Apr 15, 2009

Developing with MySQL Connector/C++

Giri Mandalika has written an article showing how to develop C++ database applications for MySQL and another article showing how to install MySQL Connector/C++ from the source.

Tuesday Apr 14, 2009

MySQL Conference Notes

MySQL Conference 2009 is coming around the corner, next week, in Santa Clara.

You may want to delve into the notes, as a fast way to learn about the happenings.

If you want to become an active code contributor to MySQL, the hackfest by Mark Callaghan seems interesting, and you should probably also start here and here

There will also be a special BoF geared to community contributors. (I still haven't been able to find out about the exact timing of this but you should be able to find out if you're there. Once I learn about the exact time, I'll post it here.)

Thursday Feb 05, 2009

Golden Rules for Contribution-based Communities

There are some basic, golden rules when it comes to having a vibrant community of contributors.

The following are rules I have extracted and learned based on my experience managing and working with engineers actively involved and participating in the Apache/Derby, PostgreSQL and MySQL open-source communities. These rules are also based on extensive discussions with many folks involved with the MySQL community, with the PostgreSQL community and with the Apache/Derby (Java DB) community, over many years.

Before I go through these rules, I would like to thank Marten Mickos for having suggested some of the headings for these rules. (I originally had much longer headings for all of them.) I would also like to thank many of MySQL, PostgreSQL and Java DB colleagues, as well as to many other colleagues involved in open-source development, for having contributed to the ideas and practices behind these rules.

A) Transparency.
1.Often, this openness can span all the way from development (architectural specification, implementation design and planning, implementation, code review and walk-through) to testing, qualification and release.
2.It may be possible to move towards greater transparency over time but openness in development is often the minimum starting point. 

B) Dialog.
1.It should be possible to conduct open dialog and conversation regarding any aspect of the development (and other aspects of) work.
2.When mailing lists and other archive-able communication channels (such as wikis) focused on development work are opened up, it becomes easier to conduct open dialog and conversation regarding the development work. 
3.Of course, when a corporation or business concern contributes (either as a major contributor or a minor contributor) to the development of an open-source product, it is to be expected that some aspects of the development work (e.g. those related to specific customer needs) may remain obscure through mechanisms such as withholding of a customer's name. 

C) Pace.
1.It should be possible to track the fate of any contribution and have a public archive of the conversation conducted regarding that contribution—recording decisions made and various feedback loops in time for the purposes of learning and further work.
2.For this purpose, it is often sufficient to have a time record of the conversation conducted with respect to the given contribution.
3.These records can be searched to determine the fate of the contribution.
4.These records help provide a learning platform for the future contributors.

D) Setting Expectations.
1.Using available and open information, the contributor community should be able to form and entertain valid expectations regarding milestones, releases, timelines, etc.
2.Anticipating the future and related risk management helps all market participants to reduce transaction costs.

E) Small is Beautiful.
1.While it should be possible to absorb contribution of any size, emphasis should be put on  absorbing smaller and incremental contributions.
2.To create mass and momentum and community and quality, it helps to encourage smaller contributions.

F) Differences.
1.Not all contributions are equal.
Contributions are judged by whether they are well designed, fit into business roadmaps, are well documented, comply with standards, do not produce regressions in the code and improve performance.
2.Not all contributors are equal.
Contributors vary in expertise, skill and experience.
These variations give meaning to the practices and procedures of the contributor community.

G) Places.
1.It is clear where one needs to work.
There are enough branches or trees to serve distinctly different target groups.
2.Trees and branches are well-groomed.
Active code branches or trees are kept at a minimum set in order to keep the product roadmap and expectations coherent.

H) Parallelism.
1.Contributions are added in parallel with frequent synchronization so that community participants can respond to each others' work.Parallel work leads—naturally and out of brute necessity—to modularization, better and faster integration.

I) Incrementalism.
1.Work is conducted in increments.
2.Each contribution does one thing.
3.Each contribution has a test case that exercises it.

J) Learning.
1.Contributor community assets (channels of communications, forums, bug databases, etc.) are developed to improve learning by all participants and contributors.


I'd like to thank Brian Aker, Knut Anders Hatlen, Davi Arnaut, Kaj Arnö, Jorgen Austvik, Igor Babaev, Mark Callaghan, Peter Eisentraut, Sergei Golubchik, Shawn Green, Lenz Grimmer, Rick Hillegas, Stefan Hinz, Geir Hoydalsvik, Henrik Ingo, Alexey Kopytov, Mark Leith, Dmitry Lenev, Manyi Lu, Giuseppe Maxia, Paul McCullagh, Mårten Mickos, Chad Miller, Francois Orsini, Konstantin Osipov, Trudy Pelzer, Sergey Petrunia, Jay Pipes, Jeffrey Pugh, Ole Solberg, Georg Richter, Mikael Ronström, Kristian Waagan, Dag Wanvik, Monty Widenius, Jeff Wiss, and more.

Sunday Jan 25, 2009

Best Database Tool

Developer.Com has selected MySQL Workbench as the best database tool of 2009!

Competing behind Workbench were:

  • Altova DatabaseSpy® 2008
  • LINQ (Microsoft® .NET Language Integrated Query)
  • SQL Server® 2008 Reporting Services
  • Oracle SQL Developer

Sunday Jul 27, 2008

Randy Pausch (Oct. 23, 1960 - July 25, 2008)

Randy PauchThe Last Lecture, "Achieving Your Childhood Dreams":

Saturday Jul 19, 2008

ACM Queue Magazine

Craig Russell (of Sun Microsystems Inc.) has written the lead article of ACM Queue special issue on object relational mapping (ORM): "Bridging the Object-Relational Divide". The opening sentence provides the motivation most succinctly: "Modern applications are built using two very different technologies: object-oriented programming for business logic; and relational databases for data storage."

Thursday Jul 10, 2008

DTrace Envy

A colleague in our PostgreSQL team just pointed me to a "little" note on DTrace, which seems to be ignited by the work that Robert Lor and Jignesh Shah have been doing. (The PG presentation involving the Mac OS and DTrace is Robert's)

Tuesday Jul 08, 2008

Using Apache Derby / Java DB with Caroline

Here is another embedded use case for Java DB in a full Java environment: On Grid Derby-based Server. For more on Caroline, see here.

Monday Jun 02, 2008

Community Statistics for Netbeans Database Usage

"The database support in NetBeans allows users to connect to a database and view and modify the database structure and data. These graphs show which database servers users connect to most often."

Of particular note, besides the large usage of MySQL and Oracle, is the large usage of Java DB (Derby), and the significant PostgreSQL usage.

Wednesday May 07, 2008

The Self-Ordering Chaos of Communities

 In the chaos of their buzz and movement, bees build amazingly ordered nests for their young. 

So do many communities of practice.

Monday Feb 11, 2008

"Asset Specificity" and Open-Source Software

Despite some excellent coverage of issues related to transaction cost economics of Open Source Software in The Success of Open Source (Harvard University Press, p. 193, "Business Models and Law"), Steven Weber may have misapplied Oliver Williamson's concept of "asset specificity" as an attribute of transactions .

Weber seems to be saying that Open Source Software, by virtue of its openness, will reduce asset specificity for those (including enterprises) who consume or use software, releasing them from lock-in. While the effect might be true, the reasoning diverges from the original meaning of the concept of "asset specificity," as coined by Williamson.

In The Mechanisms of Governance (Oxford University Press, pp. 59-60), Williamson states that his concept of asset specificity refers to "the degree to which an asset can be redeployed to alternative uses and by alternative users without sacrifice of productive value."

To clarify matters further, Williamson notes that there are varieties of asset specificities, e.g. (1) site specificity, (2) physical asset specificity, (3) human asset specificity ("that arises in learning by doing fashion"), (4) dedicated assets, (5) brand-name capital, and (6) temporal specificity. 

Let me elucidate the concept by giving some examples.

If I use some assets, say my Prius, to drive to the local supermarket to buy oranges, I have not used any assets specific to the transaction of buying those oranges. The transaction is a fully market-driven transaction. I could buy the oranges from a large number of groceries that do business near where I live.

Now, assume I'm an orange broker in Florida. I may station my operations site near the largest orange groves or near the largest auction market for oranges. I may buy some forensic equipment specific to orange analysis, and pay for membership dues in the orange auction market, etc. I may spend money to brand my brokerage service, calling it "Honest Oranges." Now, I've invested in assets that have a higher degree of specificity (in site, in physical nature, in brand capital, etc.) in order to carry on with the transactions I conduct as an orange broker in Florida.

Now, let's turn from oranges to software.

When it comes to software, we can have some in-dept discussion of each of the specificity types mentioned by Williamson and see if there are others. For example, the Internet, the digitalization of storage, content and distribution, has almost done away with "site specificity." You can consume software made in city A even if you live 12 time zones away in city B. On the other hand, some software must still be installed in a particular way and on particular hardware, generating a "physical asset specificity" effect.

The most important kind of specificity when it comes to software, however, is "human asset specificity."

When an enterprise uses open-source software, they still have this aspect of specificity to deal with. For open-source software, as for any software, human specificity arises in learning by doing fashion. In fact, human asset specificity governs the software transactions world much more deeply than many other product types.

Unless there is a backing from a supplier that has reduced the need for investments with high degree of "human asset specificity," the user of the open-source software will have to make such investments on its own.

This is exactly the reason why we see great consulting, services and integration businesses thrive around open-source software products.

Tuesday Feb 05, 2008

PostgreSQL 8.3 is Released

Josh Berkus has just announced the release of PostgreSQL 8.3.

Bjorn Munch has posted a note on the release of the Solaris binaries for PostgreSQL 8.3 on the OpenSolaris database community discussion forum.

Munch also has a wiki entry that describes how to build PostgreSQL for youself. (Important note: As should be expected, Sun provides support only for PostgreSQL versions that it itself ships with Solaris. While this should be kept in mind, we also like developers to know how to build and develop PostgreSQL on Solaris. Hence the wiki entry!)

This, I believe, is the first time official Solaris binaries of a GA release of PostgreSQL become available also through

About this release, there has been a lot of commentary in the press and in blogsphere. These were forwarded by a colleague. I selected some of the news and blog items below, giving the relevant links:


If interested, you should also consult the official PostgreSQL 8.3 release announcement.

Finally, I would also recommend checking out Sun PostgreSQL web site and the OpenSolaris database community for discussion and other topics related to PostgreSQL and databases in general!


"Open Source PostgreSQL 8.3 Better Suited For Web Applications: New features include a full text search tool, improved overall throughput, and ANSI standard SQL/XML support ," InformationWeek, 2/7

Tuesday Jan 29, 2008

Next Generation Java Testing

At Java.Net, I have written a short review of a Java testing (TestNG) book.



« April 2014