Posted
by
kdawson
on Tuesday July 10, 2007 @01:41PM
from the could-take-a-while dept.

kripkenstein writes "Canonical, the corporation behind Ubuntu, has begun to open-source Launchpad. Canonical has been criticized for not doing so earlier. The first component of Launchpad to be open-sourced is Storm, described as an 'object-relational mapper for Python.' A tutorial with many examples is available. The license for Storm is the LGPL 2.1. Inspection of the source files shows they contain the common phrase, 'either version 2.1 of the License, or (at your option) any later version,' meaning that Storm is LGPLv3-compatible."

Canonical, the corporation behind Ubuntu, has begun to open-source Launchpad. Canonical has been criticized for not doing so earlier.

I wish people would relax and remember that everyone has the choice to release their software under whatever license they deem acceptable.

Now, you might be wondering why anyone would open source anything at all. And my simple answer to that is this: Prior to today, if someone said 'Launchpad' to me, it would be the Ducktales character. As soon as this application is open source, it's going to become something I installed on my box and played around with for a while. And that's the difference, if it's proprietary, you better be prepared to sell it or it's going to die a death of obscurity without anyone even hearing about it.

People have the choice not to open source software and oftentimes, it's for very good reasons. I don't think this case is any different as the Wikipedia article states:

Mark Shuttleworth responded personally to this criticism stating that Launchpad needs paid-programmers to continue the development of the Launchpad platform and that there would be no point in developing multiple versions of Launchpad due to the probable incomparability of the forks [2].

Mod me as flamebait if you want but the original creators deciding that they value the quality or single source of code is just as valid as any other for delaying a release under an open source license.

Canonical isn't stupid and, yes, they're making money. According to Wikipedia [wikipedia.org], their 50 person company has an annual revenue of $10 million. Which isn't too shabby. I think these guys are genuinely interested in being both an active member of the open source (Ubunutu) and commercial (Project Landscape) worlds. Isn't it obvious who their thinking of when they put:

'either version 2.1 of the License, or (at your option) any later version,'

which is pretty much proof that they have companies in mind who refuse to proceed to GPLv3 (like Microsoft and the cadre of companies that have paid them for software patent protection). You can paint this move as evil, brilliant, successful, intelligent or any of all of them. To me, I trust these guys as Ubuntu has made open source a little more accessible to the world and I really believe that not only do they know what they're doing but they're going to be around for a while. That's good news for software and (at least in my opinion) therefor good news for everyone.

As soon as this application is open source, it's going to become something I installed on my box and played around with for a while.

I don't think you understand what Launchpad is.

Part of the reason Canonical was in no hurry to ready Launchpad for open source was that it wasn't really meant to be hosted on a variety of different servers or instanced for each project, like Trac; it's a centralized system designed to host many projects concurrently, like SourceForge. In short, there was only supposed to be one Launchpad.

The fact that people wanted Launchpad open source to host their own projects meant that Canonical first had to design standards for communication between different instances of the software. This should allow you to, say, host your own project on your own Launchpad, but still have bug reports communicated automatically with Ubuntu.

I think they wanted Launchpad as their "money maker" the end product would be Open Source, but they would own the project building system as it represents THEIR work structure. Like how Sourceforge does things only more focused. They've been squeezed by the FSF to open it up.. the FSF even created a non-launchpad based distro GNUsense. Over all, I think they didn't really make as much money as they thought they would being the sole gatekeeper and to leave it competing against the other project tools that a

Having the choice of GPLv3 is fairly close to being pointless, the GPLv3 is designed to plug loopholes but if a company wants that can just go with the GPLv2 without the restrictions.
With that said I doubt Launchpad is going to be running on a TIVO any time soon.
The possibility of patents does exist, since a company could take launchpad and code patented stuff into their fork of launchpad, then charge for it and sue anyone who uses the opensource product without a licence.
Having the GPLv3 option does

revenue isn't profit. Sure they are generating quite a bit of revenue for the relatively small staff, but there's no indication of what their operational cost is. Considering they do stuff like mailing out free CDs to anyone that requests it and likely many other nice gestures for the community, their operational cost is probably also high.

Having said that, I do sincerely hope they are and can remain in the black.

And that's also an unsourced statement in that wikipedia page... have a look at the source of the page, there's a comment basically saying "I think I read this in an interview somewhere that this is how much it costs to run", which is a rather shaky basis to assert revenue from!

"if it's proprietary, you better be prepared to sell it or it's going to die a death of obscurity without anyone even hearing about it."Eventually yes but making it open source will not make insure that will not happen.There are probably billions of lines of proprietary software out there. A lot of it was written to do one specific job. Not everybody is going to take the time to release code as FOSS because it takes a lot of work to release code as FOSS and to manage the project.

After having used Object-Relational Mapping in Java for a little bit, I really think that it should be adopted more widely. Prior to using Hibernate in Java, I stood by the notion that CUD operations in the database should strictly be done in stored procedures. This notion seems to be going away, not just for myself but in the industry as a whole.
-Wes

ORM is great!... until you you have a couple hundred thousand rows. Then it's slow.... until you have a couple million rows. Then it's unbearable.

I love ORM for smaller applications, but there's always a point where heading down the hall to say "hi" to the local DBA is a good idea. And beware, redesigning the DB from the ORM to your own schema can be extremely painful. How close the ORM schema is to "pleasant" depends highly upon the package you use.

This is from someone who is trying to perform queries on someone else's database designed with Hibernate. One that has 12 million rows (average row size, 9KB). Which has been running my simple query for 40 minutes.

terrabytes of data here. Works pretty good. Where's the problem exactly? In most scenarios, it will be doing the exact same query anyway (not a billion ways of doing CRUD for example, and most data mining operations should be done on an OLAP system anyway, so....)

> ORM is great!... until you you have a couple hundred thousand rows. Then it's slow.... until you have a couple million rows. Then it's unbearable.

> This is from someone who is trying to perform queries on someone else's database designed with Hibernate. One that has 12 million rows (average row size, 9KB). Which has been running my simple query for 40 minutes.

Don't get me wrong, bad database design is bad database design whether it is ORM or any other technology. Something tells me that based on the average row size of 9KB, I'm thinking this table does not really follow good relational design principles (1st normal form, I'm guessing). I've had a project where the data grew quite quickly, quicker than we had anticipated and the database needed optimized. Fortunately, since we were using Spring backed with Hibernate, we had interfaces defined for all of our persistent objects. Our solution was to use iBATIS to get some more granularity with our database queries, build some stored procedures (so that the query plan would be compiled) and add an index or two. The iBATIS classes were retro-fitted to implement the interfaces for the hibernate objects and then all we had to do was tell Spring to use the iBATIS objects rather than the Hibernate objects. Surprisingly, all of the unit tests passed and post-install, we increased our performance quite drastically. The whole project went as smooth as you could hope and I was pleasantly surprised because I really didn't think it would work out. I've been a fan-boy ever since. I still start with hibernate because it does help cut-down the design time, and I believe that "premature optimization is the root of all evil" (Knuth)
-Wes

That aside, ORM alone won't make anyone a great programmer. It's a tool that does a lot of boring stuff so the man that operates the keyboard doesn't have to; it won't cure cancer and bring world peace just because you.select('world_peace') instead of SELECT world_peace.

If you work with complete idiots using an ORM might cause problems similar to your example, but I wouldn't count on those same idiots to write efficient SQL and manage caching and connection pooling either.

My personal feelings is that an ORM makes the easy stuff easier and the difficult more difficult. Dealing with aggregate queries, complex joins and huge datasets requires a good knowledge of the ORM and how it generates SQL. If you're used to having direct access to the DB, getting the ORM to do the proper magic can be frustrating.This code you posted, though, would be bad regardless of using an ORM or not. I've seen the same thing using regular SQL to grab all the rows and then filtering them out in a c

Decent ORMs do nothing but map object operations into SQL statements. SQL from an ORM tool is not going to magically work more faster or slower than a hand-written one.

As I understand it, a procedure in an application making a series of SQL calls to a database to achieve some result may in certain circumstances be much slower than a a single SQL call to the database which executes a stored procedure which does all the work.

But I don't think the size of the database (or table, which seems to be the real issu

I don't know about these, but the more advanced ORMs out there will take multiple operations in a batch, parse them, optimize them, then make a single SQL query (or at least, as few as possible), and send that in one shot. Or at least, have the option to do so, so its rarely a problem.
The one thing that tends to cause issues, are very specific things like query planner hints, but some ORMs even support those. But for the 3 queries in a 5000 tables with replication system you have that require such things,

Correct Usage: Human writes SQL schema, then integrates the ORM. As long as human doesn't do silly things in the programming language, we have success. Database objects become much easier to use, and speed is fast.

I generally use autogenerated schemas (with manually-added indexes and advanced integrity checks) when I'm using Hibernate. I don't remember the time when Hibernate offered bad schema. Usually mapping from object structure to SQL DDL is very simple (you map objects as tables, one-to-many relations as backpointers, etc.).

> After having used Object-Relational Mapping in Java for a little bit, I really think that it should be adopted more widely.

In Python, it already is. I'll be amazed if Storm is even nearly as good as SQLAlchemy. My guess is it's closer to SQLObject, and even SQLObject has had many years to shake out any issues it has. Unless Storm is radically different, it's just another Not Invented Here framework of dubious utility.

ORMs are all right, but I wish I could express relations more succinctly in the lan

The reason they don't opensource it because there should only be one Launchpad, or you get all kinds of complex problems that are totally unnecessary. The point of Launchpad is to have a central system to manage things. Why do you need your own Launchpad, when it's better for it to be centralized?

Enlighten me (because I really don't know): Launchpad sounds like another version of Sourceforge. If it is, then why would they start another SF and say it has the be the "central" system to manage things?

Launchpad is a bug tracker, with some project management features. The bug tracker in Sourceforge is easily its worst feature, and it has zero project management facilities (at least not in the free version).

Seems as if you did _not read the launchpad about page. Launchpad tracks bugs (and specs and similar) with the ability to sync between all projects that joined launchpad. So if I find a bug in some package in Ubuntu, and the upstream of this package also uses launchpad, the upstream is notified directly. For example. It also provides translations services... ah, read for yourself.

And therefore in their minds it gives Ubuntu as a community an advantage over the other distros.
Of course, the basic response is that to make a distro genuine free software the software used to produced it should be free as well...

Uh, releasing a component used by Launchpad does not mean releasing the whole thing, now does it? I doubt Launchpad will become OSS, it would go completely against what I understand Canonical's mission to be.

Mark Shuttleworth says:
We are steadily releasing pieces of Launchpad, but the whole thing still has proprietary elements. We offer services to people who make Ubuntu derivatives using it, and that revenue stream is important. You can get all your data out easily (and this will soon get even easier to automate) so you're not locked in. In time, LP will all be published under a free software license, but for now it is not.

Reading the Storm tutorial, I wonder why SQL statements are needed to create tables, while the Python data classes already contain all the needed information. In SQLAlchemy, you define the schema in Python, at which point the SQL create statements are generated for you and the data classes automatically have attributes corresponding to the columns of the table.While you could argue about what the best place is to define the structure of the data, I think it is always desirable to have the structure defined

That is true. It is really easy for the newbies, because you can really just go there and submit a bug report and "they" will find out who is responsible for the problem and provide them a detailed bug report so the problem can be fixed.