Many improvements to programming have come from shortening feedback loops, for example with Integrated Development Environments, Unit Testing, Live Programming, and Distributed Version Control. A barrier to feedback that deserves greater attention is Schema Evolution. When requirements on the shape of data change then existing data must be migrated into the new shape, and existing code must be modified to suit. Currently these adaptations are often performed manually, or with ad hoc scripts. Manual schema evolution not only delays feedback but since it occurs outside the purview of version control tools it also interrupts collaboration. Schema evolution has long been studied in databases. We observe that the problem also occurs in non-database contexts that have been less studied. We present a suite of challenge problems exemplifying this range of contexts, including traditional database programming as well as live front-end programming, model-driven development, and collaboration in computational documents. We systematize these various contexts by defining a set of layers and dimensions of schema evolution. We offer these challenge problems to ground future research on the general problem of schema evolution in interactive programming systems and to serve as a basis for evaluating the results of that research. We hope that better support for schema evolution will make programming more live and collaboration more fluid.
翻译:编程领域的许多改进都源于缩短反馈循环,例如集成开发环境、单元测试、实时编程和分布式版本控制系统的出现。模式演化作为一个值得更多关注的反馈障碍,当数据结构的要求发生变化时,现有数据必须迁移至新结构,现有代码也需相应修改。目前这些适配工作通常依赖人工或临时脚本完成。手动模式演化不仅会延迟反馈,而且由于该过程处于版本控制工具的管理范围之外,还会中断协作流程。数据库领域的模式演化问题已有长期研究。我们观察到该问题同样存在于研究较少的非数据库场景中。本文提出了一系列挑战性问题来展示这些场景的多样性,涵盖传统数据库编程、实时前端编程、模型驱动开发以及计算文档协作等领域。我们通过定义模式演化的层级维度和特征维度,对这些多样化场景进行了系统化梳理。这些挑战问题的提出旨在为交互式编程系统中模式演化这一通用问题的未来研究奠定基础,并为评估研究成果提供基准。我们期望通过增强对模式演化的支持,能够推动编程过程向更实时、协作向更流畅的方向发展。