MySQL

The world's most popular open source database

Contact a MySQL Representative


  • MySQL.com
  • Developer Zone
  • Partners & Solutions
  • Customer Login
  • DevZone
  • Downloads
  • Documentation
  • Articles
  • Forums
  • Bugs
  • Forge
  • Blogs
 
  • Pages

    • About me
    • Bio
    • Press Release: “Kaj Arnö Appointed MySQL VP of Community Relations”
  • Blogroll

    • Ein Finnlandschwede in Bayern
    • En finlandssvensk i Bayern
    • It’s some interesting topic
    • Kaj Arnö blog aggregation
    • No Software Patents!
    • Planet MySQL
  • Recent Posts

    • Berlin Open 09: Social Networking
    • Search the planetary archives, and tag your blog entries
    • SELECTing SELECT statements for Wordpress MU blogging statistics
    • How do MySQL users keep track of digital pictures?
    • Presenting and blogging in Chinese
    • On the Merits of Voting
    • The Future of MySQL
    • The Great Open Cloud Shootout: Videos and other links
    • Karen’s Commitments to the MySQL Community
    • What hasn’t changed with MySQL
    • Andy Bechtolsheim to Keynote MySQL Conference on Thursday
    • The Great Open Cloud Shootout
    • MySQL Campus Tour 2009 — aka Dups on Rails
    • MySQL & Google Summer of Code 2009 — time to get going!
    • Your chance to thank Monty at his farewell dinner tomorrow Friday
  • Tags

    Alexander Arnö Black Swan Blogging Blogs Brazil Business Model Call for Papers Call for Participation CfP Community Contributions David Axmark Dups Event scheduler Football FOSDEM Growth Innovation Ivan Nikitin Language Launch Mårten Mickos Michael "Monty" Widenius Mountains MySQL MySQL 5.1 MySQL AB MySQL Forge MySQL User Conference MySQL Users Conference Nassim Nicholas Taleb Open Source Oracle Paris Partitioning Photography Social Networking South Africa Sun Microsystems Sun Tech Days Thank you Travel Use case Web 2.0 Wordpress
  • Archives



  • Categories

    • Architecture of Participation
    • Connectors
    • Documentation
    • Events
    • Falcon
    • GPL
    • GUI
    • Licensing
    • MySQL
    • MySQL Cluster
    • MySQL Proxy
    • MySQL Server
    • MySQL Users Conferences
    • MySQL Workbench
    • Photography
    • PHP
    • Release Policy
    • Ruby on Rails
    • Running
    • Summer of Code
    • Sun
    • Sun visits
    • Travel
    • Use cases
    • Virtual company
  • Calendar

    July 2009
    M T W T F S S
    « Jun    
     12345
    6789101112
    13141516171819
    20212223242526
    2728293031  
Observations by Kaj Arnö @Sun

Archive for the ‘Documentation’ Category

Recommended Reading (Business, Engineering)

Monday, October 20th, 2008

Kaj's Book Recommendations
As part of an internal programme at Sun, I am a “SEED mentor” for another Sun employee (not a former employee of MySQL, but what we Sun Dolphins call Sun Classics). He is called Alok and lives in Bangalore, and sadly, our schedules crossed so that I couldn’t meet him when I was at our Bangalore offices in July. So I am mentoring someone I’ve met only over phone — but we’re getting along just fine.

Two of the topics we’ve discussed recently are blogging and books. So after hanging up after our 9 CET 12:30 Indian time mentoring session, I got the idea to combine the two: write a blog entry about the books I recommended Alok.

One thing Alok is contemplating at the moment is the degree to which he should spend time on developing his business skills vs his engineering skills. That’s a familiar topic for many of us in Engineering.

So what I ended up doing was to list some of the top books I’ve read and used over the years. Not just the freshest and most recent ones, but the ones I remember and go back to, even over a decade after I read them. And they have a strong engineering slant to it — the general business books are missing from this list.

Steve McConnell books

Steve McConnell: I started my list by three classics by Steve McConnell, published within Microsoft Press. (The “Microsoft Press” label may be surprising, as these books are truly timeless, as opposed to providing ideas that expire with the next file format change of Microsoft Word). These books are:

  1. Code Complete, a Practical Handbook of Software Construction, 1993 (see Code Complete Home, Wikipedia). “Welcome to Software Construction”, “Characteristics of High-Quality Routines”, “General Issues in Using Variables”, “Code-Tuning Strategies” are some chapters in it. Very enjoyable, enlightening reading. I read it about 1995 and have been recommending it since. I managed to convince MySQL co-founder Monty to read it in 1995, and have been debating minute points of the book with him from time to time since then.
  2. Rapid Development, Taming Wild Software Schedules, 1996 (see Steve McConnell’s Home Page). Some chapters: “Classic Mistakes”, “Software-Development Fundamentals”, “Lifecycle Planning”, “Estimation”, “Motivation”, “Teamwork”, “Feature-Set Control”. Same style as Code Complete, and as good. I read it in 1996, and have used its arguments to punctuate wishful thinking by customers and colleagues of the “pointy-haired boss” category ever since. In fact, I should probably have done more of it.
  3. Software Project Survival Guide, How to Be Sure Your First Important Project Isn’t Your Last, 1998: “The Successful Project at a Glance”, “Hitting a Moving Target”, “Quality Assurance”, “Software Release”. Good, and a quick read after the previous two books, which still are the ones which stick to my mind as providing the most meat.

Steve Maguire: There is another Steve who wrote books with Microsoft Press, in fact of a very similar nature. The topic of software engineering management is so important that I am happy recommending the two additional books to Alik. When Maguire wrote these books, at least I was spending much more of my time using Microsoft products than today, and the lessons he writes about are (as I see it) relevant also in Open Source.

  1. Writing Solid Code, Microsoft’s Techniques for Developing Bug-Free C Programs, 1993: “Assert Yourself”, “Step Through Your Code”, “Risky Business”, “The Rest Is Attitude”. This is C specific, for good and for bad, compared to the language-unspecific Code Complete.
  2. Debugging the Development Process, Practical Strategies for Staying Focused, Hitting Ship Dates, and Building Solid Teams, 1994: “Laying the Groundwork”, “The Systematic Approach”, “Scheduling Madness”, “Constant, Unceasing Improvement”, “That Sinking Feeling”. The preface starts with the sentence “This book might make Microsoft sound bad.” which to me displays an attitude that I like, because we all know we make mistakes and pretending not to do so is not getting us anywhere — whereas learning from other people’s mistakes may do so.

CMM & Scrum books

A few other Software Engineering reference books: I also want to list three other books on IT for Alok.

  1. A Discipline for Software Engineering, Watts S. Humphrey, 1995. This was recommended to me after I read the McConnell books. “The Personal Software Process Strategy”, “Why Forms Are Helpful”, “Why Make Plans”, “Measuring Software Size”, “Popular Estimating Methods”, “Design and Code Reviews”.
  2. The Capability Maturity Model, Guidelines for Improving the Software Process, Carnegie Mellon University, Software Engineering Institute, 1995.”Introducing Software Process Maturity”, “Customer Satisfaction”, “Skipping Maturity Levels”. Introduces CMM and its five maturity levels of Heroics, Repeatable, Defined, Managed and Optimizing. I wish MySQL were more mature and less heroic.
  3. Agile Project Management with Scrum, Ken Schwaber, 2003. Yes, I have bought new books this century. “Scrum Roles”, “Scrum Flow”, “Product Backlog”, “Sprint Backlog”, “Bringing Order From Chaos”, “Project Reporting — Keeping Everything Visible”. We try to apply Scrum for MySQL, but due to our virtual nature and to the timezones, we need to apply it a bit.

NNT & Freed books

Nassim Nicholas Taleb: Next, I took the step towards business through the more philosophical. I read both NNT books this summer, and I found them very inspiring and insightful.

  1. Fooled by Randomness, The Hidden Role of Chance in Life and in the Markets, 2004 (see NNT’s homepage, Wikipedia): “If You’re So Rich, Why Aren’t You So Smart?”, “Europlayboy Mathematics”, “Wittgenstein’s Ruler”. NNT has a somewhat peculiar writing style (mixing facts, opinion and personal anecdotes), but he clearly explains that random events influence us more than we believe, and what we should do about it. Winners tend to attribute their winning to being smart and hard-working, losers attribute their losing to bad luck.
  2. The Black Swan, The Impact of the Highly Improbable, 2007 (see Wikipedia on the Black Swan book and the Black swan theory). “Umberto Eco’s Antilibrary”, “How Not To Be A Sucker”, “The Narrative Fallacy”, “What Do You Do If You Cannot Predict”. About why we don’t know so much about the future, and why it’s dangerous to pretend that we do, and what we should do instead. One of the best books I’ve read this century. Especially now in the financial crisis, there is plenty of material on the book and NNT’s thinking, on Wikipedia, on NNT’s own website and elsewhere.

Just One (Semi-) Business Book: I wanted to concentrate my advice to Alok on engineering and engineering management, but there’s one book that describes the borderline from engineering to sales very well:

  1. Writing Winning Business Proposals, Your Guide To Landing the Client, Making the Sale, Persuading the Boss, Richard C. Freed, Shervin Freed, Joe Romano, 1995. “The Slots in a Proposal’s Generic Structure”, “Desired Results, Benefits, and Objectives”, “The Four Buying Roles”, “Determining What to Weave in Your Web of Persuasion”. Very self descriptive book title, and it contains great advice about persuading both clients and bosses, in writing.

GTD (TM) & PhotoReading (TM) books

Meta-books on self management: At this point, I started to have a bad conscience towards Alok. Hey, already eleven books in my recommendation list. How is he ever going to have the time to read them, and to get any real work done at the same time? Thus, I decided to address those issues one at a time.

  1. The PhotoReading Whole Mind System, Paul R. Scheele, 1993. “Read this easy-toread book and all books will be easy to read”, “5 breakthrough steps for improved comprehension and retention”, “The secrets to PhotoReading at 25,000 words per minute”, “5 time management strategies for instant results”. I still re-read (ehh, re-glance) the book at times, and have recommended it to many people, the latest one being my son.
  2. Getting Things Done, The Art of Stress-Free Productivity, David Allen, 2001. It’s about getting peace of mind to concentrate on what you (through your systematic pre-planning) know is the most important thing. It has plenty of associated GTD services and software; personally, I’m just using Omni Outliner and my Thunderbird inbox. But then again, I’m rereading this book just now.

To round it off, I wanted to provide Alok with an entertaining book, without too much of an emphasis on usefulness, but still some practical usability. In that category of books, I try to avoid English books, in favour of Swedish and German (as I tend to get more than my fair share of reading in English anyway), so I’m limited to a fraction of the books I would want to recommend. My choice ends up in a book recommended to me by Simon Phipps:

  1. The Curious Incident of the Dog in the Night-Time, Mark Haddon, 2003. Wikipedia says “The story is written in the first-person perspective of Christopher John Francis Boone, a 15-year-old autistic boy living in Swindon, Wiltshire. Although Christopher’s condition within the autism spectrum is not stated explicitly within the novel, the summary on the book’s inside cover describes it as Asperger syndrome.” And while that doesn’t sound entertaining, it is. It is both sad and fun, and I tend to believe Simon’s claim that it “helps understand Open Source developers”.

So, Alok, happy reading! I hope I haven’t inundated you with much too long a list of Recommended Reading.

Posted in Documentation, Sun, Virtual company | 1 Comment »

Navigating categories within my blog

Saturday, December 15th, 2007

With 130 entries in the “MySQL” category and no MySQL-related subcategories, my blog had become impossible to search and navigate easily.

And thus I created a number of new categories for the MySQL entries within my blog. They’re listed in the left navigation bar, below the months, as well as below:

  • MySQL Server, MySQL Cluster, Falcon
  • Connectors: PHP, Ruby on Rails
  • Tools: GUI, MySQL Workbench, MySQL Proxy
  • Events: MySQL Users Conferences
  • Licensing: GPL
  • Architecture of Participation, Summer of Code, Virtual company
  • Other: Release Policy, Documentation, Use cases

I hope this will make my blog more (re)usable.

(The picture is from this summer, when navigating the way up the Großvenediger, a 3662 m high mountain in the Hohe Tauern region of Austria.)

Posted in Architecture of Participation, Connectors, Documentation, Events, Falcon, GPL, GUI, Licensing, MySQL, MySQL Cluster, MySQL Proxy, MySQL Server, MySQL Users Conferences, MySQL Workbench, PHP, Release Policy, Ruby on Rails, Summer of Code, Use cases, Virtual company | No Comments »

Documentation: MySQL Server Version Reference

Thursday, December 13th, 2007

Stefan Hinz, MySQL’s Docs Team Lead, just showed me the new restructured documentation overview page http://dev.mysql.com/doc/. The intention of the restructuring is to make it easier for you to find the information you need.


We’ve amended the MySQL Reference Manual section with a subsection labeled “Excerpts from the Reference Manual“, examples of which are a standalone Connectors book (covering all MySQL connectors and APIs) and guides for each individual MySQL Connector.

The key new document there is the “MySQL Server Version Reference” that should make life easier for everyone who needs cross-version information. It’s available for download but you can also browse it online at http://dev.mysql.com/doc/mysqld-version-reference/en/.

Here’s an overview of the MySQL Server Version Reference document:

  1. The mysqld Options/Variables Reference contains all MySQL server options and variables for all MySQL versions. You can easily find out whether or not a particular option is available in a specific MySQL version, when it was introduced or deprecated, and more. For variables, that chapter gives a quick overview of core properties, such as if it’s a status or a server system variable, if I can be changed dynamically, or if the scope is global or local.
  2. The Reserved Words list contains all words reserved in a particular MySQL (major) version, with annotations about minor versions. The list is created by running a script against all MySQL versions starting from 4.1.0. (Yes, our Docs Team has installed all MySQL versions on their documentation machine!)
  3. The Functions and Operators chapter shows which MySQL functions are available in which version, and when they were introduced or deprecated.
  4. The Build (configure) Options chapter should be useful for anyone building MySQL from source.
  5. Eventually, the Key changes in MySQL releases chapter lists security fixes and incompatible changes for the GA versions of MySQL 4.1 and 5.0 and for the beta and RC versions of MySQL 5.1.

The Server Version Reference is not a static document but is being recreated on a regular basis.

Kudos go to Martin C. Brown who created all this. We hope it will make your work with MySQL more productive and enjoyable!

References:

  • Improved MySQL Documentation overview page http://dev.mysql.com/doc/
  • New MySQL Server Version Reference document: http://dev.mysql.com/doc/mysqld-version-reference/en/

Posted in Documentation, MySQL, MySQL Server | No Comments »

Release Criteria: Aligning official documentation with reality

Saturday, November 10th, 2007

First of all: Thank you for your positive feedback on the MySQL 5.1 Errata Sheet!

While I never doubted that publishing the 5.1 Errata Sheet was the right thing to do, I had expected a more mixed feedback. It turned out the feedback was very grateful. So thank you for your encouragement

  • Kevin Burton for commenting in Jay’s blog

    “This was a big win guys. Good work.We were going to deploy 5.1.x in out or production slave configurations just to test the reliability but this give us a lot more confidence in this release.”

  • Baron Schwartz for commenting in my blog

    “Kaj, this is VERY helpful. I just discovered the character set issue with mysqldump myself last week.This is a big step forward in quality, from the user’s point of view. Now it’s much easier to see the state of things.”

  • Peter Zaitsev for explaining some background in the blog entry “Making bugs public - good job MySQL”

The Errata Sheet had somewhat of a difficult birth process, as our pompously titled “Release Philosophy” page optimistically refers to the ideal situation of “no known critical bugs”. If we follow that policy, there is no need for an errata sheet, is there? The Errata Sheet should by definition be empty.

But it isn’t.

And it wouldn’t have been, for the last four years, had we just had sufficient awareness of critical bugs, and a policy of publishing them.

The only logical conclusion from our Reality Check was that wishful thinking must stop, and we need to do the right thing under the circumstances: Get the best possible quality releases out with the given resources, and set the expectations of our customers and users according to what we can and will deliver.

And hence we appointed a cross-team working group, the “Release Criteria Committee“, which is defining both external and internal processes and policies when it comes to

  • releasing new releases in general
  • moving from one maturity stage to another
  • dealing with bugs of all kinds
  • aligning MySQL release policy documentation with reality

So let’s first look at the circumstances:

  • Resources are finite: There is only so much time in a day, and there are only so many developers around to fix bugs.
  • Timely releases have value to our users: Earlier access to bug fixes. Earlier access to new features. Earlier testing of both, i.e. faster convergence. Reduced guesswork about when the next release will be.
  • Zero critical bugs is impossible: Sure, zero bugs is desirable. And at times, we internally glorify MySQL’s past, with “production level alpha releases”. Those were the days, but those days also had less complex and less interwoven features, and fewer developers to manage.

As such, it is MySQL’s responsibility to create a release policy that is aligned with the needs of the customers and the user base. This will involve a number of difficult judgement calls. However, we do think that we’ve got a lot to learn from our customers and users, when it comes to defining the best possible release criteria. So I am inviting your input.

To structure your thinking and the work, let me briefly explain some basics:

1. We have four maturity levels: Alpha, Beta, RC and GA.
1a. Alpha is for testing and development only. Features are added, and
syntax may change. (*)
1b. Beta means feature-freeze. We fix bugs. (*)
1c. RC or Release Candidate needs solid criteria. RC has some industry definitions, and is the final stage prior to GA.
1d. GA or General Availability means the version is for production use. The name GA is somewhat silly for Open Source products, as even alpha releases are available for the general public.
(*) These are my own simplifications, and our work group may refine them.

2. Bugs are described by their Severity, Defect Classification, Impact, Risk To Fix, and Effort. They may have even more dimensions.
2a. Severity describes the damage from the original user (bug reporter) point of view. The most severe bugs are about crashes, security problems and corruption, without any known workaround. The least severe refer to unpleasant but documented behaviour, i.e. feature requests. From the severity of the individual original reporter, we derive the Defect Classification, which attempts at being a neutral classification across our user base.
2b. Impact refers to how many users may be affected. They range from
the entire user base, all the way to corner cases that affect only users of a particular feature on one platform.
2c. Risk To Fix and Effort refer to the difficulty of fixing the bug. A bug fix may destabilise the code (i.e. introduce more problems than it fixes), requiring postponing the fix to a later version. And the time for fixing the bug may vary (influencing the complexity of reviews).

Some of my personal thinking on the release policy is as follows:

(i) Maturity changes need quality criteria.

  • Progressing from Alpha to Beta is not useful if most testers find the same elementary critical bugs; basic usability should exist
  • Progressing from Beta to RC needs for the impact of critical bugs to be very low
  • Progressing from RC to GA needs the impact of critical bugs to be even lower
  • Hence, I advocate quality based (not time based) release criteria for maturity changes

(ii) New releases within the same maturity level need different quality criteria (from above).

  • Regression bugs must be avoided (what worked in release n must still work in release n+1) (**)
  • Beyond that, we mainly need for the quality of release n+1 to be higher than that of release n. In practice, if you look at today’s (10 Nov 2007) version of the Errata Sheet, you will see a lot of bugs annotated with “Already fixed in 5.1.23″, while others have “Target fix: 5.1.23″. “Let’s not wait until we can cure all illnesses, before handing out the medicine we already have!” is my logic.
  • Hence, I advocate mostly time based (seldom quality based) release criteria for new releases within the same maturity level
  • (**) By “regression bugs” I mean unintentionally changed behaviour, i.e. pure bugs. There may be situations where behaviour has to be consciously changed to enable the fixing of a bug.

(iii) Simplicity rules.

  • The definitions of the dimensions that describe bugs must be as simple as possible.
  • The rules triggering maturity changes must be as simple as possible.
  • It should be easy at any point in time for us to evaluate whether we should change a maturity level (as opposed to being a negotiation between self-proclaimed advocates of quality and timeliness, respectively)

(iv) Timeliness has a value, and RC criteria may differ from GA criteria.

  • Some claim that by definition, an RC must fulfill all GA criteria except the exposure to wide user base testing
  • Others (like me) think that it’s in the best interest of the user base to converge to a GA quicker, through marginally relaxed RC criteria, whereby we can fix the remaining less-critical bugs in parallel with the RC getting exposed to massive parallel testing by the user base

When we (the members of our Release Criteria Committee) think we’re done, we’ll upgrade our Release Policy (and, while we’re at it, no longer pompously describe it as a Philosophy). We’re working at a fairly hectic pace, and expect to be done within weeks rather than months.

In the meantime, your input is welcome!

Posted in Documentation, MySQL, Release Policy | 3 Comments »

MySQL 5.1 errata sheet

Saturday, October 20th, 2007

As indicated last week, we have decided to start producing a condensed report of outstanding issues in our current development release, MySQL 5.1.

This list is now available as part of our reference manual at dev.mysql.com/doc/refman/5.1/en/open-bugs.html.

The list is updated daily based on the then-current status in our bug database.

The purpose of the list is to make it possible for our users to more easily make an informed judgement about whether our development release is ready for them to test and use. While the corresponding bugs have already been openly and publicly available for searching in our bug database, I hope this list is easier to navigate, as it is compiled into one web page that is sorted into categories such as

  • C API
  • Client
  • Connector/J
  • Server: Backup
  • Server: Charsets
  • Server: Cluster
  • Server: Events
  • Server: I_S (Information Schema)
  • Server: InnoDB
  • Server: Partition
  • Server: RBR (Row-based replication)
  • Server: Replication

Hence, if you’re into using Row-based replication, read through the corresponding section. Our goal is to make it easy for you to know whether any of the outstanding bugs are relevant for you.

The list also contains target fix releases (with 5.1.23 currently being the next one), and links directly into the bugs system for detailed inspection of the bug description.

Posted in Documentation, MySQL, MySQL Server, Release Policy | 1 Comment »

Observations by Kaj Arnö @Sun is proudly powered by WordPress MU running on Blogs.mysql.com.
Entries (RSS) and Comments (RSS).