Hi all, Doc for final component structure. thanks Eranda
[1] https://docs.google.com/a/wso2.com/document/d/1ZY2aM7j9ydFINCxRoPWxd9GgsNGUilPwpfaBy3eYA7I/edit?usp=sharing On Tue, Jan 21, 2014 at 10:47 AM, Afkham Azeez <az...@wso2.com> wrote: > Yes, we had a discussion about this, and it seemed to be quite cumbersome > to preserve the SVN history. So we opted to start from scratch. > > Azeez > > > On Tue, Jan 21, 2014 at 10:07 AM, Nirmal Fernando <nir...@wso2.com> wrote: > >> Hi Shankar, >> >> While we were moving Stratos to Apache, Apache infra guys suggested some >> tools to get SVN commit history to Git [1]. >> >> [1] >> http://infrastructure.fedoraproject.org/infra/docs/hosted_git_to_svn.txt >> >> >> On Tue, Jan 21, 2014 at 2:05 AM, Selvaratnam Uthaiyashankar < >> shan...@wso2.com> wrote: >> >>> One issue is, we will loose commit information (svn blame) when we move >>> to github. Any way to import the code with those information? >>> >>> Regards, >>> Shankar >>> >>> >>> On Mon, Jan 20, 2014 at 10:59 AM, Eranda Sooriyabandara <era...@wso2.com >>> > wrote: >>> >>>> Hi All, >>>> As a PoC I just completed the carbon-component-governance. Please find >>>> it in [1] and let me know your comments and suggestions. Please keep in >>>> mind that this is not in a buildable state since other components need to >>>> build before this. >>>> >>>> thanks >>>> Eranda >>>> >>>> [1] https://github.com/wso2/carbon-component-governance >>>> >>>> >>>> On Fri, Jan 17, 2014 at 9:26 PM, Afkham Azeez <az...@wso2.com> wrote: >>>> >>>>> [Sorry for the very long mail. I want to document all that I had in >>>>> mind & the stuff we discussed. I would recommend all devs to take some >>>>> time >>>>> to read this] >>>>> >>>>> >>>>> I would like to summarize he discussion we had a couple of days back. >>>>> >>>>> *The Problems* >>>>> The problems we are trying to solve are as follows: >>>>> >>>>> 1. Trunk & branches structures being completely different >>>>> 2. Branches containing directories with version numbers >>>>> 3. It is impossible to move to GitHub with the current structure >>>>> because of #2 >>>>> 4. It is very easy to break the build by changing already released >>>>> code. The room for human error is high. >>>>> 5. Bamboo builds are eternally broken because the build fails at some >>>>> point & Bamboo cannot continue any further >>>>> 6. When we branch, the trunk quickly becomes obsolete, and remains in >>>>> that broken state until the next major platform release. >>>>> 7. Everybody has to build all components/features, even if those are >>>>> not related to their products >>>>> 8. Fixed versions in branches instead of using SNAPSHOT versions. This >>>>> makes it impossible to upload build artifacts to Maven/Nexus repos. This >>>>> leads to #7. >>>>> 9. Impossible to integrate code quality tools such as EraInsight >>>>> because of #5 >>>>> >>>>> *Proposed solution* >>>>> We have come up with the following solution after much deliberation & >>>>> thought. >>>>> >>>>> Rationale: >>>>> We started looking at other open source projects out there. We took >>>>> Axis2 as an example. Axis2 had many dependencies including Axiom, >>>>> XmlSchema, Woden, WSS4J etc. Those 3rd party dependencies were also >>>>> developed by some Axis2 contributors, but we never branched all of those >>>>> together and brought them into the same code branch. We used to start what >>>>> we used to call a release train, where the upstream code would have to be >>>>> released first before the downstream code such as Axis2 & Synapse could be >>>>> released. This way, we never had any of the problems outlined above. >>>>> >>>>> If you look at the WSO2 product releases, again, the scenario is not >>>>> that much different from the Axis2/Synapse releases. Components & features >>>>> are simply dependencies of the products. In order to get product releases >>>>> out, we first need releases of those dependencies (components/features). >>>>> So >>>>> the proposal is to identify the top level components/features, and first >>>>> release that code before doing product releases. Each of those components >>>>> will have a GitHub repo. All active development will be done on the main >>>>> branch of those components, and will be branched when they are close to >>>>> the >>>>> release. Instead of granting commit rights to all, we could only allow the >>>>> primary developers of those components to commit, and others can send pull >>>>> requests, which will be merged in by the primary owners after reviewing. >>>>> These component teams could even have an internal Git repo or clone, and >>>>> commit to that, run all tests, and when they are satisfied that the code >>>>> is >>>>> in a good state to be merged into the main branch, they can send a pull >>>>> request & merge the changes. We would run Bamboo which would build the >>>>> components several times a day & deploy them to the Nexus repo. That way, >>>>> you would not have to build code that is not directly related to what you >>>>> are working on, which would save 100s of valuable dev hours. >>>>> >>>>> In the majority of the cases, the P2 features correspond to one or >>>>> more related components. So we would keep the feature close to the >>>>> component. There are some cases where these components & features belong >>>>> in >>>>> the product itself. AppFactory components are a good example. >>>>> >>>>> Products will also have their own GitHub repos. We will have separate >>>>> GitHub repos for platform integration tests. Products such as API Manager >>>>> may opt to have the API Management feature in the product itself. We would >>>>> have a separate P2-repo GitHub repo which would build & deploy the >>>>> compatible set of P2 features. >>>>> >>>>> We will have Bamboo plans at multiple levels; components, products, >>>>> platform, p2-repo and so on. >>>>> >>>>> We will not change any package structures at this time. We would defer >>>>> that to Carbon 5 (if necessary). We will get rid of the chunk based >>>>> release >>>>> model. Continuous delivery is our ultimate aim & for that to happen, we >>>>> have to release a compatible set of features. We are going to rely heavily >>>>> on automation, automated builds & deploys to Maven. The developers will do >>>>> the majority of the QA (just like the Apache Stratos team is doing now). >>>>> >>>>> We will use the Maven release plugin to create releases & upload them >>>>> to the Maven repo. >>>>> >>>>> *Implications to WSO2 code developers* >>>>> 1. Life becomes easier because you don't have to spend a lot of time >>>>> building unrelated stuff >>>>> 2. General development would happen in the main branch. >>>>> 3. Close to a release, branches would be cut. >>>>> 4. Once release branches are cut, fixes would be done in the main >>>>> branch, and pull requests would be sent to the branch & merged in. This >>>>> will be easy because we no longer have the trunk & branch structure being >>>>> different. >>>>> >>>>> >>>>> *Implications to users* >>>>> Users will not see any difference in the components & features because >>>>> we are not changing packages or binary structure. In fact, we would have a >>>>> P2 repo with compatible features which all work together. >>>>> >>>>> Senaka, Isuruwan & Harshana have already started working on a PoC. >>>>> >>>>> Thoughts welcome. Those who were in these discussions, please add >>>>> anything I may have missed. >>>>> >>>>> -- >>>>> *Afkham Azeez* >>>>> Director of Architecture; WSO2, Inc.; http://wso2.com >>>>> Member; Apache Software Foundation; http://www.apache.org/ >>>>> * <http://www.apache.org/>* >>>>> *email: **az...@wso2.com* <az...@wso2.com> >>>>> * cell: +94 77 3320919 <%2B94%2077%203320919> blog: * >>>>> *http://blog.afkham.org* <http://blog.afkham.org> >>>>> *twitter: >>>>> **http://twitter.com/afkham_azeez*<http://twitter.com/afkham_azeez> >>>>> * linked-in: **http://lk.linkedin.com/in/afkhamazeez >>>>> <http://lk.linkedin.com/in/afkhamazeez>* >>>>> >>>>> *Lean . Enterprise . Middleware* >>>>> >>>>> _______________________________________________ >>>>> Architecture mailing list >>>>> Architecture@wso2.org >>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture >>>>> >>>>> >>>> >>>> >>>> -- >>>> >>>> *Eranda Sooriyabandara*Senior Software Engineer; >>>> Integration Technologies Team; >>>> WSO2 Inc.; http://wso2.com >>>> Lean . Enterprise . Middleware >>>> >>>> E-mail: eranda AT wso2.com >>>> Mobile: +94 716 472 816 >>>> Linked-In: http://www.linkedin.com/in/erandasooriyabandara >>>> Blog: http://emsooriyabandara.blogspot.com/ >>>> >>>> >>>> >>>> >>>> >>>> _______________________________________________ >>>> Architecture mailing list >>>> Architecture@wso2.org >>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture >>>> >>>> >>> >>> >>> -- >>> S.Uthaiyashankar >>> VP Engineering >>> WSO2 Inc. >>> http://wso2.com/ - "lean . enterprise . middleware" >>> >>> Phone: +94 714897591 >>> >>> _______________________________________________ >>> Architecture mailing list >>> Architecture@wso2.org >>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture >>> >>> >> >> >> -- >> >> Thanks & regards, >> Nirmal >> >> Senior Software Engineer- Platform Technologies Team, WSO2 Inc. >> Mobile: +94715779733 >> Blog: http://nirmalfdo.blogspot.com/ >> >> >> >> _______________________________________________ >> Architecture mailing list >> Architecture@wso2.org >> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture >> >> > > > -- > *Afkham Azeez* > Director of Architecture; WSO2, Inc.; http://wso2.com > Member; Apache Software Foundation; http://www.apache.org/ > * <http://www.apache.org/>* > *email: **az...@wso2.com* <az...@wso2.com> > * cell: +94 77 3320919 <%2B94%2077%203320919> blog: * > *http://blog.afkham.org* <http://blog.afkham.org> > *twitter: **http://twitter.com/afkham_azeez*<http://twitter.com/afkham_azeez> > * linked-in: **http://lk.linkedin.com/in/afkhamazeez > <http://lk.linkedin.com/in/afkhamazeez>* > > *Lean . Enterprise . Middleware* > > _______________________________________________ > Architecture mailing list > Architecture@wso2.org > https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture > > -- *Eranda Sooriyabandara*Senior Software Engineer; Integration Technologies Team; WSO2 Inc.; http://wso2.com Lean . Enterprise . Middleware E-mail: eranda AT wso2.com Mobile: +94 716 472 816 Linked-In: http://www.linkedin.com/in/erandasooriyabandara Blog: http://emsooriyabandara.blogspot.com/
_______________________________________________ Architecture mailing list Architecture@wso2.org https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture