Content from Introduction


Last updated on 2025-07-01 | Edit this page

Overview

Questions

  • What is this all about?

Objectives

  • Explain main aims of the workshop
  • Describe the tools that will be introduced

Introduction


This lesson aims to introduce F-Droid, a repository of open source software available for Android and LambdaNative, a programming framework that uses the Gambit Scheme compiler to create Android applications.

The lesson can be completed using an internet browser that supports javascript.

Challenge 1: Examine the F-Droid website.

What type of software can be included in F-Droid?

F-Droid is a repository of Free and Open Source Software (FOSS). According to the inclusion policy, source code for the software needs to be available and under a recognized free and open source license.

Challenge 2: Examine the Software Packet Data Exchange (SPDX) website

What is the purpose of SPDX? Compare two licenses on the spdx list. How do they differ and why might the differences be important in choosing software you use or build upon?

SPDX is an organization that promotes open standards to enable efficient exchange of information about software, including licensing, security and origin.

There are many possible differences. Possible points of interest are:

  1. If you use the software in a web application, do you need to make the source of the web application available?
  2. If you include the software in your application and distribute your application, do you need to make the source code of your application available with your application.

Challenge 3: Examine the LambdaNative website.

What is LambdaNative?

LambdaNative is a framework for making mobile and embedded applications using the scheme programming language. It was originally developed to make health monitoring applications. It is open source and can be used to make applications that run on Android, iOs, Linux, Windows, OSX, NetBSD, FreeBSD, OpenBSD and OpenWRT.

Challenge 4: Examine the Gambit Scheme website.

What is Gambit Scheme?

Gambit scheme is a mature implementation of the Scheme programming language. It is primarily developed as a research project on compiler techniques. It is Free and Open Source Software.

Callout

Gambit Scheme is the scheme implementation used by LambdaNative.

Key Points

  • F-Droid is a repository of free and open source Android applications
  • Free and open source software has licenses governing its use
  • LambdaNative can be used to create Android applications
  • To use LambdaNative one needs to learn to program in Scheme

Content from Jargon Busting


Last updated on 2025-07-01 | Edit this page

Overview

Questions

  • What terms, phrases, or ideas around code and mobile applications have you come across and feel you should know better?

Objectives

  • Explain terms, phrases, and concepts associated with software development and mobile applications.
  • Compare knowledge of these terms, phrases, and concepts.
  • Differentiate between these terms, phrases, and concepts.
  • Learn to look things up online

This is modified from the library carpentry jargon busting lesson.

Jargon Busting

This exercise is an opportunity to gain a firmer grasp on the concepts around data, code or software development for mobile devices.

  1. Pair with a neighbor and decide who will take notes (or depending on the amount of time available for the exercise, skip to forming groups of four to six).
  2. Talk for three minutes (your instructor will be timing you!) on any terms, phrases, or ideas around code or software development for mobile devices that you’ve come across and perhaps feel you should know better.
  3. Next, get into groups of four to six.
  4. Make a list of all the problematic terms, phrases, and ideas each pair came up with. Retain duplicates.
  5. Identify common words as a starting point - spend 10 minutes working together to try to explain what the terms, phrases, or ideas on your list mean. Note: use both each other and the internet as a resource.
  6. Identify the terms your groups were able to explain as well as those you are still struggling with.
  7. Each group then reports back on one issue resolved by their group and one issue not resolved by their group.
  8. The instructor will collate these on a whiteboard and facilitate a discussion about what we will cover today and where you can go for help on those things we won’t cover. Any jargon or terms that will not be covered specifically are good notes.

Busting Tips

Often, workshop attendees ask if there is a handout of common terms and definitions as there is not enough time to explain all the terms in a jargon busting exercise. Many of the terms are covered in our lessons, but with so much variation between our jargon busting sessions, it is difficult to create a common handout.

Keep in mind that our goal is not to explain all the terms we list out in the exercise, but instead to highlight how much jargon we use in our daily work and to come up with a shared understanding for a select number of jargon terms.

Key Points

  • It helps to share what you know and don’t know about software development and application jargon.

Content from F-Droid


Last updated on 2025-07-01 | Edit this page

Overview

Questions

  • How can I install an application from F-Droid?

Objectives

  • Explore the F-Droid repository
  • Learn how to insall an application from F-Droid

Introduction


F-Droid is a repository of free and open source Android applications. We will try out some of these applications.

Install an application from F-Droid


On your Android device, open an internet browser and go to https://f-droid.org/.

There should be a button download F-droid, press on this button and wait for F-Droid to be downloaded. Once downloaded, attempt to install it - you may need to temporarily enable permissoins for installation of applications from the files folder.

Once F-Droid is installed on your Android device, browse the applications available on F-Droid and install one on your Android device. You may need to give the F-Droid application permissions to install applications.

Challenge 1: Can you do it?

If you have F-Droid installed and have installed an application, try out the application and describe what it does. Write down where you can find the source code for this application.

If you do not have F-Droid installed, browse https://f-droid.org/en/packages/ and describe two applications you find interesting. Write down where you can obtain the source code for these applications.

As an example:

GCompris (https://f-droid.org/en/packages/net.gcompris.full) is a suite of educational games for children between the ages of 2 and 10. It is developed at https://invent.kde.org/education/gcompris.git.

Challenge 2: Can you do it?

Examine https://f-droid.org/en/contribute/.

How can one contribute to F-Droid? Is the source code for running F-Droid available?

There are many ways to contribute to F-Droid, examples include: 1. Translation 2. Testing applications 3. Improving the F-Droid infrastructure 4. Helping others to use F-Droid by answering questions in community communication channels

The source code for running F-Droid is available at https://gitlab.com/fdroid/ and comprises code for the: 1. Android client 2. Server tools 3. App metadata files 4. Website

Key Points

  • F-Droid has many free and open source applications
  • If you are worried about security of an application, you can examine its source code or ask someone else to do so for you
  • It is possible to run your own F-Droid repository to distribute Android applications which you verify are good to distribute

Content from Scheme


Last updated on 2025-07-01 | Edit this page

Overview

Questions

  • How can I write a scheme program

Objectives

  • Learn to write a scheme program

Introduction


We will follow the introduction to scheme available at https://try.gambitscheme.org/.

Basic

SCHEME

(display "hello world!\n")

SCHEME

(+ 6 1)

SCHEME

(expt 2 8)

SCHEME

(* 4 (atan 1))

SCHEME

(define pi (* 4 (atan 1)))
(define circum (lambda (r) (* 2 pi r)))
(circum 5)

SCHEME

(import (srfi 48))
(format #t "1+2=~s\n" (+ 1 2))

SCHEME

(import (srfi 19))  ;; for time procedures
(import (srfi 48))  ;; for format

(define (get-date)
  (time-utc->date (current-time time-utc)))

(format #t
        "current UTC time: ~a\n"
        (date->string (get-date)))

Types

SCHEME

(string-append "A" "BC")

SCHEME

(string-ref "XYZ" 2)  ;; indexing

SCHEME

(string-length "AB")  ;; get length

SCHEME

(char->integer #\A)   ;; conversion

SCHEME

(char<? #\A #\Z)      ;; comparison

SCHEME

(expt 2 75)           ;; 2^75

SCHEME

(exp (* 75 (log 2)))  ;; e^(75*ln(2))

SCHEME

(* (/ 5 3) (/ 9 2))   ;; 5/3 * 9/2

SCHEME

(+ (sqrt -6.25) 1)    ;; sqrt(-6.25)+1

SCHEME

(> 1e-2 1)            ;; 0.01 > 1 ?

SCHEME

(define lst (list 1 2))
lst

SCHEME

(cons 0 lst)         ;; add to front

SCHEME

(append lst '(3 4))  ;; concatenation

SCHEME

(car lst)            ;; get first

SCHEME

(cdr lst)            ;; remove first

SCHEME

(cdr (cdr lst))      ;; remove both

SCHEME

(length lst)         ;; get length

SCHEME

(define v (make-vector 5 42))
v

SCHEME

(vector-set! v 2 #t)  ;; mutation
v

SCHEME

(vector-ref v 2)      ;; indexing

SCHEME

(vector-length v)     ;; get length

Challenge 1: Can you do it?

What is the difference between a list and a vector in scheme?

Lists are not indexed, one accesses the first and last items of a list. Vectors are indexed, any item can be accessed, but they are more expensive to process. Scheme is a programming language in the lisp family of programming languages (https://en.wikipedia.org/wiki/Lisp_(programming_language)), which extensively use lists.

SCHEME

(string->symbol "foo")  ;; conversion

SCHEME

(symbol->string 'foo)   ;; conversion

SCHEME

(define x (list '* 2 3 7))
x
(eval x)

Challenge 2: Can you do it?

Define an s-expression that uses the symbol + in a list that adds three numbers

SCHEME

(define y (list '+ 237))
y
(eval y)

SCHEME

*

SCHEME

(* 2 3 7)

SCHEME

(apply * (list 2 3 7))

Challenge 3: Can you do it?

check if + is a procedure. Use + to add three numbers in a list.

SCHEME

+
(apply + (list 2 3 7))

Key Points

  • Scheme is a programming language that uses lists
  • Scheme can be used to create very powerful compact programs
  • Scheme has specifications which if implemented can be imported to give additional functionality such as formatted output
  • Symbols can be used to create s-expressions that allow one to define and evaluate in separate steps

Content from One Up, One Down


Last updated on 2025-07-01 | Edit this page

Overview

Questions

  • What did you like and what needs improvement about the lessons and workshop?

Objectives

  • Learners reflect and share what they liked and what can be improved about the lessons and workshops.
  • Instructors record the learner feedback and reflect on what can be improved about the lessons and workshops.

This is modified from the library carpentry one up, one down lesson.

One-Up, One-Down


In addition to sticky notes used for feedback during the day, at the end of the day we can use a technique called “one up, one down”. The instructor asks the learners to alternately point to one thing they liked and one thing that can be improved about the day, without repeating anything that has already been said. This requirement allows participants to reflect further on the day and offer unique responses. The instructor writes down the feedback in the workshop collaborative document. The feedback is both helpful to the learners, to hear the perspectives of others in the workshop, and for instructors, to learn how the lessons and teaching approaches used can be improved.

Key Points

  • It helps to reflect and share feedback about the lessons and workshop.