Changes between Initial Version and Version 1 of MapGuideRfc145


Ignore:
Timestamp:
Aug 24, 2014, 2:45:28 PM (8 years ago)
Author:
jng
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • MapGuideRfc145

    v1 v1  
     1= !MapGuide RFC 145 - MapGuide Repository Re-organization  =
     2
     3This page contains a change request (RFC) for the !MapGuide Open Source project. 
     4More !MapGuide RFCs can be found on the [wiki:MapGuideRfcs RFCs] page.
     5
     6
     7== Status ==
     8 
     9||RFC Template Version||(1.0)||
     10||Submission Date||25 Aug 2014||
     11||Last Modified||||
     12||Author||Jackie Ng||
     13||RFC Status||draft||
     14||Implementation Status||not started||
     15||Proposed Milestone||3.0||
     16||Assigned PSC guide(s)||||
     17||'''Voting History'''||||
     18||+1||||
     19||+0||||
     20||-0||||
     21||-1||||
     22||Abstained||||
     23 
     24== Overview ==
     25
     26This RFC proposes to re-organize the MapGuide repository to improve efficiency of checkout and other repository-wide actions.
     27
     28== Motivation ==
     29
     30MapGuide's repository is huge. The bulk of this size is due to also keeping the source code of all third-party libraries and components that MapGuide depends on as part of the source tree.
     31
     32This makes initial check out and any repository-wide actions a very slow process. Checking out specific branches also wears the same performance penalty.
     33
     34== Proposed Solution ==
     35
     36As part of [wiki:MapGuideRfc138 MapGuide RFC 138], we parameterized the build settings (via environment variables) of MapGuide components that depend on Apache httpd and PHP.
     37
     38For this RFC, we will extend this approach to cover every referenced library/component under Oem. The setenvironment.bat, setenvironment64.bat and configure.in/Makefile.am files will do the necessary legwork to set these environment variables up.
     39
     40Once this is done, the Oem directory under MgDev will be moved '''up a level to become a sibling directory of MgDev'''. The layout goes from this:
     41
     42{{{
     43/trunk
     44    /Installer
     45    /MgDev
     46        /Oem
     47}}}
     48
     49to this
     50{{{
     51/trunk
     52    /Installer
     53    /MgDev
     54    /Oem
     55}}}
     56
     57The setenvironment.bat, setenvironment64.bat and configure.in scripts will now assume Oem is a sibling directory of MgDev and not a child one for all the environment variables it needs to set.
     58
     59This repository layout offers the following benefits:
     60
     61 * MgDev checkout is '''substantially''' faster.
     62 * Oem checkout can be a '''one-time event'''. Targeting specific-branches is a simple case of making a physical copy of the Oem working copy and svn switching to the branch-specific Oem.
     63 * Oem component updates happen independently of the MapGuide source.
     64 * On Linux, this will greatly improve our ability to build MapGuide against system-installed versions of various Oem components as this setup gives us greater freedom to cherry-pick what components will link against system-installed libraries and which ones will link against internal Oem copies.
     65
     66When it comes time to branch for specific releases, MgDev and Oem are branched individually. For example, a 3.0 release branch would look like this:
     67{{{
     68/branches
     69    /3.0
     70        /Installer [branched from trunk/Installer]
     71        /MgDev [branched from trunk/MgDev]
     72        /Oem [branched from trunk/Oem]
     73}}}
     74
     75== Implications ==
     76
     77This repository change will impact on how developers set up their working copies and/or automated build systems. Instead of just checking out MgDev. They have to checkout both MgDev and Oem and have Oem be a sibling of MgDev in their working copy directory structure in order for the environment setup scripts to work under their default settings.
     78
     79This repository structure change will mean that running setenvironment.bat/setenvironment64.bat before launching Visual Studio to build MapGuide '''is now mandatory'''. Previously, the Server solution could be built and run from Visual Studio without having to call setenvironment.bat as none of its projects had parameterized include/linker paths. With this change, this will no longer be the case. "headless" builds via build.bat will still operate as before.
     80
     81There will be a short momentary disruption while the implementation of this RFC is carried out. Since we are not currently in a stage of putting out a new release, the impact of this disruption should be minimal. Developers with existing trunk working copies will need to checkout Oem individually once this RFC is carried out and have it sit alongside MgDev in order for environment setup scripts to work under their default settings.
     82
     83== Test Plan ==
     84
     85Build/Run on Windows/Linux. Ensure build system can work under the new repo layout and that the existing unit test suite passes.
     86
     87== Funding/Resources ==
     88
     89Community