From a03a2b597ff0c5a2be5ceaac05f96c5709564daa Mon Sep 17 00:00:00 2001 From: Veronica Andreo Date: Wed, 5 Jun 2024 10:19:32 -0400 Subject: [PATCH] FOSS4G EU 2024: start drafting the presentation --- foss4gEU2024.html | 796 ++++++++++++++++++++++++++++++++++++++++ img/Veronica_Andreo.jpg | Bin 0 -> 29695 bytes index.html | 4 +- 3 files changed, 798 insertions(+), 2 deletions(-) create mode 100644 foss4gEU2024.html create mode 100644 img/Veronica_Andreo.jpg diff --git a/foss4gEU2024.html b/foss4gEU2024.html new file mode 100644 index 0000000..0463137 --- /dev/null +++ b/foss4gEU2024.html @@ -0,0 +1,796 @@ + + + + + + + + GRASS GIS: Not What You Think + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+

State of GRASS GIS: The 40's and the identity crisis

+

+ + Veronica (Vero) Andreo + +

+

+ NCSU GeoForAll Lab + at the + Center for Geospatial Analytics +
+ NC State University +

+ +

FOSS4G Europe, Tartu, July 1-7, 2024

+

+ veroandreo.github.io/grass-gis-talks +

+ + +
+

Vaclav (Vashek) Petras

+
    +
  • Research Software Engineer at NC State's Center for Geospatial Analytics +
  • BS & MS in Geoinformatics, Czech Technical University in Prague, + PhD in Geospatial Analytics, NC State +
  • GRASS GIS: Development Team, Project Steering Committee +
+ +
+ + +
+

About the presenter...

+
+ +

https://veroandreo.gitlab.io/

+
+ + +
+

Community

+ Big thanks to the whole community! +
+ + +
+ + +
+

What is GRASS GIS?

+
+ + +
+

That's something about grazing, no?

+ +
+ + +
+

Grassy the Hungry Cow

+
+         -----------------------------------
+        | I'm always hungry for more GRASS! |
+         -----------------------------------
+                \   ^__^
+                 \  (oo)\_______
+                    (__)\       )\/\
+                        ||----w |
+        _\|/__\|/__\|/_ ||     ||  _\|/__\|/_
+    
+

+ Thanks to cowsay. +

+
+ + +
+

It's not about smoking weed?

+ +
+ + +
+

FOSS4G 2006 Conference

+

+ Lausanne, Switzerland, September 2006 +

+
+ It was a great success. It was the first joint conference that brought together the different FOSS4G "tribes", + merging the GRASS Users conference series, with the Mapserver, EOGEO and Java developers meetings. +
+ + — + Mitasova (2006): FOSS4G 2006 Conference: The meeting of the tribes + in GRASS / OSGeo-News + +
+
+ + +
+

GRASS GIS is command-line only, no?

+ +
+ + +
+

GRASS GIS is only a desktop GIS, no?

+ +
+ + +
+

Interface options

+
+ + +
+

Python

+ Python API comes with GRASS GIS. +
+ +
+ +
+

R

+ rgrass package to use GRASS GIS from R is on CRAN. +
+ +
+ + +
+

QGIS

+ GRASS tools are available through the Processing Plugin
(GUI and Python). +
+ +
+ + +
+

Command Line

+
    +
  • Interactive shell
  • +
  • One-time execution or batch usage with --exec
  • +
+
+ +
+ + +
+

Cloud

+
    +
  • CLI
  • +
  • Python
  • +
  • actinia
  • +
  • OpenPlains
  • +
+
+ +
+ + +
+

Graphical User Interface

+
+ + +
+

No startup screen

+ Startup screen was a stumbling block for many first-time users. + +
+ + +
+

Project Loaded on Start

+ Desktop GRASS GIS starts with a project loaded
(last-used or default). + +
+ + +
+

Streamlined Data Management

+ New Data tab is a central place to manipulate data in a project. + +
+ + +
+

Location is Becoming a Project

+
    +
  • + /home/joanna/grassdata (database directory, path) +
      +
    • + maryland (location → project) +
        +
      • new_highway (mapset, sub-project) +
      +
    • +
    +
  • +
+
+ + +
+

Multiple windows

+ Multiple windows was the only option. +

+ Still available as before, but… +

+ +
+ +
+

Single-window Interface

+ Now single-window interface is the default. + +
+ + +
+

Happy 40th birthday, GRASS GIS!

+ +
+ + +
+

Time to clear up some misconceptions related to age

+
+ + +
+

Funding

+
+ + +
+

It’s been around for long, so it must be well-funded

+
+ + +
+

How people imagine a GRASS developer

+
+ Person at a table working on laptop with file cabinets or submitted and funded proposals +

+ + Well-funded professor thinking about new algorithms + +

+
+ + +
+

The real GRASS developer

+
+ Person at a table working on laptop and two shouting children +

+ + Busy parent debugging some code + +

+
+ + +
+ +

+ + When I made the image + +

+
+ + +
+

NSF grant lead by NC State

+
    +
  • NSF grant awarded to NC State, ASU, NMSU, Yale
  • +
  • to enhance infrastructure
  • +
  • to revise contributing guidelines
  • +
  • to support community building
  • +
+

Note: The NSF program is aiming at sustainability, not adding features or fix bugs.

+ +
+ + +
+

New Funding Options on OpenCollective

+
    +
  • + Donation (one-time, any amount), Supporter starts at 10 USD/month, Sponsor starts at 500 USD/year + +
  • +
  • + Feedback? Talk to me about being part of the solution! +
  • +
  • + T-shirt fundraiser test: Ask me after the talk for details! +
  • +
+ +
+ + +
+ +
+ + +
+

Releases

+
+ + + +
+

There are no new releases, or?

+
    +
  • + 8.3.1 Current, October 2023 + Current version for everyday user +
  • +
  • + 8.4.0 Preview, Daily + Latest reviewed functional code +
  • +
  • + 7.8.8 Legacy, August 2023 + Maintained legacy version for some production systems +
  • +
+
+ +
+ + +
+

Minor Releases Bring New Things: T or F?

+
+ + +
+

Minor Releases

+
    +
  • major.minor.micro +
      +
    • micro (x.y.z) brings fixes,
    • +
    • minor (x.y) brings features,
    • +
    • major (x) brings features and possibly backward incompatible changes
    • +
    +
  • +
+
+ +
+ + +
+

Code

+
+ + +
+

C and C++ Code Quality

+
    +
  • Issues reported by GCC and Clang such as dangling-else, discarded-qualifiers, format, … fixed.
  • +
  • Even more to come in 2024.
  • +
+
+ +
+ + +
+

Python

+
    +
  • Code formatted with Black.
  • +
  • Flake8 enabled, 2/3 fixed.
  • +
  • Pylint partially enabled.
  • +
  • Aiming at close-to-default configuration for 2024.
  • +
+
+ +
+ + +
+

Features

+ Features long-requested from industry now available and mature + (and usually overlooked by desktop users). +
+ + +
+

Managing GRASS session in Python

+ Revamped GRASS session makes it easier to use GRASS tools from Python. +
+ +
+ + +
+

Command line batch mode with --exec

+ Streamlined usage of GRASS tools through system calls. +
grass /grassdata/nc_spm/work1 --exec \
+        r.viewshed input=elevation \
+        output=viewshed coordinates=642964,222890
+    
+
+ + +
+

Command Line Description with --json

+
    +
  • Translates command line parameters to JSON.
  • +
  • Used by actinia to integrate with GRASS GIS.
  • +
  • Seeking feedback for other use-cases.
  • +
+
r.viewshed \
+        input=elevation \
+        output=viewshed \
+        coordinates=642964,222890 \
+        --json
+    
+
+ + +
+

Data Analytics Workflows

+ See the separate talk! +

+ Caitlin Haedrich
+ Computational Notebooks for Reproducible Geospatial Computation in Research and Education
+ October 25
+ 2:00 – 2:30 PM
+ Poe Room
+

+ + +

+ tinyurl.com/grass-jupyter-8-2 +

+
+ + +
+

Community Meeting 2023

+ GRASS GIS birthday celebrated by advancing CMake build, 8.3.0 release, … +
+ + grass.osgeo.org > News > Report of the GRASS GIS Community Meeting in Prague + +
+ + +
+

Mentoring and Student Grants Program

+ + +
+ + +
+

Join a Working Group

+
    +
  • + Groups: +
      +
    • geoprocessing engine
    • +
    • being a good neighbor in open source ecosystem
    • +
    • documentation
    • +
    • community engagement and promotion
    • +
    +
  • +
  • See wiki for details!
  • +
+ +
+ + +
+ GRASS GIS logo +

+ + Ask a question, get a special sticker. + +

+

+ + vpetras@ncsu.edu, + @vaclavpetras, @wenzeslaus +
+ + wenzeslaus.github.io/grass-gis-talks + +
+

+
+ + +
+
+ + + + + + + + + + diff --git a/img/Veronica_Andreo.jpg b/img/Veronica_Andreo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..20f902448b6de3f810470ca5e5446cd8288cf7ac GIT binary patch literal 29695 zcmbTd1z4QT(k48(1PKK900}aAi&Ch!w3rw9)JkT&5fM_*f5L&!+kJ%3B!M+jKK&O z#{WmoA0mN6`d2;&!=!)l8Vu9_<$;G`c353XSiTD*4j9IR<*2aAui*bnj^&SkbR&b6 zzsN=TmkyTp_J9$XVyORmB-P$)h)DqeVsf&~vK;&XNtl#B8vHx|TTaE!#`5Q3=jWjR z$i>Ma#;?q-$jJa}nT>-(fQ?gtgN=%vM}V7MfSV7%2*8Be}nOR z$D#oK@P@*0bnHLxG#Z9u{^DOS9Qzk%!Z0B7uU+hHY;drGKeGQ2d?wnz@@Uu}2>*eR zGXHsZ6|lO5+5h!j0di3O#s5bn++X}JS-Jlq^Dl<601*BIBj*0|ofN_! z2M@}BVATJ>X#auH{{v(E2maF@YQ_T`U?5qr4~9))^q)P1Lx7!MfRq2fEi?GbzZ``K zcuDt`%J-`DbK9fJa35qcx1%=Z_O2;vnI^W`B?T zO34U?+5wN_YfKg@&4|T25ofZ)oTQgha$7Z{E_;Gca;-^YHTV3w-<}CN3c< zC9R^Wrmmr>rEOwrW^VD>(#px%#nsK-!!zJ}V9<}?kkHt;pYaKazmk%(b8_?Y3kr*h ztEy|jwRQCkjlVm)x_f&2`UfT^r>19S=jIpIHz1o^+dI2^`_QxVi_5F)o7=lTcEQ13 z<-gNEhW#&g;lS*IM?^$GMEPSE9K0Kh5O5HYUb7?PzE?sqa(G3}@f8*CLrhj>2O15h z@+rQt<2X72E!X-R=pWPmW!e8b!@m9hvh4pd?7!?<0AL`%`ZW#$4nP#}sFEE@5BPtg zTp{I2slMEHY0mc>B?>^Q{ztyjl!^(P*g*%f7l~ici|?jW<$nBPxUdB>?$P}`PS_xo z>~CKkG}-r>!O9{?G!K#j2d#J#RiJD;0_l{}7*jpdx=6tBgEpbt45atPYZ(J&wnW43 zBe}lI#Ao0zepSaJra*_AwWvOH^B+)(lg?|PwHJdSpXT;Yjy}w0QPTOK-c+w>}1Br{m~GvrQ8>$HfI@`VlT zr&?@Za`#84M4b?PTqJREfoz0M|`-{d`xDe3i0AWTk?BrGl1wSr^2T+mh7KlEhhbJtqDm>DV9M*{UoN<(#z*hcV(%a&( z+Wpxnf3Yq1$0hzA2MebzYuB#OFk;=cF6A~bU5C8FB782Q&LF~*Cwehc`aH}jtXe-X zOTh3-sBIqipoqp@9E8`rsg!nISDN zCkaAKbqMX4JvOY4@;Mq0rTLv{(-f7D@)iu*G@!~K0j(H^b4gbbj{kLE7m zin{QM^_(hAozs5gMgubU?TLNdSUsKj`J!9Hz-f^NbaCH?a#W~amoUqSI6*bBJbxtb z!jHSB{CeBXQEfIw9i06(QtmT!RPS+`0W1CFVNayJ{QRge(PmYSJ^VUKwW5A>xKtVTmAc`Dz|ULhfC01i$6LhJF?$asQ)NOPnfrURC zgx{eoCd=nZ9-AF944V7K4?_g;BNliCRUdDWyG1|PV|vg9d+T{X%3qS|3A}T@=bq<+ zX2frb{w}zQn*3@&}L@FBlo*A8_c9mg+&XkRTN+?1W+e?0A2sg7{ z>DEc7a-s7JGJ!AB3O@7q5x^T0T z??oy1gsQM$mpM|tWPVu1(u3T5s5{X6nS)#*qy$L$*rMMM(snmJGCnVtA@I03a3Ul! zA7~xWaBDj?Yq?%9M6=M4(=c@Q`EG!f!q|EfO^ecy`bd%5^hU`%+U=+T&x;KN=rumHpX9_&NBVrvc zBakw){}Gs8rY2`=C;qdz>5Wq<)FLFO=5%YTJAUG}RmVe_j?Z>_bHSn)`=#c(osCiJ z`v)WG$_EL`Ja>r*(a&g?x29gQbCshHp4#N4K2o%PjAsYsAtF>O1C6O0xE}9{(H?<4 zDdpPEiA`DmM}L(xPFa(ZVz(q1tBEⅆ!hM?0x;sr)o<*s)^%Eh#sjw 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 h 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 GRASS GIS Talks - + -

You are being redirected to talk slides.

+

You are being redirected to talk slides.

If you are not redirected automatically after a few seconds, please click on the link above.