On Thu, Dec 13, 2012 at 12:24:17PM +0100, Frank Karlitschek wrote: > Hi Bart, > > > I think we have to look at different scenarios here to see what is best: > > > - Developers > I think it is a very bad idea if the 3rdparty libraries change automatically > or semi automatically. As we all know the libraries are not as stable between > versions as they should be so this makes development very unpredictable. This > would even mean that different developers have different versions because > they update their git externals or composer at different point in times. > This makes development super difficult. > > We should update the 3rdparty libraries at the beginning of every development > cycle centrally and then stick to them unless there is an important > bugfix/security update and all developers are fine with updating and > everything is working with the new version. Developers can code agains a > defined stable version and can be sure that things doesn't break behind their > back. > > > - Testing > I think we always should test against the same version of a library for our > continuos integration testing. Otherwise we never know why something breaks. > We already have a lot of challenges with testing against different browsers, > different webservers and configurations, different PHP versions, installed > modules and operating systems. If the 3rdparty libraries are also in flux > then it gets very difficult IMHO. > > > - Release of the tar release. > We want to have a single defined release tar file that contains a tested set > of 3rdparty libraries that went through a proper CI and beta testing phase. > For this release we need a tested and verified set of 3rd party libraries > anyways so we should stick with the current approach here. >
With composer and submodules you can specify the version and the commit you want to use. So we don't need to worry that everyone is using different versions. > > - Release of Linux Packages > This is a different thing. Some Linux packagers complain that it is currently > difficult to make ownCloud use the system 3rd party libraries. For example > someone has the jquery package installed in Debian and ownCloud should use it. Using composer and/or submodules also helps the packagers, this way they know that we are using the version from upstream without any changes of our own. > I'm personally not 100% sure is this is a good idea because of the QA and > Testing issues but packagers seems to want it. :-) > > What we can do here is: > We create a packaging-config.php in the config directory. Every time we > include a 3rdparty library in ownCloud we check if there is a config variable > set that defines a filesystem path to the library (for php) or a url (for js, > css and images) and use them instead. > So if let's say the Debian packager want's to ship an ownCloud that is using > the system jquery than they can: > 1. remove jquery from the 3rdparty folder, > 2. add a packaging-config.php to the config folder that defines something > like $jquerypath='/debianlibs/jquery/jquery.js'; > 3. make the jquery package a dependency for the ownCloud package. > > Not sure if someone is motivated to implement that but this is probably the > easiest and most flexible solution to make our packagers more happy. > No comment, yet. > > Because of that I?m not a fan of using composer or git sub modules because > this would make development, testing, releasing and bugfixing significantly > more difficult and we already have enough challenges ;-) > > I hope i addressed your worries, if not, let me know. Bart > > So what should we do: > > - Update all the 3rdpary libaries to the newest versions at the beginning of > a development cycle and port all the ownCloud code to it. > There is still time to do this now for ownCloud 5. > > - We should put every 3rd party library into its own folder together with a > proper licensing file. Currently it?s a mess. > > - If someone is motivated then we create a packaging-config.php system as > described. > > > > Frank > > > On 07.12.2012, at 20:13, Bart Visscher <ba...@thisnet.nl> wrote: > > > On Tue, Nov 27, 2012 at 10:32:27PM +0100, eMerzh wrote: > >> I'm not a git expert but we also have the possibility to use git sub trees > >> ( it have the advantage of the git tool like submodules and it doesn't > >> require an extra command unlike the submodule) ... > >> > >> aside from that, does every projects use git or have a composer file ? > >> because it can push us to use one or another technique .. > > > > Most of the projects that use composer also use git for the repository. > > The git subtree command looks interesting, but is not available in all > > distribution and on all platforms. > > > > It is now possible to test composer and/or submodules by using the > > composer-and-submodules branch in the 3rdparty repository. > > > > Regards, > > Bart > > > >> > >> Regards, > >> > >> > >> eMerzh > >> > >> > >> On Tue, Nov 27, 2012 at 9:50 PM, Bart Visscher <ba...@thisnet.nl> wrote: > >> > >>> Hello all, > >>> > >>> At the sprint in Berlin I merged the routing branch. After the merge > >>> there where some problems with having to download extra repositories. > >>> We need to solve this problem in a structural way. The quick fix for > >>> the routing was to include the code in our 3rdparty repository. > >>> > >>> I would like to discuss how to have the external code in 3rdparty. At > >>> the moment I suggest to limit this to the large projects: Sabre, Symfony > >>> routing component and Doctrine. For these projects we have 2 ways of > >>> doing this. The first is to use git submodules, and the second one is to > >>> use composer. > >>> > >>> The positive about git submodules is that you don't need extra programs > >>> to download the code, every thing you need is included with the git > >>> installation. There are some posts on the internet that this doesn't work > >>> very well with switching branches, but I'm not sure how relevant that is > >>> for us. > >>> > >>> With composer you don't need git to get the external code, but can > >>> download a php phar and use that to download the other code. With > >>> composer we can also specify the version in a flexible way. > >>> > >>> We can also do a combination of these, then everyone can chose which > >>> works better for them. Haven't really tested this, but i expect that > >>> this works. > >>> > >>> The commands to get the external code are: > >>> > >>> git submodules: > >>> git submodule init > >>> git submodule update > >>> > >>> composer: > >>> curl -s https://getcomposer.org/installer | php > >>> composer update > >>> > >>> Bart > >>> _______________________________________________ > >>> Owncloud mailing list > >>> Owncloud@kde.org > >>> https://mail.kde.org/mailman/listinfo/owncloud > >>> > > > >> _______________________________________________ > >> Owncloud mailing list > >> Owncloud@kde.org > >> https://mail.kde.org/mailman/listinfo/owncloud > > > > _______________________________________________ > > Owncloud mailing list > > Owncloud@kde.org > > https://mail.kde.org/mailman/listinfo/owncloud > _______________________________________________ Owncloud mailing list Owncloud@kde.org https://mail.kde.org/mailman/listinfo/owncloud