We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

Spontaneous growth of the 'geocompx' FOSS4G community

00:00

Formal Metadata

Title
Spontaneous growth of the 'geocompx' FOSS4G community
Title of Series
Number of Parts
156
Author
License
CC Attribution 3.0 Unported:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Identifiers
Publisher
Release Date
Language

Content Metadata

Subject Area
Genre
Abstract
In 2016 two early-career researchers met and discussed the lack of open-access materials related to spatial data analysis with vector and raster geo data in R. A few months later, they started writing a book together which, from the first commit onwards, was done in the open. The book source code was publicly available at GitHub, updated regularly, and reproduced on every commit by continuous integration. Due to this approach, it initially attracted several contributors, one of whom became an author. Writing the book using many FOSS tools allowed us to contribute suggestions, leading to dozens of improvements upstream. The first version of Geocomputation with R (abbreviated to 'geocompr') was completed and published in early 2019. 'Geocompr', started as a two-person book project. However, it not only attracted many readers, but also enabled online discussion through online platforms, such as GitHub and social media. In the last few years, the book has had a few hundred thousand readers online, gained a few official and community translations, and has been used in many academic courses and research papers. We also started working on its second edition and its sibling project: Geocomputation with Python. It became clear that the 'geocompr' name was no longer appropriate for the more multilingual nature of the project, and we started using the 'geocompx' name. We hope it captures the essence of the project: eXchanging information about geocomputation, cross (X) pollination of ideas from one programming language to another, and the possibility of hosting additional content on geocomputation with (X) other languages. Currently, the main entry point for this project is the https://geocompx.org website. It contains links to other books and materials and also hosts a blog with posts related to geocomputation, which is also open to guest writers. The 'geocompx' project is also a Discord server with discussions about various FOSS4G topics, from tools and methods to applications to solve real-life problems. In this talk, we will share our experiences of writing an open access book, show the tools we use, and provide suggestions on how to start to contribute or create FOSS4G materials on your own.
Keywords
127
Streaming mediaInformationFormal languageSeries (mathematics)Data analysisVisualization (computer graphics)Process modelingSource codeSoftwareComputer programmingContent (media)Revision controlMereologyExtension (kinesiology)Hybrid computerData modelFreewareFlynn's taxonomyWebsiteMereologyRight angleHecke operatorCode1 (number)AdditionEndliche ModelltheorieTranslation (relic)Covering spaceProcess (computing)WebsiteInformationCombinational logicNeuroinformatikCausalityProjective planeRevision controlVisualization (computer graphics)Web pageGreatest elementDifferent (Kate Ryan album)Connected spaceResultantMachine learningLevel (video gaming)NumberSoftware frameworkCompilation albumReal numberVideo gameTouchscreenCartesian coordinate systemSoftwareMaterialization (paranormal)Computer animation
Formal languageComputer programmingBlogAttribute grammarData analysisContext awarenessSource codeEvent horizonFocus (optics)Line (geometry)PolygonVector spacePoint (geometry)SatelliteRaster graphicsComputer-generated imageryDifferent (Kate Ryan album)CASE <Informatik>Coefficient of determinationMedical imagingData analysisData structureComputer-assisted translationCodeRepository (publishing)BlogMaterialization (paranormal)Arithmetic meanSelf-organizationNeuroinformatikComputer animation
Data analysisSource codeVector spaceBlogSatelliteSpectrum (functional analysis)Price indexSystem programmingInformationScale (map)Visualization (computer graphics)Mathematical analysisAlgorithmic information theoryAnisotropyPRINCE2Continuous functionRevision controlCollaborationismControl flowDisintegrationGroup actionLink (knot theory)Materialization (paranormal)Translation (relic)Multiplication signElectronic mailing listDirection (geometry)Associative propertyRepository (publishing)Formal languageGame controllerContent (media)Projective planeNumberHypermediaWebsiteDigital photographyAuthorizationMedical imagingTotal S.A.Slide ruleDesktop publishingInformationRight angleRevision controlBand matrixData managementGreen's functionCombinational logicProcess (computing)Source codeGroup actionProbability density functionComputing platformForm (programming)CASE <Informatik>NeuroinformatikCodeTable (information)Open sourceBranch (computer science)Lecture/ConferenceComputer animation
VolumenvisualisierungWebsiteWritingReading (process)Source codeWeb pageBranch (computer science)AuthorizationCodeRepository (publishing)Group actionWebsiteContent (media)MereologyWeb 2.0VideoconferencingComputer animation
State of matterCompilation albumMultiplication signBitStudent's t-testRight angleBuffer overflowDigital photographyBlogSpacetimeDifferent (Kate Ryan album)Materialization (paranormal)Projective planeStack (abstract data type)Mathematical analysisComputer animation
Source codeEmailCommitment schemeMoment (mathematics)Projektive GeometrieOperator (mathematics)Decision theoryArrow of timeProgrammierstilFreewareRevision controlOpen setProjective planeRepository (publishing)Greatest elementVideo gameInfinityBitNeuroinformatikBranch (computer science)MiniDiscDomain nameComputer animation
Source codeContent (media)Open setUniform resource locatorElectronic mailing listLetterpress printingTouchscreenRepository (publishing)Projective planeMultiplication signMedical imagingMathematicsCodeDigital photographyElectric generatorComputer animationMeeting/Interview
Source codeSoftwareSoftware developerMereologyExtension (kinesiology)Computer programmingCyclic redundancy checkSeries (mathematics)Data modelProcess (computing)Formal languageVisualization (computer graphics)System programmingInformationMenu (computing)Time domainSample (statistics)Event horizonSocial softwareBlogData analysisGeometryMoment (mathematics)Projektive GeometrieCycle (graph theory)SoftwareRepository (publishing)Traffic reportingBitOpen sourceBlogLink (knot theory)Domain nameEvent horizonCovering spaceGraph (mathematics)Multiplication signVideo gameProcess (computing)Different (Kate Ryan album)CodeSoftware bugError messageMathematicsProjective planeCompilation albumMaterialization (paranormal)Presentation of a groupFlow separationField (computer science)Formal languageContinuous integrationComputer animation
Mathematical analysisFingerprintComa BerenicesRevision controlConsistencyFeedbackDecision theoryContent (media)Table (information)Internet forumBitMereologyTable (information)Euler anglesView (database)Projektive GeometrieGoodness of fitTime zoneFormal grammarWritingPoint (geometry)Open sourceSoftwareCASE <Informatik>LaptopProjective planeSlide ruleWebsiteInformation technology consultingProcess (computing)Greatest elementRevision controlDifferent (Kate Ryan album)Real numberMultiplication signMaterialization (paranormal)Video gameProbability density functionSimilarity (geometry)ResultantTouchscreenUniverse (mathematics)Computer animation
Table (information)Extension (kinesiology)FingerprintMultiplicationMultitier architectureSingle-precision floating-point formatRaster graphicsConsistencyFeedbackContent (media)Decision theoryHash functionBlogRepository (publishing)Link (knot theory)Source codeTemplate (C++)Meta elementFeedbackData structureNeuroinformatikDecision theoryMultiplication signProjective planeMaterialization (paranormal)CodeBlogProjektive GeometrieWebsiteHypermediaComputing platformMathematicsProbability density function2 (number)Shared memoryTranslation (relic)Student's t-testQuantum electrodynamicsBitNumberForm (programming)Dependent and independent variablesTemplate (C++)Domain nameData conversionSimilarity (geometry)Computer animation
Source codeTemplate (C++)World Wide Web ConsortiumBlogDecision theoryComputer fontFeedbackSign (mathematics)Multiplication signProcess (computing)BitRoundness (object)Data structureChaos (cosmogony)Food energyProjektive GeometriePoint (geometry)Web pageGame controllerCycle (graph theory)Projective planeFeedbackLine (geometry)Different (Kate Ryan album)Computer fontAuthorizationCollaborationismMathematicsDecision theoryTouch typingMessage passingConnected spaceMultilaterationElectronic program guideOperator (mathematics)Dot productComputer fileSimilarity (geometry)Moment (mathematics)Materialization (paranormal)WritingComputer animation
Reading (process)Projektive GeometrieMereologyMathematicsOpen sourceExpert systemField (computer science)Cycle (graph theory)Projective planePresentation of a groupDifferent (Kate Ryan album)AuthorizationRoundness (object)CASE <Informatik>WritingComputer animationLecture/Conference
Computer-assisted translationComputer animation
Transcript: English(auto-generated)
I'm here to tell you a story, and the story will be in three parts. So let's start with the story. So the part one is about here and now. So we are here in Tartu, Estonia, enjoying this conference, and you maybe have one important question right now.
What the heck is geocomplex? And I will try to explain that to you in the next few minutes. So the idea behind geocomplex, or at least the last the combination of the geocomplex
and the letter X is about exchanging information about your computation. So geocomplex is about your computation, and then we want to exchange information. We want to work with different ideas and learn from each other and connect and work together.
And also we want to deliver new materials, cause them, allow people to learn. And X is also open, so it gives the idea that geocomplex can be done with different tools, with different frameworks, and opens the whole idea fairly well.
For our project, we have a main website. So this is geocomplex.org that you can see here. And the website already shows you probably the most important part of our project. So we, in this project, are obsessed about writing books, which maybe sounds strange.
And the first book we wrote is a book called Geocomplex with R. Actually we finished the second edition a month ago. So a month ago we sent the final version of the second edition of the book.
It will be published, I think, on January 2nd, 2025. And the whole idea behind the book is to just give the foundation for a person that wants to learn about your computation, but also about doing that in a reproducible manner.
So we go from foundations, where we show people how to think about spatial data, how to read the data, how to operate the data, and then we are going to more advanced
topics like advanced visualization, like connection to other GIS software, and also how to do statistical or machine learning with spatial data. And the final, the last part, called applications, is about how to apply the knowledge from the previous chapters into real-life scenarios.
So we have three chapters about transportation, about geomarketing, and about ecology that applies the knowledge from the previous chapters. I already mentioned the book is reproducible. So all of the code in the book gives the result you can see on the screen, and the code actually runs.
And the other maybe interesting thing is that the book is published in a so-called hybrid model. So on the one hand, there is an online version of this book, updated regularly at r.geocompx.org, and there is also a published traditional paper version of the book,
or at least for the first edition, that will be the second edition fairly soon. So we try to have something from both worlds. And this is our book cover for the second edition.
So the book cover also was done in, I would say, not a regular manner. We basically started a competition. We asked people to submit their ideas. But the whole ideas were submitted as also a reproducible code. So the whole book cover was created in a code that downloads the data, calculates
something, visualizes the data, and we decided that this was the winner of our competition. On the right, you can see an example of one page from the book, from the online version. So you can see the code on the top, and then you can see the outcomes of the code
on the bottom. So the first edition of Geocompxation with R was published five years ago in 2019. But it's not only the book. We also have additional websites with solutions to the book.
So each chapter ends with several exercises. And there is additional website where you can go and you can see the exercise of the question, see the code, how to solve it, and also see what's the outcome of running
this code. Is it a map or is it a number or is it something different there? Also for the book, we created a few R packages. One package called Geocomp-PKG is about just simplifying installation process for the readers.
So we just need to install this package and it will install all of those dependencies you need to just try the code from the book. And as for examples, so the data examples in the book, we created another two packages, SP data and SP data large.
So those packages are only fulfilled with data that are used throughout the book. I mentioned the book was published in 2019, and since then, we've got several translations. So the first one, you can see the cover here, is a translation in Korean.
But we also have official or community translations in Japanese, in Spanish, in French, and in Chinese. So those in blue are the community ones that you can also go online and read online and maybe contribute to.
After a few years, we started thinking about going broader. So we started to think about, okay, so maybe let's also provide some materials for Python. So we started working on another book with a very similar name. And basically the whole structure of the book follows computation with R. The only difference
is that we are just showing examples in Python. And this, I think, has, like, nice feature that you can compare in so many cases, you can compare the code. You can see how the same thing can be done in R and how the same thing can be done
in Python. So if you understand the concepts, you can just see the code, and I hope it will be helpful. Maybe one side note. This is not the final book cover. I just wrote, I think, maybe early chart GPT was the most different from Python, and
the answer was either a dog or a cat. So I just looked for an image of a dog and a cat. And using the same principles, the book is available online at py.geocompx.org, and it
also will be published. I was even writing some code today. We are doing some final polishing. I hope it will be published next year, but, you know, hard to tell. But this is not the end of the geocompx. We also have blog posts. So here you have an example of a blog post which is bilingual, meaning you have the same
code in R and Python, and you can compare different examples of like a basic spatial data analysis, and you can get the sense that they're actually fairly similar. It's not like we are working in totally different worlds.
The concepts are very similar. And what I really like about the blog is that the blog posts are not only written by me, but they're written by other people who just want to share their knowledge or want to share stuff they learned or maybe stuff they create.
Next we have all of the things you've seen already. We store them on GitHub organization, so we have several repositories you can see here. You can visit. I'm not going to mention that in the detail, but you also have a Docker repository to
just have the consistent images to use in our work. Next, we have a Discord. So there we have more than 400 members, and they are asking questions about spatial data, they have some discussions, they share some links or other materials.
We also try to be active on social media to just share the materials and show people what can be done and where they can find information.
And the title of my talk is spontaneous growth. And by spontaneous, I mean that for me, it was fairly surprising, and I have very little
control over it. I am usually a control freak, so that's a strange place to be, but for this talk, I tried to look for some numbers to just sum up the impact of the project.
So I just checked the readers of the online version in the last 12 months, and in total, for the two books and the website, it was more than 100,000 people. We've got 1,800 stars on GitHub. We have more than 250 citations of the books, and we are used in various courses and workshops
all over the world. And you can hopefully see that the list goes on and on and on. I don't have enough slides for that. So maybe this is a good time to tell exactly who the team is, who is working
on that. And here on this photo, you can see the three authors of our book. So on the left, you can see Robin Lovelace from the University of Leeds. And in the center of the image is Jan Esmancio from Synchro, from the company called Synchro.
And the person on the right is me from six years ago or so. So maybe that's a good time to introduce myself. So once more, hello, I'm Jakub. I am an associate professor at Adam Mickiewicz University in Pozna in Poland, and this
is the thing I do in both my work time and my after time. But with time, talking about time, the team became larger and larger. So for the Python book, we got another two authors, two people who know the tools, they
also know how to share their knowledge, and they like to do that. They like the approach. So we have Michael Dorman, we have Anita Grasser. And as you've seen, we have everything on GitHub, we have a book and website and everything
else. So we also got some contributors. Firstly we've got community translators. So we've got Mireya, we've got Oliver, we've got Baba, that put a lot of effort
their own time just to translate the book into their languages to share the book with people that do not speak English. And then we have, as you can see, a long, long list of direct contributors. So those are the people who actually change something on the website or on the book.
So sometimes it's just fixing a typo. We make a lot of typos, by the way. But often it's also adding some new content. Or maybe removing some content that is outdated. Or maybe improving an image or an example.
Gladly, this is not the end. Because we also have people who open issues on our repositories. So we've got I don't remember the number, like 200 people or maybe more that done that. You can see their GitHub names here on this slide.
So those are the people who also made an impact on the project. Sometimes they just pointed out, oh, this maybe can be improved. Or maybe they have an idea. Just try to do this. So how everything works. So what's the tools what are the tools behind the project?
So the project, when we started the project, when we wrote our book, our tool was R markdown with a package called bookdown. So basically it's just markdown extended to run R code. And bookdown is just a way of how to write an online book.
So you have chapters. You can click on the table of content. You can have the book in HTML. But you also can have this book as PDF. For Python, we moved to a newer platform, newer publishing software called quarto.
So quarto is very similar idea. You write your text and your code in markdown. And then it is rendered in the form of a book in our case. Or it is rendered as a website.
Our website is also built on quarto. What's great about quarto is that quarto allows you to write and run R code, Python code, Julia code. So you can write books not only with one language. Then we use GitHub and GitHub actions extensively.
Because all of the code, all of the website, the books, everything is on GitHub. And every time we make a push to the main branch of the repository, there is a GitHub
action in the background that checks if the code in the book is still okay. So it goes through every almost every example in the book. And give us the green light if everything is fine. Or red light if some example is broken.
And this is often with combination with Docker. So we have Docker images just to simplify and streamline this process. The books are hosted on Netlify. Which was really nice because they allow us to work as an open source project.
So we do not need to pay for the larger bandwidth there. We are using Zotero as the reference manager. And I mentioned we also have some R packages that we use for installing dependencies or for sharing data.
So how it works? I told you I told you I told you the story already in a short video. So the story is very simple. I just type something. I push that to the GitHub repository. And if that's pushed to main, GitHub action starts.
Checks the code. And if everything is good, then the book is updated. The website is updated. Of course, this is a simplified example. Because I only push directly to the main branch when I'm just fixing a typo.
Or just adding one sentence like non-controversial sentence. But when I'm doing something more complex, if I'm adding new content or changing something extensively, then I just create a pull request. And then I ask one of my colleagues to do a review.
So mostly you are not only an author of some part of the book or the website, but you are also helping as a reviewer of other parts. So all of the content is seen by more than one person. Similarly, we have this solution website. And the solution website is run once a week.
So every week on Sunday, the solution website is run for exactly the same purpose. We want to be sure that the code, the solution code, is still correct. That everything works. Given that we are updating the packages, updating the dependencies, and so on.
So we know the current state. I hope that you already know more or less what GeoCompX is. So let's maybe move back in time a little bit. So that's Pozna in Poland.
And the year is 2016. And I was just finishing my Ph.D. And we've got a researcher visiting our department to teach our students. And that person was Robin Lovelace. So we met in 2016.
He came to Poland. And one day after the course, we went for a beer. And in my brain... So after a few beers, I vaguely remember someone took a photo of us. And I spent... I don't know how many hours, but I was unable to find the photo.
So I just prepared one using my graphical skills. So that's me and Robin, more or less, in 2016. So we met. And over the beer, we started talking. And I've been talking to Robin. And I'm writing this book about spatial analysis in R. And Robin was, oh, I also thought about
that for a long, long time. The only difference was that I was writing this book in Polish. And the whole idea of writing something in English was crazy and not achievable. But he was like... Yeah. Right now I'm finishing a large project. But I will get back to you in half a year.
And I was like... Yeah, yeah, yeah. He's just being nice and that's all. And we were after a few beers, so everything is good. And what was our motivation? The motivation was that back then, not so long ago, not that long time ago, it was
really hard to find the comprehensive materials about this topic. You maybe have a blog post here or there or maybe an answer of Stack Overflow here or there. But nothing that goes from the first step to, let's say, a little bit advanced topics. And we also had already we had in our minds that we wanted to have something like that
a few years before. Because we learned from the scraps of different materials. But we wanted to have this comprehensive material. And then I finished my Ph.D. I moved to the U.S. to Cincinnati.
Robin was in Leeds. And I got an email. Oh, hi, Jakub. I'm attaching the draft of the proposal to publisher. Just check it and we'll send it next week. That was actually one of the most surprising emails I've got.
And then we wrote the proposal. We sent out the proposal. Some publishers were interested, some were not. But what we pushed... The idea we pushed from the beginning was that we want to work in the open.
And we want to have the book in the open as well. So we made it clear to every publisher that we don't want to have only the printed version of the book. We also want to have everything online for free. And then we started using R Markdown, we started using Bookdown.
And back then we were using Travis CI. And we had different domains, we had different website names. And we just... We just tried to start the project. So we are now in March 2017.
And you can see this is the first commit I made to the repository in the book. So it's March 7, 2017. So every day before going to my work, I was waking up an hour or two hours earlier. And I was sitting in front of my computer, and I was trying to write the first sentence.
And it was really hard. Because in my mind, if I push something online, people will see that. So people will judge. People will think something about that. Which was fairly scary. Especially for non native speakers.
And then on the bottom you can see my actual first commit. So March 25th. So it took me almost three weeks of every day work to publish the first sentence.
From that moment on, it became just a bit easier. So what were the initial challenges we had? So we started writing the book. We've got some ideas. But the first challenge was, like, what's the infrastructure? So we looked at some other projects similar.
We get some from this project, some from this project. And another challenge was the book structure. I think we proposed to publisher one book structure. And after two months, we totally changed the book structure. We were not happy with that. Another challenge was the code style.
Or the text style. What's the should in R you can use equal assignment as an operator or you can use left or right arrow. So we want to be consistent. So we need to decide on the style. Also what is maybe also strange is that Robin is British.
So we need to decide. Are we using American English? Or British English? So or Polish? So I think we decided not to use Polish. Because, yeah, it probably took Robin a few months to learn. But at the end, strangely, we moved to American English to maybe make my life easier.
Because for me, that would be easier. And Robin was easier to adjust to that. And then we've got a lot of subjective decisions to make. Because we have tons of tools. We have tons of data sets, tons of problems that we solve with spatial data.
But it's impossible to write infinite book. So we need to stop somewhere. We need to focus on something. So there was a lot of decisions. We can include this, but maybe exclude that. This is important. This could be shortened and so on. We also didn't know exactly how to collaborate on that book.
Like, should we push the main branch? Or maybe start by opening issues and having discussions, maybe email each other. So we were learning by doing. We're seeing, oh, this works, this doesn't work. Maybe don't push to main and just break the book for the next week.
And we tried different ways of communicating with each other. So we used GitHub issues. We have one or two public reposts for discussions and for sharing some data sets. But then we used also Gitter. We called each other on Skype, et cetera, et cetera.
Of course, the initial challenge that never ends is writing. You need to sit down and you need to write. So that was March 2017. But now let's maybe change the move to a different location. Now we are in Germany. This is June 2017.
So not that long after. And as I said before, we were working in the open from the first push to the repository. And firstly, it is a great motivator. Because when I write something and I push that, I can see online that the book is growing,
it's getting larger. There's a new image online and so on. So I'm happy with that. But also what we started seeing, but even though this project started from nothing, we can see that some people were started to contribute. So as I mentioned, they were like opening issues, maybe done some suggestions or changes
to the code. So you can see here, this is the list or some print screens of the issues from the repository and pull requests. So both there are around 500 each. And on June 9th, 2017, we've got this.
So this is a pull request from Janes Monchau. And he's suggesting some changes and some new ideas. And we like the ideas. We like his way of thinking.
So we expanded the theme. So this is the photo. This is actual photo. This is not generative AI anymore. Hopefully you can get that. So that was June 2017. But the photo was taken in August 2018.
So this is the first time we met face to face, three of us. We met face to face. So we mostly write... I think we wrote like 85% of the book. Never seeing... Like three of us, we never spend a minute in the same place. So from that moment on, we started working in different places in the world.
We started working together on this book. And when I look at this process in 2017, 2018, 2018, I've seen that this process is basically a cycle.
And a fairly positive, nice cycle. Because we have been writing a book using false tools and different R packages and so on and so on. And as I mentioned, there was always the continuous integration and so on.
So the code was always checked. So try to think about it. Okay. I'm writing code. Everything is great. And next week I'm writing new code. I'm pushing that. And there is an error online.
And this error could be because there were some changes in another tool. So I can look at the changes. And I can maybe discover that there is a bug introduced in other software. So I'm using the software. I'm writing the book based on the software. And I see that this software maybe has a bug.
So I can contribute to this software. I can maybe write a bug report. I maybe can give a suggestion. Because I also try to put myself as a mindset of a learner. So I try to think about, oh, maybe this could be made a little bit simple for people. So maybe I can suggest something. Maybe I can write a small pull request with some code to that software.
And then, again, the bug is solved or maybe the code is improved. And I'm writing the book again. And I'm happy with that. The book is getting larger and larger. And what we discovered after a few months, those software contributors that we contribute
to their repositories and their projects, they started contributing back. So for example, they started adding suggestions. Or maybe if we wrote something that was maybe not totally accurate, they were correcting us. Or maybe they were even writing small paragraphs.
So they were giving back to our project. And then, again, we're writing the book using those tools. And then we started having more and more external contributors. So this is the cycle I've been seeing for the last seven years.
That we are creating something which impacts software, which impacts our book, which impacts people, that impacts the book, and so on and so on. So this is the cycle I really like. And I initially called it an open source cycle.
So the book was finally published in 2019. And you can see the cover of the first edition of the book. But it was not the end of the story. Because if you look at the graph here, you can see that we were very active in
2017, 2018. But even though the book was published in 2019, we're still adding stuff, we're making tiny adjustments, we're fixing things. Sometimes we're more active, sometimes less active. But we're active all the time.
Of course, there's also life. So since 2016, there were a few weddings, several babies, a lot of Git commits, and many other life events. So sometimes it is easier to contribute, sometimes maybe less.
But we are still very into this project, and we are still doing that. Because in that time, we also gave a lot of workshops, presentations, courses. We've been writing blog posts, and we had some webinars during the COVID time. And we still were keeping the open source cycle running.
We are also actively working in different fields. So we've often found ourselves working in different projects. And some projects were in R, some projects were in Python, some projects were in C++,
or Rust, et cetera, et cetera. So because of that, we also see that there is a need maybe to expand and to create materials also in different languages. And until that moment, we are still using the abbreviation geocompr.
Because it was a compilation with R. But that was not longer that appropriate for our project, because the project changed. And we were getting more accustomed to different ideas as well.
So in the last few years, we renamed the project geocompx. We got the domain. We cleaned the links. And last year, we officially started promoting the geomptation of Python book.
So that's about the past. And the last part is maybe a little bit about the future.
So maybe some of you are... And I probably assume that many of you already know why we are doing that. Because I know that many of you are doing very similar things with your software, with your tools. But when I prepared this talk, I was thinking...
And I was just looking at myself and my motivation. So the initial motivation was definitely to give back. Because we've learned from the scrapes of the materials, we want to give our knowledge back to other people. But in the process, we are learning new things.
So we are getting better with those tools. We are getting better with the ideas. Not only with the ideas and tools, but also we're getting better in how to show them to other people in maybe more approachable way. So I like this phrase that writing is thinking and teaching is understanding.
So I think it's very true, at least in my case. I know that some people have higher hopes. Some people want to make a difference. Robin, the book author, is definitely one of those people.
That when you are showing open source materials, when you are showing reproducible examples, and you're using real life problems, and showing other people how they can be solved or just improved, then you can make another actual impact on the world. But I also treat my materials and materials of Robin and Yanis and other people as a reference.
Because I know those materials very well, so when I'm confused about something, I just go there. I'm just like, oh, this is in chapter 8 or chapter 5. Creative process is also very enjoying. Because you need to think about how to make it consistent but fun to write a book.
And maybe for some people it's about becoming famous and rich. I would cross out this. There is a quote on the bottom of the slide that if you want to get rich from books,
technical books, the chance is very low. And probably it's much, much better financially to just do some side consulting or even work in a fast food restaurant as a part-time job. And that's definitely the case. However, when I showed this slide to my book authors, Yanis wrote me back and was
very happy. And he said, oh, I bought a laptop for the money from the book. But now he's using the same laptop to write the second edition. So I don't know if it works financially very well.
But I think you can definitely build a reputation. And I'm an example here because I'm standing in front of you just talking about this project. So I think this is a good example of that.
Referencing the talk of Stephanie from yesterday, she was talking about having institutional support. And I think this is very important, at least in my case. So in my case, my university usually either never complains and never prays that I'm
working on those books or on this project. Which is perfect. So I'm just left alone and I can just work on this project. And this is a perfect support, at least for me, for this project. Another thing is that there is a community. And going back to 2017, I was afraid of writing the first sentence.
Oh, I will make a typo. I will make maybe a grammar mistake. Or maybe I will be not exactly correct or something. And I was afraid of people commenting on things or writing bad comments and so on. I think it never happened. Or almost never. Maybe my brain is just deleting those comments.
But yeah. I only felt good emotions from community. And for those kind of projects, it's very important to be in this good zone, to have this good attitude.
When we started writing the book, the first edition, the infrastructure and both from technical point and scientific point of view was there. But it was still not exactly stable. And there were not a lot of examples of how to do that.
But in the last eight years, a lot of things changed. So here you have examples of four different projects using very similar approach. So all of those projects, they have their books available online for everyone to read
and learn new things and apply them in their work. So what are the hard things? What are the things that are still not easy? I think getting started is never easy. If you start a new project and you have just blank screen in front of you, it's always
hard. So... But there are still some technical challenges. I've mentioned that when you are using those tools like Bookdown or Quarto, they allow you to have an HTML version and PDF version of the book. But PDF version goes through LaTeX.
And there are many differences that you need to... Either you need to know or you will learn in the process. Because the HTML book works and everything is great. And then you try to create the PDF version, and either it fails, and you fight with that for five hours, or the result runs, and you get the PDF, and your perfect table looks
like this. Maybe not exactly what I wanted to achieve. So that's still a struggle. Similarly, publishers are still... At least the publishers I know of are still not into this approach of working on GitHub
or similar tools. So they are just sending you a PDF with comments, then you need to go. And I think this could be also streamlined and improved. Because this project is entirely based on our self motivation, finding time is sometimes difficult.
I told you about the weddings and babies and so on. But another thing I thought about that is fairly hard is getting feedback from people. Because I showed you that we've got fairly large number of readers. People are active online, talking about the book, using the book in the courses.
But when I ask people to fill short form about the second edition of the book, we've got just a dozen or so responses. So it's really hard to get the feedback from people to learn what's actually is good or what can we improve. And if you have any ideas how we can get feedback better, just let me know.
I would really appreciate that. Sometimes making decisions is hard. Because you have few people working on this project, and you need to make a decision in a way that everyone is happy. Because that's the approach here. Again, we want to have a nice conversation.
And we want to be engaged and enjoy our work. So sometimes those decisions are hard. Measuring impact is also hard. Because I showed you some numbers.
But often those, like, our employers usually don't care about, oh, GitHub stars or something similar. Maybe they care a little bit about citation, but not about the rest of the things. And we don't know, more or less, the number of people who opened their website. But we don't know how many projects were created by those people and so on and so
on. And the last one is, I think, the never-ending story. So how to be sustainable. So how we can run this project not for the next month, but for a longer time.
And again, this project and its growth is very spontaneous. And I have no idea how to make it sustainable for everyone who wants to contribute to this project. And at the same time, not to burn out myself.
Because I think this is also important. So I'm here to not only tell you about the project, about the pros and cons and struggles and successes, but I also want to show you that if you want, I would encourage you to contribute to the project.
So I've showed you we've got the geocomplex.org website. And we have books, we have blog posts, we have other materials. So for example, if you have an idea for a blog post that you want to write and you want to share with people, we can give you the platform for that. And we also are reviewing the blog posts.
So we are also trying to give some feedback to the blog post before the blog post is published. I also think that sharing the project is also important. Because when you share the project, the more people know about it. So there is a larger chance that somebody will contribute. So it's about telling people.
It's about using social media. It's about maybe writing reviews if you have a copy. But on the other hand, you can also help other by asking questions. Because if you have a good question, then other people can answer the question. And many people can learn from the answers.
Or maybe you created something and you want to share something. Just go to our Discord and just share that there. And people will be happy to see that there is a new thing. Maybe they never had before, but maybe that's useful for them in their work. You are an international crowd, so maybe you can also help with community translations.
Or maybe create a new one. I'm always telling the same to my students. Just start small. But now I'm saying, oh, just translate the book. So no. Just start small. And of course you can contribute. And we are always happy when we see someone contributing and giving feedback, giving suggestions
and so on. So Querto is a tool we are using currently for the Python book and for the website. And the basic idea of the Querto is that you are writing in a format called QMD.
So this is a Querto markdown. Which is basically a markdown plus code. R code, Python code, Julia code. And then the code goes to some engine. So it goes to Jupyter or Neat. Then it is a regular markdown.
Goes to Pandoc and then you can have a PDF and website and many others. So just to say that one last time. Technical stuff. If you just want to push your book online or website online, it's very, very simple.
And you can just install Querto and just type Querto create. And then you can select that you can create a website or a book or something. And you will have the whole template. And you can have everything online in 15 seconds. As I said, I encourage people to start small.
But start small with some kind of a template. So what I usually do when I start a new project, I create a template for the book or template for the website. Because then I have a structure to where I can put my ideas into. Is it a blog or a post or is it a book chapter?
To have the structure helps me. So I hope it will also be useful for you. When you create materials, I think sometimes people are lost when it comes to what's the audience for your materials. Because sometimes you can see the materials that are basically written more or less for
computers, not for people. And that's the suggestion to you. Just spend a short time and think what's your audience. And it's perfectly fine if the audience is actually yourself from yesterday or from a
month ago. But we have that in mind. To whom you are writing. Are you writing for beginners or you're writing for somebody outside of geospatial domain or you're writing to some people who are very advanced? Because when you are mixing all of those, I don't know if that's the easiest.
For the book projects, also the decision is between selfpublishing and having a publisher. Another decision is about what's the license that you may decide on.
And of course those are hard decisions. We decided... I can give you just an explanation of why we decided on a publisher. First of all, I love paper books. So I think that's enough. But with the publisher, we also get reviews of every chapter.
For the first edition of the R, I think we got four rounds of reviews. So we got great structured feedback that everything was organized from the publisher's side. Which was for me very, very helpful. And I really cherish the reviews we've got. But on the other hand, with selfpublishing, you need to do more.
But you have probably also larger control about the outcome. So a few tips on creating or collaborating on those kind of materials. Outline is very important.
Especially when with collaborations, if you work with two people or three people or five people, if there is no outline, there will be a chaos. And there will be a need for people always to reorganize things. And it will be very hard to do.
With the R, as I mentioned, we started with an outline. And we, I think, changed this outline two times in the process. And then we changed that a little bit for the second edition as well. So it's good to have an outline, but not to be afraid of just changing it later. Style guide, great thing to have.
So we have external document. Fairly short document saying, oh, this is the assignment operator. This is the, we are using American English. We are the bullet points do not end with a dot and similar. Small things, but try to imagine you have a large book and
each chapter has a different style. It's a small thing, but readers will definitely notice. And they will be detached from the book, I believe. Or at least that's only me. Because of this book, in 2017, as I mentioned, I woke up every morning before my work.
I started writing. And I tried to keep this habit from that moment on. Of course, it's not 365 days per year. So I haven't been writing for the last few weeks of traveling and so on.
But usually when I have fairly stable time in my job and so on, I usually try to write every day. Sometimes on some days it's a sentence. On some days those are eight pages.
There's one technical tip that we started using by accident and then we discovered this is actually a thing called writing one sentence per line in the markdown files. Because if you do one sentence per line and then you start another line, another sentence, they will still be the same paragraphs.
But if you use differences in Git, you will see what sentence was changed. So you won't get the whole paragraph highlighted, but only the sentence that was changed. So this way we are organizing our text in a technical way and we see that what was changed
by the other author and we can review that. We can maybe discuss those changes and so on. So this is technical advice. But probably more important is social advice. To stay in touch with book authors. So I have a great pleasure to have great book authors, which I really admire not only
as documentation people, but also as humans. So we stay in touch, we visit each other, we talk, we write ourselves messages not only about the book, but also about our lives.
And I think this is important to have this connection to other people. Because this, again, gives you the energy to work on those materials. But reflecting on the projects, I also look at the contributors. And you also need to be aware that contributors comes and goes.
Which is totally perfectly fine and understandable for the book project. Because some contributors are basically the readers. So they are reading the book and then they are seeing something they don't maybe enjoy or maybe they want to improve or maybe they have some questions. Then they are contributing. Then when the book is done, they read the book, they are not contributing anymore.
But then in a few months, we have a new reader or a few weeks or a few days. And again, the same cycle starts again. And this is perfectly fine. This is natural. I just wanted to give you this knowledge. Project is a completely living thing.
So neither Robin, neither me, neither Yanis, neither Anita, neither Michael, neither anyone else from the project has any complete control of a project. And we back in 2016, I would never imagine that it would be it would end up in one
book and not even talking about the rest of the things I showed you. And for me, it's just the way it is. I just I'm just as happy that it's still a living thing that is still growing and still getting better and better.
But to finish up my tips, it's the energy, this being a kind person, being a positive person is crucial here. For those kinds of projects, you need to keep the energy up. You need to smile.
You need to be good to other people. And they will do the same to you. And they will do the same to the project. So the final advice or maybe final suggestion from me for you is now the conference is
almost over. So you will have a lot of time. So just go and write and share the stuff you know. Because you know a lot of things. Thank you.
Thank you, Jakub. Excellent talk. We have a few minutes for two questions. Use the opportunity. I have a warm up question then.
What's the biggest lesson learned for you throughout the journey? I hope that during the presentation I showed you that there were no one lesson.
Maybe not thousands, but definitely dozens of different lessons. I think that the biggest lesson is about this open source cycle. That it's not that, oh, we wrote a book and we wrote, somebody read, that's the end. And that was my thinking ten years ago. That oh, there is an author, an expert in some field, he or she are writing a book,
publishing the book, and other people are reading, and that's the end. And maybe that was the case in the past. But now with open source and all of those technical scientific writing tools, we have this ability to be a part of this cycle.
So you creating something means also that somebody else will add to your project or maybe to other projects. Or maybe they will just apply that in their work, also making change in the world. So I think this is the biggest lesson.
One more question we can take. Seems everything was clear. Let's make another round of applause to Jakub.