Moonlight 项目团队的 21 天

  • James Vastbinder
  • 霍泰稳

2007 年 6 月 22 日

话题:敏捷.NET语言 & 开发文化 & 方法

5 月底收到在巴黎举行的 ReMix07 大会的参会邀请后,Mono 团队开始夜以继日地投入到他们的 Silverlight 实现——Moonlight 项目中。用Miguel de Icaza 自己的话 说:

5 月 31 日,除了学习 Silverlight、探究如何解码视频、对视频进行简单测试 并开始计划 之外,还没有什么可以演示的东西。

不过仅靠 Silverlight 1.0 API 做为参考,通过 Email 沟通和即时通讯工具(IRC),在三周的时间内他们就完成了下面这些工作:

6 月 14 日

  • 文本渲染(Jeff)
  • 放射变化(Sebastien)
  • 在改变子节点时 Canvas 处理附带属性
  • 实现下载工具(Downloader)(Toshok)
  • 托管下载工具(Miguel)
  • 鼠标移入 / 移出事件(Miguel)
  • 从网络上加载图片
  • Everaldo 实现内嵌型插件,而不是现在正用的 Hack

6 月 15 日

  • 文本中的 Inline 和 Run
  • 性能提升
  • 连接单个对象的鼠标事件
  • 使用 Assembly 从 XAML 文件中装载定制的对象
  • Everaldo 完成用 Javascript 修改界面的插件
  • Sebastien 开始用 Silverlight 将 Surface 导出至 Gtk#

6 月 16 日

  • XAML 依赖文件的装载(Miguel,Jackson)
  • Toshok 使用绑定沙盒优化渲染
  • Jackon 负责 hook 依赖装载
  • Jeff 重构视频引擎,使其可重用
  • C# 绑定

6 月 17 日

  • Jeff 实现 VideoBrush
  • Sebastien 实现多种图像属性,可通过特定参数进行渲染
  • 更新 Event 系统,Surface 现在能以正确的顺序得到事件
  • 修复动画解析器,Surface 动画现在可正常定时
  • Everaldo 在 HTML 页面里增加对 XAML 内容的支持(在 URL 里面用 # 标识)
  • Jackson 实现 XAML 装载时对 x:Class 的支持

6 月 18 日

  • Rolf 实现在 Moon 类型系统和绑定里对 Nullable 类型的支持,以在 C# 代码中映射 Nullable 到 C++ Nullable
  • Jeff 实现了对 VideoBrush 共享 MediaElement 的支持
  • Jeff 为 Runs 实现 Brush
  • Paolo 帮助勾画 Moonlight 的 Surface,使交互更平滑
  • Chris 和 Sebsatien 优化屏幕渲染的性能
  • Chris 提高动画和屏幕的刷新,构建基于 Xlib 的图像表面
  • Jackson 实现 Path Data 解析,Sebsatien 完成底层的架构,使得 Sam Ruby 的例子站点上的其他例子可以渲染
  • Jackson 和 Sebastien 实现由于 Path 渲染丢失的不同片段
  • Jason 实现了对 XAML 的支持

6 月 19 日

  • Javascript 桥接 DependencyObject 可用,Javascript 控制的 XAML 时钟事例现在可以运行
  • 实现集合迭代
  • 解决浏览器正常关闭问题
  • Rolf 实现一些丢失的托管绑定

项目的进展确实让人惊讶,在如此短的时间里竟然撰写了超过 3 万 8 千行代码,展示的截屏证明了这一切。在一个应用程序中内置 Moonlight,以让 Linux 应用支持 Silverlight 内容的这个想法令人惊叹。祝贺 Mono 团队,在这么短的时间内就在 Moonlight 项目上取得了如此不俗的成绩!

查看英文原文:Moonlight in 21 days

敏捷.NET语言 & 开发文化 & 方法