Archive for the ‘OS’ Category
One of the good things – of a few – of my tenure at the CLR team was being exposed to the metal. One of my interest areas was the loader, PM’ed by one of the most arrogant person I’ve ever met. Fortunately the senior dev in charge of it is an awesome person, and helped me with some explorations I was doing on my own, which I’ve blogged before. At that time, pre nuget, I pitched an idea to the asp.net leadership team of using runtime packages, similar to win8′s deployment system and OSGi. The idea gained some traction, but in order to have a composable framework many things would have to change, starting with asp.net mvc. A very charismatic and public known person whom should remain unnamed blocked the effort saying “no customers were asking for this”. Faulty logic since no customers were asking for cars, for iPads, for .net… Not to mention the “if-I-don’t-understand-it-must-be-a-hack” person, still in that team. So they settle for a simpler solution: Nuget.
Anyway, left MS but the lack of a framework that enforced a stronger modularity was an itchy to be scratched. In the end, the ultimate experience I wanted is to have an app shell that can be composed in runtime with additional functionality, in any level of granularity. To some extend, VS is like that. It’s a dumb shell, and the functionality we all know and enjoy is delivered through “packages”. Those themselves can be composed to augment in features and additional support plugins and vsix extensions (although it’s composed through COM aggregates, which is just sad)
However, Eclipse is far ahead by combining physical packages with isolated scoped: enters OSGi. In OSGi a bundle is a unit of deployment, versioning and execution. In contain all the artifacts required to its execution, including a declaration of its external world dependencies. In runtime, a class loader trick is used to load a bundle in an isolated context, so if you load a bundle that say, uses nhibernate 3.1, it won’t interfere with another loaded bundle that is using nhibernate 3.3. (no jar hell, and no remoting). This problem is also known to .net folks. Clashing of dependencies requires either recompilation of many dependencies or assembly binding redirects. Not fun!
Castle Extensibility aims to solve exactly this problem. Since it’s a complex space, I dont think I can fully explain how to use it or how it works in a single brief blog post. So I’ll save more details for later. It’s worth mentioning that MonoRail 3 is integrated with it, so it’s able to run several “copies” of itself in the same app domain, hosting then many isolated applications in a single web site. Also worth mentioned it’s being used on the stuff I’m working on.
Oh, and obviously it was built in F# :-)
Very interesting argument, especially the last sentence “By selling commercial licenses, we are able to staff a dedicated development team to ensure continued progress, quality enhancements and first-class technical support for developers using Ext products.”
Seems to go against the usual mindset of users that want everything for free, like using an OSS project was a favor to the creator.
I don’t know how much of this is true, but it’s definitely very compelling.
I just bumped into this
“Our customers, as well as the 750 organizations that downloaded our beta have spoken loud and clear: they want an open source, royalty free framework and engine that allows them to fully exploit the collaborative nature of the community and that does not lock them into a proprietary runtime,” said Byron Matheson, CEO of ClearNova. “We are confident that releasing the ThinkCAP JX framework as an open-source product will provide customers with the ability to realize the power of AJAX-enabled web applications as a better alternative to traditional client server business programs, while greatly accelerating adoption of ThinkCAP as the gold-standard for RAD platforms.”
Contrasting with Microsoft camp is quite disturbing. I can even imagine a similar statement from Scott Guthrie
“Our customers can’t and will not rely on something created collaboratively by the open source community. They need us to deliver something similar. Maybe better, possibly not. But will belong to Microsoft namespace, and that what counts to our customers.”
Microsoft is yet to realize the power of open source to improve and test their products in a large scale. Meanwhile Google’s GWT, Yahoo’s Hadoop, BEA’s Beehive, IBM’s xerces and xalan, leverage on the power of open source communities for quite some time. I only hope that when MS wake up for the 20th century it’s not too late. Afterall .net is a fantastic platform.
My definitive test: compiling Castle trunk with nant. Just to make it clear, for all tests I started Windows, waited and waited until there was no disk activity whatsoever, and started the build. I also had no open apps on Mac OS aside from Firefox.
Parallels (running in OS window): Total time: 476.2 seconds. 7.93 minutes
VMware Fusion (1 processor): Total time: 449.9 seconds. 7.50 minutes
VMware Fusion (2 processors): Total time: 446.8 seconds. 7.44 minutes
Bootcamp: Total time: 449.8 seconds. 7.50 minutes
I stand corrected, then. At least for my usual tasks there’s no significant difference between bootcamp on its own and a virtualization. But there’s some difference between Parallels and VMware.
Josh has a post on hardcore debugging in production. I didn’t even know that was doable! Great stuff! Can’t wait to have a production problem to try all this stuff. In a second though, nah, not really ;-)
I’ve only checked CAB at some point in 2005. It was kind clumsy but I understand that what they tried to achieve wasn’t easy, so it would be wrong to point finger unless I build something like it (in fact I did, in Java, in 2003, but that’s another story). And even if I do, it will be oriented to my projects’ requirements, not intended to be a general solution. So I’d rather stay away from this whole flame.
On the other hand I’ve used the data access block, and I like it and encourage people to use, depending on their scenarios. I dislike the configuration, and the need for a GUI for it, otherwise you wont grok it. Anyway, their choice.
Now Sam Gentile says, and I quote
On a side note, as I told Jeremy stop advocating Windsor/Castle when the last downloadable install release on the web site was Dec 2006. Yes, I can play with Subversion and all that good stuff but I have more important things to do like ship software
First, we have a build server so actually you don’t need to use the subversion as long as the build is passing. Second, I don’t think we need Sam Gentile’s blessing. If he cannot appreciate the complexity and the size of the subprojects under the Castle umbrella, then I prefer that he sticks to Enterprise Library. I can live with that.
And he continues:
I respect you, but frankly these kind of posts don’t endear you to me or others as they seem quite elitist and seem to advocate “you choose my way or you’re dumb” mentality. If you want me (and others) to keep reading, maybe you might want to think about this.
I think everyone has the right of having an opinion, and expressing it through their blog. If that makes people angry, they need to learn to deal with it, not the original poster.
Ayende did use a tone that I wouldn’t use to talk about CAB and Enterprise Library, but hey, it’s his blog. Jeremy, as usual, is being very didactic on his blog showing how he would create a CAB. I salute him! We should only hope that more people spend the time that these guys spend on their blogs to share knowledge (!).
But the bottom line here is the intensive reaction for nothing but some people saying that if they had to do [something], they would use [foo] instead of [bar]. [bar] users seem to have take into heart, and that’s never a wise thing to do. These kind of reaction demonstrates the immaturity of our community. Hopefully it will be something isolated, and we won’t end up as Java community that have so much to learn about what not to do regarding communities.
From now on I suggest using Ruby’s and Python’s (even Plone’s) community as an inspiration. And if someone blogged something that indirectly offended you, then do write a post in response. Call him/her names, do whatever you want. Just do not publish it.
Speaking and working with developers who live daily with your tools, I find confusion and concern over your relationship to the open source community that has grown up around the .Net platform. While Sun, IBM, other platform providers, and ISVs clearly see the open source community as a complimentary codebase to their products, Microsoft tends to use the best and brightest work from the community space as a feature map for .Net.
See the full post.
I could post mine, but Jean-Paul Boodhoo‘s and Ayende‘s lists cover more than 90% of my list. So, why wasting time repeating them?
Gosh, I wish I could meet these guys in person at DevTeach :-\
Netron is/was a really cool graphic library for .net. Now if you go to http://www.netronproject.com/ you are redirected to http://www.northwoods.com/ which has a set of similar tools for different languages.
I have seen this happening to a handful of projects and I really really disapprove this kind of move.
I can promise you that this will never happen to Castle. We, at the Stronghold, might create some fancy stuff and do not release them as open source, but what you see today on the SVN will always be open source, free of charge.