Hi Bertrand,

We applaud you for taking on this work, however you should know that we
plan on doing it as well in due time. The biggest issue you will face in
attempting to package RStudio is the fragility of certain dependencies
(mostly QtWebKit). i.e. the product breaks in subtle ways when moving from
one minor Qt release to the next. That's the main reason to date that we
have chosen to pin versions of various dependencies. Another reason is that
often we need the *very latest* (or even a patched) version of large
complex software like Boost, Qt, or GWT to work correctly. We are an
*extremely* small team and having the software work against a large matrix
of these dependencies is too much to keep up with right now.

There's a philosophical and practical issue in play here: many
large/complex software projects choose embedded dependencies both as a way
to achieve a sane test matrix and as a way of exercising required control
over patches / bug fixes in dependencies. As you start to unroll this it
gets harder and harder to keep up (i.e. you could package GWT but then it
in turn has a bunch of embedded dependencies, you could package those as
well but then you get further off of being able to track to the latest GWT
release or even to GWT trunk). Net: it's really hard for a large product
developed by a small team like RStudio to take all dependencies dynamically
without either (a) Escalating the engineering and testing cost
unacceptably; or (b) Making it so folks running RStudio on mainstream
distros aren't stuck running much older versions of the product.

As an example, we recently migrated from Qt 4.7 to Qt 5.4 to get
dramatically improved UI performance. We found that we were unable to run
against Qt 5.1, 5.2, and 5.3 for various reasons (some missing features,
some difficult to track down bugs). We made the move to Qt 5.4 and can now
support that on Ubuntu 12.04+. Had we not been using embedded dependencies
though we actually couldn't even support Ubuntu 14.04 (since it includes Qt
5.2). It's not acceptable to most customers to run Debian testing just to
use the latest version of RStudio. In fact, just moving to Qt 5 would have
forced us to drop Ubuntu 12.04. This would have been a complete non-starter
so we'd need the product to compile and run correctly against BOTH Qt 4 and
Qt 5. Not impossible (QtCreator does it) but a large cost for a small team.
The same thing will be playing out again with Qt 5.6 where we'll move to
using QtWebEngine (Chromium). It's just too much for us to maintain two
versions of the code (one that supports QtWebKit and one that supports
QtWebEngine) and much, much better for customers to run against the faster
Chromium engine.

Again, I applaud your efforts but I think that you'll find you need to
maintain your own branch of a heavily modified RStudio in order to
sustainably keep it packaged for Debian. We'll ultimately take this work on
ourselves once we feel that dependencies are sufficiently stable (likely
after Qt 5.6 this winter).

J.J.

On Sun, Sep 27, 2015 at 7:57 AM, Tareef Kawaf <tar...@rstudio.com> wrote:

> Hi Bertrand,
> I am forwarding this along to our engineering team.  For now
> i...@rstudio.com might be the best way to communicate with us.
> Will let you know what I find and how easy it would be to implement
> Tareef
>
> On Sunday, September 27, 2015, Bertrand Marc <beberk...@gmail.com> wrote:
>
>> Dear Rstudio developpers,
>>
>> First of all, thank you for your great work on Rstudio.
>>
>> I am trying to package rstudio for Debian (so it would be accessible for
>> all Debian/user easily). But to achieve this, I need to exclude every
>> third party from the build process, and force Rstudio to use system
>> libraries, jars and other external dependencies [1]. So far, I tweaked
>> src/cpp/session/CMakeLists.txt [2], but this is only the beginning. I
>> would need a way to keep your code and exclude third party code from
>> /home/bbk/linux/rstudio/src/cpp/session/resources or in src/gwt for
>> instance. And then I need to make sure Rstudio uses system dependencies.
>> I think the best way to achieve this would be (an) option(s) to pass at
>> configure time.
>>
>> Would you be kind enough to help me and point me to right direction ? It
>> would be a great help !
>>
>> Regards,
>> Bertrand
>>
>> PS What is the preferred way to contact you ? Do you have some kind of
>> bug tracker ? I could not find one on github.
>>
>> [1]
>> https://wiki.debian.org/UpstreamGuide#No_inclusion_of_third_party_code
>> [2]
>>
>> http://anonscm.debian.org/cgit/debian-science/packages/rstudio.git/commit/?id=adf3296b9c05757c56ac0f39b093a68a346b3afe
>>
>>

Reply via email to