# Where should I develop my new functionality?

**URL:** <https://datashield.discourse.group/t/where-should-i-develop-my-new-functionality/126>\
**Category:** New functionality\
**Created:** [25 September 2019 19:36 UTC](https://datashield.discourse.group/t/where-should-i-develop-my-new-functionality/126 "2019-09-25T19:36:31Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![tombishop](https://yyz2.discourse-cdn.com/free1/user_avatar/datashield.discourse.group/tombishop/32/23_2.png) [@tombishop](https://datashield.discourse.group/u/tombishop)\
**Post date:** [25 September 2019 19:36 UTC](https://datashield.discourse.group/t/where-should-i-develop-my-new-functionality/126/1 "2019-09-25T19:36:31Z")

</div>

I have been working on the dslmerSLMA function, which currently sits in the DSI branch of the beta test repositories. This is because I believe the next release will be DSI compatible.

Is this the correct home for it? Or should I fork the dsBase(Client) repositories? Or do I contribute to the 5.1 dev branch?

---

<div class="post-metadata">

**Author:** ![yannick](https://yyz2.discourse-cdn.com/free1/user_avatar/datashield.discourse.group/yannick/32/19_2.png) [@yannick](https://datashield.discourse.group/u/yannick)\
**Post date:** [25 September 2019 20:10 UTC](https://datashield.discourse.group/t/where-should-i-develop-my-new-functionality/126/2 "2019-09-25T20:10:45Z")

</div>

FYI I am not maintaining the DSI branch of dsBetaTest\*. I do it only for the dsBase\* repo.

---

<div class="post-metadata">

**Author:** ![tombishop](https://yyz2.discourse-cdn.com/free1/user_avatar/datashield.discourse.group/tombishop/32/23_2.png) [@tombishop](https://datashield.discourse.group/u/tombishop)\
**Post date:** [26 September 2019 08:18 UTC](https://datashield.discourse.group/t/where-should-i-develop-my-new-functionality/126/3 "2019-09-26T08:18:33Z")

</div>

Thanks Yannick. So that would suggest that I should be developing on dsBase\*. But we need to work out whether I should be just editing the DSI branch or something else…

---

<div class="post-metadata">

**Author:** ![olly](https://yyz2.discourse-cdn.com/free1/user_avatar/datashield.discourse.group/olly/32/33_2.png) [@olly](https://datashield.discourse.group/u/olly)\
**Post date:** [27 September 2019 11:56 UTC](https://datashield.discourse.group/t/where-should-i-develop-my-new-functionality/126/4 "2019-09-27T11:56:36Z")

</div>

Hi Tom,

It depends on the timescale for the release of this function. DS 5.1 will go out in the next couple of weeks. This release is a minor functionality update - couple of bug fixes and one new function at the minute. It does not include DSI.

The DSI release will happen next, and hopefully by Christmas.

If you want to include it in the 5.1 release then ‘downgrade’ your code and do a pull request for dsBase\* 5.1-dev branches. If you want to wait for DSI then I need to have a little think about how we manage the branches.

I think @paul might have an opinion on which one this should go in!

---

<div class="post-metadata">

**Author:** ![tombishop](https://yyz2.discourse-cdn.com/free1/user_avatar/datashield.discourse.group/tombishop/32/23_2.png) [@tombishop](https://datashield.discourse.group/u/tombishop)\
**Post date:** [27 September 2019 12:30 UTC](https://datashield.discourse.group/t/where-should-i-develop-my-new-functionality/126/5 "2019-09-27T12:30:37Z")

</div>

Hi Olly,

I think realistically it will not be ready in the next few weeks, so the DSI release does look more likely. Also given that I have discovered that in the full parser a pipe symbol causes issues I need to write my own encode and decode for mixed model formulae to get them passed from client to server:

> [@Pipes and DataSHIELD parser](https://datashield.discourse.group/t/pipes-and-datashield-parser/127/4):
>
> Hi @tombishop The only way that I can think, without changing the parser, is to send the separate variables in the serverside and then create the formula there (as I said also for polynomial regression): For example instead of trying to pass the argument formula=“bmi.26 ~ noise.56 + female + (1|id)” you can pass three different arguments, e.g. formula.for.fixed.effects=“bmi.26 ~ noise.56 + female”, random.effects.before.the.pipe=“1”, random.effects.after.the.pipe=“id” (I know that these names …

So I will work on that and then we can work out how to bring it all together

Tom
