Closed elmattes closed 1 year ago
The objective of making the README information more effective is definitely worth pursuing!
Consider that an end-user (educator or student) probably just wants to know how to use the product rather than how to build it. For them, having the "use from command line" or "use as a BlueJ project" should appear first. A maintainer may place a higher priority on knowing how to build the product. It's unclear that any specific ordering is "best" for all stakeholders.
On the other hand, all stakeholders are likely to benefit from an overview of what is contained in the README and some form of quick access for them to go directly to the section(s) of interest to them. This suggest something like a "table of contents" set of links appearing just under the current one-line description.
Also very likely to be helpful for all stakeholders would be revising the text of the headings and subheadings so the those headings (and associated table of contents links) identify the content of each section in language appropriate to the reader.
I've added a table of contents as discussed, along with changes to the order to bring the BlueJ and command line instructions next to each other. A few typos have been fixed and some changes made to readability. Here's the current readme I propose as a change (make note that the table of content links do not work in this comment form, but they do work in my cloned repository which you can reference here: https://github.com/ematteso/imagelab ):
ImageLab is a framework that allows students to develop image modification processors (filters) and to experience the results visually and aurally. This project can be ran as a BlueJ Project, directly from the command line, or built with a gradle wrapper.
imagelab.jar
file.imagelab.jar
file also includes the class Run with a public static void main
method in the unnamed package, used to facilitate running the ImageLab application..java
) and compiled (.class
) files, with the source versions serving as examples for students to create their own filters.Install BlueJ for your operating system
At this point, ImageLab should open in a seperate GUI window.
javac -cp .:imagelab.jar filters/*.java
java -cp ".:imagelab.jar" Run
The project is set up to use gradle wrapper to create the jar file.
./gradlew build
A. This will build/rebuild the jar file and required dependencies.More information on gradle can be found here and more information on the gradle wrapper can be found here.
If there is no automated build environment set up, the jar file can be created using the jar
command.
javac Run.java
to compile the Run.java file.javac */*.java
to compile/recompile the files in packages imagelab, sound, and filters.echo Main-Class: Run > MANIFEST.MF
to create the manifest file for the jar.jar cfm imagelab.jar MANIFEST.MF *.class sound/*.class imagelab/*.class
More information on creating the jar can be found here and more information about java commands can be found here.
An executable jar file can also be created within most IDEs.
To build the project from a copy of the repository use the command:
./gradlew build
./gradlew tasks --all
./gradlew run
./gradlew compileJava
./gradlew clean
./gradlew classes
./gradlew build
./gradlew testClasses
./gradlew checkstyle
./gradlew test
./gradlew compileTestJava
./gradlew check
ImageLab is a framework for student exploration of image processing.
Copyright (C) 2016,2019 by Aaron Gordon & Jody Paul
The software comes with ABSOLUTELY NO WARRANTY.
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/
Project Website: https://metrocs.github.io/imagelab/
I think we need to distinguish between the "use" of ImageLab by students and educators (running the product) from the "development" of ImageLab by developers (maintaining the product). These are two different groups of stakeholders.
The information page for users (students and educators) is found at this URL: https://metrocs.github.io/imagelab/
Users should not need to go to the GitHub repository (unless they want to see the project from a developer/maintainer perspective.)
Since users may inadvertently go to the repository directly, perhaps the pointer to the Project Website should be moved to the top part of the README.md with labeling that directs people looking for information about "using" ImageLab to that website.
The table of contents still makes sense for the repository README, focused on the developer perspective.
Makes sense to move the website to the top of the ReadMe, and I've made the appropriate changes.
Then my question for you is do you think that there needs to be some kind of additional clarification to distinguish between "use" and "development" in your ReadMe?
In preparation for one or more pull requests, I recommend splitting this into multiple user stories/issues, such as:
As a user I want my landing on the GitHub repository page with README displayed to tell me how to get and use the product so that I can use the product and do so appropriately
As a developer I want to be able to learn how to build the product so that I can make appropriate contributions to the project
Notes: We agreed to create two new issues (User Stories) and link them as "Depends on" of this issue. I've updated the structure of this issue with the project's format for a Dependencies section.
After discussing in person, I've made two new user stories that this issue depends on. All three have been updated accordingly with linked dependencies/dependants.
User Story
Essential components
Story
As a user or potential contributor I want to be able to open the Github page and follow the readme instructions from top to bottom to install and run the project on a local machine so that other users can install the project with ease.
Acceptance Criteria
I propose the following order for the readme:
Supporting Information
At current, the instructions for install are out of order. Gradle must be installed first before you can create an executable jar or compile and run from the command line, these steps should directly follow gradle install. Resources for gradle use should be below the instructions required to install / build / run the project locally. For a new user of the project, this should put the install steps in order and provide more clarity for the user.
Dependencies
Depends On
117 , #118