开源的面貌变化

最近读到专栏作家Andrew Binstock在《软件开发时报》上发表的题为《开源的改头换面(The Changing Face of Open Source)》的评论员文章,感觉有点意思,大概摘译如下:

今天的开源编程几乎是商业性的,大部分的编码是由全职开发人员编写的,因为他们的雇主有兴趣对某个项目提供支持。譬如,今天JBoss的编码,只有百分之一不到的编码来自独立的开发人员,而Eclipse则更少。(饶有风趣的是,Eclipse Foundation的Mike Milinkovich说,独立的开发人员作为beta测试人员还是非常棒的)。

究其原因,首先是现在的项目复杂性越来越大,在庞大的编码库里找到能有所贡献之处,所做贡献又确有价值的过程越来越困难。即使象听上去很容易的事,譬如提供文档,所需要的工作量也是非志愿性社区所能及。

第二个也是重要的,开源项目商业化的原因,就是因为项目主管更愿意对开发人员有控制权,这样他们就能计划特定的功能以及发行日期,而不必等待志愿者提供所需编码了。

当然,商业化的效果有目共睹,譬如,与功能不全的AbiWord相比,你得到的是功能齐全的OpenOffice,与以前一些混杂的线程支持方法相比,你得到的是Linux kernel中企业级的线程支持。

但商业化也带来了其他一些的问题,其中很重要的问题是,在今天,大型的,草根级的开源项目怎样,或者是否还能,生存下去。研究表明,在目前,这并不乐观。在过去的几年内,大部分新的开源编码是商业公司贡献的现有编码。虽有类似Firefox 和Spring这样的项目日益红火,但相比之下,这些项目很小。

开源的商业化也解释了为什么一个公司当初希望通过开源化来改变产品效益不好的初衷并没有效果,因为他们所做的就是公开源代码而已 。

开源的商业化也意味着对产品而言,开源不再是个卖点,而价格,功能以及来自发行商处的支持才更具重要性。但想一下,这些东西不就是评估闭源的商业软件的同样标准么?

可用于数据挖掘的公共数据库

微软SQL Server 2005中的分析服务(SSAS)提供了企业级的数据挖掘功能,可用于对购物篮,客户流失,市场/营销活动,预测,网站用户行为等问题的分析之用,来帮助企业提高生产力、增加利润和减少支出等,看来数据挖掘大众化已经是非常现实了。随SSAS来的是个基于一个虚构的公司Adventure Works的数据库,但网上还有不少公开的数据库,可供学习之用,kdnuggets网站有个详细的列单

Datasets for Data Mining

希望的鲜花从此盛开 — Team System之歌 (韩语)

[来源:Rob Caron,John Lawrence] 这些天在研究Team System,看到这个韩语的录像,虽然听不懂他们在唱什么,但作为开发人员,大概心意都是相通的,把歌词草译如下 (译自John Lawrence blog上的英文歌词)

[Intro]
客户: “这不行啊,我要的是别的东西!”
老板: “如果你时间不够,你为什么不熬夜?你为什么不能按时完成这个项目?”
项目经理: “啊啊,有什么更独特和有趣的东西么?这有点…”
“哎, 受不了啦!!”
[Verse 1]
不停埋怨的客户
咱的脖子象键盘那样发僵
咱的胖脸老板叫我熬夜工作
同事跳槽去了好公司
所以今天的工作是昨天的双倍
项目经理整天唠叨
又一次伤咱的心
苦干的我们,痛苦难忍
即使使劲卖力,拼着命干
同事在问,我们是否有vision
怀疑咱能否幸存
问咱是否有个愿望
想开发出神奇的软件
使得我们的生活如梦似幻
[Verse 2]
如此多的项目咱被迫违愿推迟
原因不外是“编码”困难
加班工作时,饥肠辘辘
昨晚几多编码丢失,快把咱逼疯
而如今,天下大变
捕捉着这极好的机遇使咱的梦想实现
VS 2005 又有新生
是咱开发人员梦想自由的标志
从此别再叫咱为“编码工人”
在更大的舞台上自由驰骋
因为新的架构深入咱心
满怀信心拥抱未来
只为你和我
只为你和我
开发人员独领风骚
希望的鲜花从此盛开
[Bridge x 4]
Visual / Studio / Team / System!!
[Chorus]
武装我们,脱离让人窒息的生活
投入精力,走向新未来
[Outro]
“哎,工作做完没有?去喝杯啤酒吧”
“这项目太棒了;让我们坚持下去,好么?”
“你用的是什么程序?”
Visual / Studio / Team / System!!

 这是韩语页上的英文歌词的翻译草案,为免臆测,尽量做了直译,虽然有时读着有点别扭,

[Intro]
客户:“这不行的,再给我另外一个方案”
雇主: “没时间?今晚就熬一整夜,你本来早就应该完成了,那么,我们该怎么做?”
老板: “你这个方案太平庸了,我们这里需要一些与众不同的东西,一些更有趣,更酷的东西”
“哎, 打住吧,我不想再听啦!!”
[Verse 1]
不停地提要求的客户
我变得跟木头一样僵硬的脖子
不断叫我们整夜不睡干活
老天,说完却自己马上回家的雇主
一个跟我说“我已找到了另一个更好的工作所在”的年少同事
统算起来,我的工作量又加倍了
责备我不理解他说的东西的老板
我又一次遭受沉重打击的心
一直生活在水深火热之中的我们这些开发人员
同事们问我,“每天都这么卖命工作,你可看到什么前途了?”
我不知道自己是否有一天会笑到最后
我的唯一愿望,我的唯一愿望是
到现在,我需要有一个与我创造的软件一样完美的生活
我将武装自己
因为那是结束这无聊生活的唯一之道
我将给自己投资,因为那是
我振作自己,超越他人的唯一之道
[Verse 2]
我很多东西要推迟,我是多么想完成它们
但是,这要命的“编码”把我挡住了
整夜工作遭受的饥饿
发现全部编码工作丢失后的绝望
而现在,时来运转
抓住机会,让我的想法去飞翔
VS 2005 终于重生了
作为软件开发人员梦想自由的标志
看在老天爷的份上,别再叫我“编码工”
因为我们不断努力,想成为大世界的一部分
因为崭新的设计就在我手中
现在我可以用全身拥抱整个未来
只为你和我
只为你和我
我们为自己是给这个世界领头的开发人员而骄傲
我们誓将这希望的花朵生出超越过去的更大的果实
[Bridge x 4]
Visual / Studio / Team / System
我将武装自己,因为那是结束这无聊生活的唯一之道
我将给自己投资,因为那是我振作自己,超越他人的唯一之道
[Outro]
“哎,工作做完没有?去喝杯啤酒吧”
“这看上去太棒了!我们为什么不坚持下去呢?”
“先生,你用的是什么程序?”
Visual / Studio / Team / System 
 
 
  回去再读第一个版本,真有点“Lost in Translation”的感觉,

Ready to rock

Visual Studio 2005,SQL Server 2005, BizTalk Server 2006正式推出!在这里可以看到Steve Ballmer在旧金山产品发布现场做的Keynote Speech

LINQ非常酷

读完文档,I am in awe,虽然感觉这玩意带来的编程模型的变化会很大

对DLINQ的基于属性的做法

[Table(Name=”Customers”)]
public class Customer
{
 [Column(Id=true)]
 public string CustomerID;
 [Column]
 public string City;
}

不是很认同,因为这样把relational database schema与对象模型耦合在一起了,这也是我不喜欢Gentle.NET的原因

比较一下C#,VB的Query syntax,(更正,谢谢Ninputer)

IEnumerable<string> expr = from s in names 
                                           where s.Length == 5
                                           orderby s
                                           select s.ToUpper();

Dim expr As IEnumerable(Of String) = Select s.ToUpper() _
                                                            From s in names _
                                                            Where s.Length = 5 _
                                                            Order By s

感觉VB更自然些,也许VB将会成为“programming language of choice”?

New features in C# 3.0

Anders Hejlsberg接受Channel 9的采访,谈到如何把数据编程与对象编程统一起来

也参考

The LINQ Project

上面有 LINQ的技术预览,包括示范程序,白皮书文档,hands-on labs以及为使用LINQ技术编程所需的编译器支持,可以在Visual Studio 2005 下使用

MSDN上的C# 将来版本网站罗列了很多资源,包括,

C# 3.0 Language Specification

这篇blog提到了下面这些new features

http://blogs.sarkhouston.com/jrobertson/archive/2005/07/19/2742.aspx

Extension methods
Lambda expressions
Type inference and implicit types
Anonymous types
Expression Trees
Concurrency
Object Initializers
Dynamic Typing

9月22日MSDN将有个聊天活动,讨论C# 3.0的new features

C# 3.0 Language Enhancements