Hello everyone, For quite some time we have been discussing to make a 1.0 release and have had several discussions in developer sync up around it. Taking this to next step, I propose next release line(after 0.10) of Apache Falcon to be 1.0
*Item 1 - Scope and Timelines* Some of the items that are in works and I personally feel will be idle candidate for 1.0 are - clean up our APIs(add a new version), introduce a new shell for Falcon feed sla alerts, and move to the more powerful and capable lifecycle framework for feeds among few. After lot of thought and discussions with several members, I propose to not aim for too many big features and a timeline of 2.5-3 months after the 0.10 release. This will ensure that critical fixes are not delayed and there is only one active working line for code. We can add more features if other community members are able to get them committed in time and our quality team also feels comfortable. *Item 2 - Migration Strategy* While some of the changes like REST API clean up etc. can be done by adding versioning others like migration to lifecycle framework etc. are bit more involved. One important decision to be made is how to migrate to 1.0 release. Here are some of the options to migrate to new entity definitions in 1.0 (NOTE: REST api can be versioned and same end points can continue to work albeit with newer definitions) *Approach 1*. Take a one time hit, call the release backward incompatible and provide changes inside falcon to automatically migrate to newer definitions on start up. We can support this migration code for a couple of releases and then later on remove it. pros: - Clean and easy to code - no if else etc. for supporting features in multiple manners. - Intuitive for users - multiple options for same purpose are confusing for the users. - Easier to maintain - All bug fixes need to be done only in one code flow and not at many places. cons: - involves migration - it can be automated by incorporating the migration as part of falcon startup. *Approach 2*. Support both old and new entity definitions. pros - users can work with both versions and migrate at their own pace cons - Hard to maintain - Lot of code will need to be duplicated (validations etc.) or branched (wf builders etc.) All bug fixes will need to be fixed in multiple places. - Not scalable approach - The code will not scale easily if we decide to support one more version. - Manual migration - Users will have to migrate themselves to the new entity definitions. - Gotchas - What will happen if someone submits in newer version but calls update in older version? I invite all of you to provide your thoughts on both the items. There might be more approaches or points to consider, suggestions are welcome. Cheers Ajay Yadava