<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div dir="auto">I understand from Alessio's message that 2.7 already pins versions properly in install_requires, which I am glad for.<br><br></div>
<div dir="auto">pipenv looks like it could be a nice tool, and pipfile looks like a reasonable way to replace requirements.txt, especially for cases where you want hash checking. I see no reason GeoNode or anyone else should not use it, if it is mature and its features are wanted.<br><br></div>
<div dir="auto">However, I believe adoption of this tool stands alone as a new issue, since it does not solve strictly the same problem as reliable version pins in <a href="http://setup.py">setup.py</a> install_requires - the problem of making a package that is user-friendly as consumed from PyPI in any of the normal ways, not only pipenv.<br><br></div>
<div dir="auto">Everyone who runs pip install geonode should get a working package, that also will not stop working if a dependency introduces a breaking change - whether or not they use pipenv, and I can already see use cases where one might not, even if it eventually becomes a Schelling point like <a href="http://setup.py">setup.py</a> and pip and install_requires.<br><br></div>
<div dir="auto">I think having the package work well from PyPI is one important part of encouraging code sharing... in contrast with making yet another fork of GeoNode and editing it in place until it becomes hard to rebase on upstream geonode, and then eventually it has diverged so far that nobody would be willing to pay for the annoying reconciliation. Maybe we can't fix all the institutional barriers to sharing, but we can remove excuses for developers.<br><br></div>
<div dir="auto">That is why I am personally glad this was thoughtfully fixed in 2.7 - thanks.<br><br></div>
<div dir="auto">Sasha</div>
<div class="gmail_quote" >On Oct 21, 2017, at 9:30 AM, Francesco Bartoli <<a href="mailto:xbartolone@gmail.com" target="_blank">xbartolone@gmail.com</a>> wrote:<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
A more sophisticated approach would be to follow the recommendations from Python Packaging Authority and evolve our workflow to be adapted with Pipfile and Pipfile.lock [1] which would mean to going forward and using pipenv [2] rather than pip. The lock file would produce a deterministic build for releases because at the end it uses sha256 hashes for each package [3].<div><br></div><div>But I think that would be worth having it discussed and accepted by all developers. I’ve never used it, looks promising though. <br><div><br></div><div>[1] <a href="https://github.com/pypa/pipfile">https://github.com/pypa/pipfile</a></div><div>[2] <a href="https://docs.pipenv.org/">https://docs.pipenv.org/</a></div><div>[3] <a href="https://docs.pipenv.org/basics.html#pipfile-lock-security-features">https://docs.pipenv.org/basics.html#pipfile-lock-security-features</a></div><div><br></div><div>Francesco</div><div><br><div><div>Il giorno 20/ott/2017, alle ore 10:15, Alessio Fabiani <<a href="mailto:alessio.fabiani@geo-solutions.it">alessio.fabiani@geo-solutions.it</a>> ha scritto:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div dir="ltr">+1<div><br></div><div>Already like this in GeoNode 2.7+</div><div><br></div><div><a href="https://github.com/GeoNode/geonode/blob/master/requirements.txt">https://github.com/GeoNode/geonode/blob/master/requirements.txt</a><br></div><div><br></div><div><a href="https://github.com/GeoNode/geonode/blob/master/setup.py">https://github.com/GeoNode/geonode/blob/master/setup.py</a><br></div><div><br></div><div><br></div></div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><div dir="ltr"><div style="font-size:12.8px"><span><div style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size:11pt;font-family:Arial;vertical-align:baseline;white-space:pre-wrap">Regards,</span></div><div style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size:11pt;font-family:Arial;vertical-align:baseline;white-space:pre-wrap">Alessio Fabiani</span></div><div style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size:11pt;font-family:Arial;vertical-align:baseline;white-space:pre-wrap">==</span><span style="font-size:11pt;font-family:Arial;vertical-align:baseline;white-space:pre-wrap"><br></span><span style="font-size:11pt;font-family:Arial;vertical-align:baseline;white-space:pre-wrap">GeoServer Professional Services from the experts! Visit <a href="http://goo.gl/it488V" target="_blank">http://goo.gl/it488V</a> for more information.</span><span style="font-size:11pt;font-family:Arial;vertical-align:baseline;white-space:pre-wrap"><br></span><span style="font-size:11pt;font-family:Arial;vertical-align:baseline;white-space:pre-wrap">==</span><span style="font-size:11pt;font-family:Arial;vertical-align:baseline;white-space:pre-wrap"><br></span><span style="font-size:11pt;font-family:Arial;vertical-align:baseline;white-space:pre-wrap"><br></span><span style="font-size:11pt;font-family:Arial;vertical-align:baseline;white-space:pre-wrap">Ing. Alessio Fabiani</span></div><div style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size:11pt;font-family:Arial;vertical-align:baseline;white-space:pre-wrap">@alfa7691</span><span style="font-size:11pt;font-family:Arial;vertical-align:baseline;white-space:pre-wrap"><br></span><span style="font-size:11pt;font-family:Arial;vertical-align:baseline;white-space:pre-wrap">Founder/Technical Lead</span></div><div style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size:11pt;font-family:Arial;vertical-align:baseline;white-space:pre-wrap"><br></span><span style="font-size:11pt;font-family:Arial;vertical-align:baseline;white-space:pre-wrap">GeoSolutions S.A.S.</span><span style="font-size:11pt;font-family:Arial;vertical-align:baseline;white-space:pre-wrap"><br></span><span style="font-size:11pt;font-family:Arial;vertical-align:baseline;white-space:pre-wrap">Via di Montramito 3/A</span><span style="font-size:11pt;font-family:Arial;vertical-align:baseline;white-space:pre-wrap"><br></span><span style="font-size:11pt;font-family:Arial;vertical-align:baseline;white-space:pre-wrap">55054  Massarosa (LU)</span><span style="font-size:11pt;font-family:Arial;vertical-align:baseline;white-space:pre-wrap"><br></span><span style="font-size:11pt;font-family:Arial;vertical-align:baseline;white-space:pre-wrap">Italy</span><span style="font-size:11pt;font-family:Arial;vertical-align:baseline;white-space:pre-wrap"><br></span><span style="font-size:11pt;font-family:Arial;vertical-align:baseline;white-space:pre-wrap">phone: +39 0584 962313</span><span style="font-size:11pt;font-family:Arial;vertical-align:baseline;white-space:pre-wrap"><br></span><span style="font-size:11pt;font-family:Arial;vertical-align:baseline;white-space:pre-wrap">fax:     +39 0584 1660272</span><span style="font-size:11pt;font-family:Arial;vertical-align:baseline;white-space:pre-wrap"><br></span><span style="font-size:11pt;font-family:Arial;vertical-align:baseline;white-space:pre-wrap">mob:   +39 331 6233686</span><span style="font-size:11pt;font-family:Arial;vertical-align:baseline;white-space:pre-wrap"><br></span><span style="font-size:11pt;font-family:Arial;vertical-align:baseline;white-space:pre-wrap"><br></span><span style="font-size:11pt;font-family:Arial;vertical-align:baseline;white-space:pre-wrap"><a href="http://www.geo-solutions.it/" target="_blank">http://www.geo-solutions.it</a></span><span style="font-size:11pt;font-family:Arial;vertical-align:baseline;white-space:pre-wrap"><br></span><span style="font-size:11pt;font-family:Arial;vertical-align:baseline;white-space:pre-wrap"><a href="http://twitter.com/geosolutions_it" target="_blank">http://twitter.com/geosolutions_it</a></span><span style="font-size:11pt;font-family:Arial;vertical-align:baseline;white-space:pre-wrap"><br></span><span style="font-size:11pt;font-family:Arial;vertical-align:baseline;white-space:pre-wrap"><br></span><span style="font-size:11pt;font-family:Arial;vertical-align:baseline;white-space:pre-wrap">-------------------------------------------------------</span></div><div style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size:11pt;font-family:Arial;vertical-align:baseline;white-space:pre-wrap">AVVERTENZE AI SENSI DEL D.Lgs. 196/2003</span></div><div style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size:11pt;font-family:Arial;vertical-align:baseline;white-space:pre-wrap">Le informazioni contenute in questo messaggio di posta elettronica e/o nel/i file/s allegato/i sono da considerarsi strettamente riservate. Il loro utilizzo è consentito esclusivamente al destinatario del messaggio, per le finalità indicate nel messaggio stesso. Qualora riceviate questo messaggio senza esserne il destinatario, Vi preghiamo cortesemente di darcene notizia via e-mail e di procedere alla distruzione del messaggio stesso, cancellandolo dal Vostro sistema. Conservare il messaggio stesso, divulgarlo anche in parte, distribuirlo ad altri soggetti, copiarlo, od utilizzarlo per finalità diverse, costituisce comportamento contrario ai principi dettati dal D.Lgs. 196/2003.</span></div><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:11pt;font-family:Arial;vertical-align:baseline;white-space:pre-wrap"> </span></p><div style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size:11pt;font-family:Arial;vertical-align:baseline;white-space:pre-wrap">The information in this message and/or attachments, is intended solely for the attention and use of the named addressee(s) and may be confidential or proprietary in nature or covered by the provisions of privacy act (Legislative Decree June, 30 2003, no.196 - Italy's New Data Protection Code).Any use not in accord with its purpose, any disclosure, reproduction, copying, distribution, or either dissemination, either whole or partial, is strictly forbidden except previous formal approval of the named addressee(s). If you are not the intended recipient, please contact immediately the sender by telephone, fax or e-mail and delete the information in this message that has been received in error. The sender does not give any warranty or accept liability as the content, accuracy or completeness of sent messages and accepts no responsibility  for changes made after they were sent or for other risks which arise as a result of e-mail transmission, viruses, etc.</span></div></span></div></div></div></div></div></div></div></div>
<br><div class="gmail_quote">On Fri, Oct 20, 2017 at 12:50 AM, Jeremiah Cooper <span dir="ltr"><<a href="mailto:jcooper@jeremiahcooper.com" target="_blank">jcooper@jeremiahcooper.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>+1 to this.  MapStory has seen these breaking changes as well.  Pinning everything would help alleviate having to track down which dependency broke the build every time it happens.  It's happened several times just in the past few weeks.</div><div><br></div><div>Thanks.</div><div><br></div><div>Jeremiah Cooper<br></div><br></div><div class="gmail_extra"><br><div class="gmail_quote"><div><div class="h5">On Thu, Oct 19, 2017 at 5:54 PM, Travis Brundage <span dir="ltr"><<a href="mailto:tbrundage@boundlessgeo.com" target="_blank">tbrundage@boundlessgeo.com</a>></span> wrote:<br></div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5"><div dir="ltr">Hi all,<div><br></div><div>Recently I have seen some core GeoNode behaviour breaking due to changes in our dependencies. This isn't the first time it's happened. What happens is that we have many dependencies pulling in the latest version via >= in our requirements, but something changes which conflicts with current technology or otherwise is broken, causing core GeoNode to break as well.</div><div><br></div><div>In addition, I'd like for us to have consistency in regards to GeoNode and its sub projects in pypi. Establishing the pypi repo as consistent with the official repos for the dependencies will ensure changes are visible and (hopefully) reviewed. This will help at least partially with preventing broken dependencies. One possibility is introducing some automation here through a continuous integration tool, so there are regular builds to pypi straight off the repos in GeoNode. This method may help establish a consistent cycle and also ensure we're diligent about quality in changes to the code.</div><div><br></div><div>For the dependencies breaking, we can start pinning versions in our requirements (that is, using == instead of >= in requirements.txt). The upside of this is we will have consistent, expected behaviour that won't change due to updates. The downside of this is we won't necessarily have the most recent versions of dependencies, which we will want to occasionally update. I feel pinning versions makes sense, but we should make sure to update dependencies regularly. Before making this change, we should check what versions are actually being used and working with GeoNode, as >= will pull later versions, so simply doing a find+replace of >= to == won't be correct.</div><div><br></div><div>Cheers,</div><div>Travis<span class="m_7925560424878284089HOEnZb"><font color="#888888"><br clear="all"></font><div><font color="#888888"><br></font></div><font color="#888888">-- <br></font><div class="m_7925560424878284089m_-2152115113677070337gmail_signature" data-smartmail="gmail_signature"><font color="#888888"></font><div dir="ltr"><font color="#888888"></font><div dir="ltr"><font color="#888888"></font><div dir="ltr"><font color="#888888">Travis Brundage</font><div><font color="#888888">Software Engineer | Boundless</font></div><div><font color="#888888"><a href="mailto:tbrundage@boundlessgeo.com" target="_blank">tbrundage@boundlessgeo.com</a></font></div><div><font color="#888888"><a href="tel:(250)%20888-2820" value="+12508882820" target="_blank">250.888.2820</a></font></div><div><font color="#888888">@boundlessgeo</font></div><div><font color="#888888"><img src="http://boundlessgeo.com/wp-content/uploads/files/boundless_sig.png"><br></font></div></div></div></div></div></span></div></div>
<br></div></div>______________________________<wbr>_________________<br>
geonode-devel mailing list<br>
<a href="mailto:geonode-devel@lists.osgeo.org" target="_blank">geonode-devel@lists.osgeo.org</a><br>
<a href="https://lists.osgeo.org/mailman/listinfo/geonode-devel" rel="noreferrer" target="_blank">https://lists.osgeo.org/mailma<wbr>n/listinfo/geonode-devel</a><br>
<br></blockquote></div><br></div>
<br>______________________________<wbr>_________________<br>
geonode-devel mailing list<br>
<a href="mailto:geonode-devel@lists.osgeo.org">geonode-devel@lists.osgeo.org</a><br>
<a href="https://lists.osgeo.org/mailman/listinfo/geonode-devel" rel="noreferrer" target="_blank">https://lists.osgeo.org/<wbr>mailman/listinfo/geonode-devel</a><br>
<br></blockquote></div><br></div>
_______________________________________________<br>geonode-devel mailing list<br><a href="mailto:geonode-devel@lists.osgeo.org">geonode-devel@lists.osgeo.org</a><br>https://lists.osgeo.org/mailman/listinfo/geonode-devel<br></blockquote></div><br></div></div><pre class="blue"><hr><br>geonode-devel mailing list<br>geonode-devel@lists.osgeo.org<br><a href="https://lists.osgeo.org/mailman/listinfo/geonode-devel">https://lists.osgeo.org/mailman/listinfo/geonode-devel</a><br></pre></blockquote></div></body></html>