飞天发布时刻:2024年 Forrester 公有云平台Wave™评估报告解读 了解详情
写点什么

专访 iOS 开发框架 BeeFramework 作者郭虹宇

  • 2014-01-23
  • 本文字数:2663 字

    阅读完需:约 9 分钟

BeeFramework 是一个 iOS 应用开发框架,由国内开发者郭虹宇创立并且在 Github 上开源。经过一年多的发展,BeeFramework 在 Github 上,得到了广泛关注,有 1000 多的 star 数和 400 多的 fork 数。

InfoQ 采访了 BeeFramework 的作者郭虹宇( @老郭为人民服务),他活跃于 iOS 开源社区。从 2006 年大学毕业,一直从事着跟手机相关的研发工作,包括 UI 框架、输入法、浏览器、播放器、社交软件、休闲游戏等。2012 年从腾讯离职开始了创业之路,目前加入 GeekZooStudio ,负责公司的技术研发和管理工作。

InfoQ:请介绍一下 BeeFramework 这个项目的背景,当初为什么打算做这个项目?

郭虹宇:BeeFramework 的出现并非偶然,与我的工作经历有较大有关系。

12 年我在腾讯负责的其中一个项目是手机 QQ 空间 iOS 版,因为其代码曾经分别由几波团队交接过,较为混乱,以至于很难继续维护。同时需要应对新需求,又要维护老的代码,要求 2 周一个迭代输出版本。在这种情况下,老的代码结构之上基本无法完成产品的快速迭代,更别说并行的新项目的启动。当时,公司内部根本就没有一套可以复用的框架或类似的东西,包括许多重点项目在内,都是基于很多开源组件拼凑而成,于是有了开发一套简单通用 MVC 框架的想法。

第一个版本,大概两周时间完成了框架中 Controller 的部分以及相关代码自动生成工具。这个版本首先在 QQ 空间和 QQ 游戏大厅两个项目中运用起来,得到不错的效果。我在离开腾讯之后,基于以往在腾讯做项目的经验,将这个框架全面应用在真正的创业项目中,并取名为 Bee,寓意着 “敏捷、高效” 的意思。2012 年底,我将该项目开源在 Github 社区中,最初是 0.1 版,迄今共发布了 5 个大版本,最新版本为 0.5.0。

InfoQ:BeeFramework 在中国现在有哪些主要的客户在使用?

郭虹宇:目前开发者数量在 1300 人左右,其中以个人和创业公司使用居多,大公司占少数。

据我所知,腾讯内部的一些产品有在使用,如 GT 随身调和 pengo 微博。新浪团队应该也有在用,其他的还有:北京电视台、屈臣氏中国等。我们的自有产品 ecmobile.me 也完全基于 BeeFramework。

InfoQ:业界内还有哪些与 BeeFramework 类似的框架?BeeFramework 和他们相比有什么优缺点?

郭虹宇:国内还没有,国外类似的有 Pixate NUI Masonry 等,相比之下这三者都在初级阶段。

BeeFramework 是全栈式(Full-Stack)半混合型(Semi-Hybrid)的适合于大规模(Large-Scale)的 App 开发框架,是一套 App 从无到有的整体解决方案,不仅提供了 XML+CSS 的开发方式,也提供了几乎满足你所有需求的组件,另外也提供了一系列的辅助工具。

Pixate / NUI,可以当做原生控件对 CSS 的扩展支持来用,两者不能当做完整的 APP 解决方案。

Masonry,是对 AutoLayout 的一种语法上的封装,允许原生界面支持相对比较复杂的响应式布局,像是一种过度的技术。

对比使用方式上,其它框架更倾向于原生的开发方式,而 BeeFramework 倾向于前端开发的方式,允许开发者通过 XML+CSS 编写模版。

对比实现方式上,其它框架更倾向于依赖平台相关 API,而 BeeFramework 是独立于平台之上的,不会因为系统升级而出现兼容性问题。

另外 BeeFramework 还有数十个组件可以提供给开发者使用,这个目前为止包括 Github 所有 iOS 开源项目在内都无法比拟。

BeeFramework 是真正属于框架类的产品,目前在 Github 中 Framework 类排名全站第 8 名,在 Objective-C 语言的 Framework 中第 2 名

InfoQ:BeeFramework 为什么选择一个基于 XML 和 CSS 的布局方案?

郭虹宇:随着 iPhone/iPad/Android 手机的普及,各大手机生产厂商包括苹果在内,已不安于现状只研发固定分辨率的手机产品。越来越多的事实证明,固执的巨人 Apple 也扩大产品线,不光在物理屏做了改变,技术上也逐步从静态布局到 AutoLayout,一切都是在暗示着开发者,未来的手持产品将是多样化的,不再是 iPhone4 Retina 屏的单一产品做为行业标准的年代。

记得 iPhone5 和 iOS7 出现的那一年,想必让全球 iOS 开发大吃一惊,界面比例和样式不再兼容,写死坐标必死无疑。如果 App 在开发时只考虑了一种分辨率,那接下来的 UI 适配工作将是天翻地覆的。此前如此,此后更是如此。

12 年的时候,我了解到 Responsive Design 这一概念,这时才真正的意识到历史是可以重复的,技术也可以是复用的,在 Web 前端领域已有更优秀的考虑更全面的响应式 UI 解决方案,被 Business insider 等多家评为未来的趋势。Google 的 Android 系统是开放性的,在设计时就考虑到了这一问题,通过另类的 XML 方式提供给界面响应式的能力。

BeeFramework 说白了是 iPhone4/4S 时代出现的一个产物,那时 Apple 对于响应式布局并没有概念,随着各种 UI 问题的出现,必会有人给出答案。我们早先一步考虑到了这个问题,结合 Web 与 Android 的实现方式,BeeFramework 独创了 MobileXML+MobileCSS 来解决 UI 响应式的问题,即 Semi-Hybrid 模式,我相信这将会是未来的一个趋势。

InfoQ:未来 BeeFramework 打算往哪些方面发展?

郭虹宇:2014 年计划输出到 1.0 正式版本,重点解决几个问题。

  1. 模块化:More easier, more lighter
  2. 标准化:MobileCSS/XML standardization
  3. 可视化:Visualization tools
  4. 跨平台:Android support
  5. 文档化:Tech documentation & Video tutorial

在以上这些完备的同时,我们将推出一系列的跨平台标准 UI 库和快速开发组件,免费开源的提供给开发者使用,可能会类似于国外的 ThemeForest,这些都需要长时间的技术积累才能够实现。

InfoQ:BeeFramework 收到了多少来自开源社区的代码贡献?收到了多少来自开源社区的 bug 报告?

郭虹宇:Issue: 70+, Pull Request: 70+

InfoQ:你认为一个成功的开源项目需要具备哪些特点?

郭虹宇:

  1. 从实际需求出发,解决行业范围内的一个问题
  2. 稳定的核心团队,持续的时间投入
  3. 定期的版本更新,及时的 BUG FIX
  4. 有个网站,形成固定的技术圈子(论坛或 QQ 群)

InfoQ:你为什么选择将 BeeFramework 开源?

郭虹宇:与 Geek Zoo Studio 的文化有极大的关系,崇尚使用开源、分享开源。

InfoQ:你每天有多少精力花在 BeeFramework 的开发上?

郭虹宇:几乎每天都在修改 BeeFramework,最忙的时候每天差不多一半时间花在上面。

InfoQ:你从 BeeFramework 得到的最大收获是什么?

郭虹宇:开源使我们收获了未来,我想很多开源爱好者与我有共同的感受。通过开源与许许多多开发者或创业公司变成了朋友,Geek Zoo Studio 也通过开源收获了更多的客户。以前,我们的产品来自于开源社区,现在,我们的产品将回馈于开源社区。

我坚信,未来是通过现在付出的的努力而换来的回报。

2014-01-23 00:5115062
用户头像

发布了 65 篇内容, 共 56.9 次阅读, 收获喜欢 23 次。

关注

评论

发布
暂无评论
发现更多内容

spring事务的这10种坑,你稍不注意可能就会踩中

简爱W

大数据技术思想入门(二):分布式存储集群特点

cristal

Java 大数据 hadoop 分布式

JDK8 日期 API 使用

HeGuang

JDK1.8

世界正在重塑 加密货币将扮演什么角色

CECBC

数字货币 加密货币

Week10---课后总结

Geek_165f3d

netty案例,netty4.1高级应用篇一,手写RPC框架第一章《自定义配置xml》

小傅哥

Java Netty

netty案例,netty4.1源码分析篇六《Netty异步架构监听类Promise源码分析》

小傅哥

Netty 小傅哥

netty案例,netty4.1源码分析篇五《一行简单的writeAndFlush都做了哪些事》

小傅哥

Java Netty 小傅哥

netty案例,netty4.1中级拓展篇十三《Netty基于SSL实现信息传输过程中双向加密验证》

小傅哥

Netty 小傅哥

netty案例,netty4.1高级应用篇三,手写RPC框架第三章《RPC中间件》

小傅哥

Netty 小傅哥

netty案例,netty4.1源码分析篇三《Netty服务端初始化过程以及反射工厂的作用》

小傅哥

Java Netty 小傅哥

netty案例,netty4.1中级拓展篇十二《Netty流量整形数据流速率控制分析与实战》

小傅哥

Netty 小傅哥

netty案例,netty4.1源码分析篇一《NioEventLoopGroup源码分析》

小傅哥

Netty 小傅哥

netty案例,netty4.1源码分析篇四《ByteBuf的数据结构在使用方式中的剖析》

小傅哥

Java Netty 小傅哥

书摘之《堂吉诃德》—— 谁不曾想过仗剑走天涯?

小匚

读书笔记

一个实用的开源项目,可以快速将 Elasticsearch 数据导出到 csv

AlwaysBeta

Python 数据库 elasticsearch Kibana Lucene Elastic Search

netty案例,netty4.1中级拓展篇十《Netty接收发送多种协议消息类型的通信处理方案》

小傅哥

Java Netty 小傅哥

大龄程序员的自我介绍 v 0.1

escray

学习 面试 自我介绍

netty案例,netty4.1源码分析篇二《ServerBootstrap配置与绑定启动》

小傅哥

Java Netty 小傅哥

Week10--课后作业

Geek_165f3d

netty案例,netty4.1高级应用篇二,手写RPC框架第二章《netty通信》

小傅哥

Netty 小傅哥

数字化背景下的经济社会发展的新特征 新趋势

CECBC

区块链 人工智能 大数据

区块链的共识机制有哪些好处优势?

CECBC

区块链 分布式 金融

做职场里的“超级英雄”,需要怎样的盔甲与工具?

脑极体

netty案例,netty4.1中级拓展篇六《SpringBoot+Netty+Elasticsearch收集日志信息数据存储》

小傅哥

Java Netty

netty案例,netty4.1中级拓展篇七《Netty请求响应同步通信》

小傅哥

Java Netty 小傅哥

netty案例,netty4.1中级拓展篇九《Netty集群部署实现跨服务端通信的落地方案》

小傅哥

Java Netty 小傅哥

netty案例,netty4.1中级拓展篇十一《Netty基于ChunkedStream数据流切块传输》

小傅哥

Java Netty 小傅哥

8锁问题

HeGuang

synchronized

程序开发中的持续集成、持续交付、持续部署

石云升

持续集成 持续交付 持续部署 自动化部署

netty案例,netty4.1中级拓展篇八《Netty心跳服务与断线重连》

小傅哥

Netty 小傅哥

专访iOS开发框架BeeFramework作者郭虹宇_Android/iOS_唐巧_InfoQ精选文章