Skip to content

Latest commit

 

History

History
168 lines (122 loc) · 6.96 KB

File metadata and controls

168 lines (122 loc) · 6.96 KB

Question Sourcing

How questions get into this project, what may be published, and what must stay on your own machine. Read this before adding a single question.


1. The constraint, stated plainly

The LPI Learning Materials — the free PDF and web textbook at learning.lpi.org — are licensed CC BY-NC-ND 4.0. The imprint of the 010-160 edition states it, and every page repeats it in the footer.

Two clauses matter:

  • NC — NonCommercial. Commercial use is not permitted.
  • ND — NoDerivatives. Adapted material may not be distributed.

The exam objectives are a different document. LPI publishes them at lpi.org/our-certifications/exam-010-objectives as a list of topics, key knowledge areas, utilities and weights — the specification of what the exam covers. Third-party books and courses have been written against published certification objectives for decades.

And underneath both: facts are not copyrightable. That ls lists directory contents, that UID 0 is root, that $? holds an exit status — none of that belongs to anyone. Copyright protects the expression of an idea, not the idea or the fact itself.

2. The line this project draws

Activity Status
Reading the PDF to learn Fine
Generating a personal question pool from the PDF, for your own study Fine — ND restricts distribution, not private use
Publishing that pool in this repository Not done here
Writing questions from the published objectives and general technical knowledge Fine, and publishable

So the repository ships an engine plus a small original sample, and each user generates their own full pool from their own copy of the material. Nobody redistributes LPI's work. Everyone uses a copy they are entitled to have, because LPI gives it away.

This is not legal advice. It is the reasoning this project operates on. If you need certainty for your own use — particularly anything commercial — ask LPI directly at learning@lpi.org, the address printed in the material's own imprint.

3. What ships in data/questions.js

40 questions, written from the published objectives and general Linux knowledge. Nothing copied, paraphrased or adapted from the PDF.

They are tagged src: 'obj'. That tag is a claim, and the claim must be true. If you cannot say where a question came from, it does not belong in the committed bank.

The sample is deliberately exactly 40 — one question per official weight point, so it constitutes precisely one full weighted exam and demonstrates the sampler working. It is not a study bank. Forty questions will not prepare anyone for a certification.

Provenance tags

Tag Meaning Committable
obj Written from the published exam objectives and general knowledge Yes
own Written from your own experience, unrelated to any LPI text Yes
mat Derived from the LPI Learning Material No — personal pool only

The validator warns on any mat question found in data/questions.js. That is the mechanical guard; the tag is only as honest as the person applying it.

4. Building your own pool

Step 1 — get the material. Download the PDF or read the web version at learning.lpi.org. It is free and requires no account. This is your copy.

Step 2 — generate questions into a personal file.

Create data/questions.personal.js. It declares Q_PERSONAL instead of Q:

const Q_PERSONAL = [
  { id: 'P0001', s: '3.3', t: 3, src: 'mat',
    q: 'Question text?',
    o: ['A', 'B', 'C', 'D'],
    a: 2,
    e: 'Explanation.' }
];

This file is in .gitignore. It stays on your machine.

Step 3 — load it. Add one line to each page, after data/questions.js:

<script src="data/questions.js"></script>
<script src="data/questions.personal.js"></script>   <!-- optional, git-ignored -->
<script src="assets/js/core.js"></script>

core.js uses Q_PERSONAL when it exists and is non-empty, and falls back to the shipped sample otherwise. If the file is absent the browser logs a 404 and everything keeps working.

Step 4 — validate.

node tools/validate-questions.js data/questions.personal.js config/exam.js

Structural errors fail. Objective coverage more than 2 points off the official weight share is reported as an imbalance — worth fixing, because it means your practice exams will not resemble the real distribution.

5. Generating with an AI model

If you use an assistant to draft questions from your copy of the material, four things matter more than the prompt itself.

Verify every answer key. Structural validity is machine-checkable; correctness is not. A model will produce a confident, well-formatted question with the wrong option marked correct, and no tool in this repository will catch it.

Respect the weights. Ask for questions per objective in proportion to the official weight, not evenly. Objective 3.3 is worth 4 of 40 points; 1.3, 4.1 and 5.4 are worth 1 each. config/exam.js holds the full table.

Keep the output in the personal pool. Anything generated from the PDF is src: 'mat' and never reaches a commit.

Do not ask for the material to be reproduced. You want questions that test the objectives, not passages rewritten from the source.

A workable prompt:

You are helping me build a practice question bank for the LPI Linux Essentials
010-160 exam. I have the official learning material open.

Write N multiple-choice questions for objective <X.Y> — "<objective name>".

Rules:
- Test understanding of the concepts in the objective. Do not reproduce,
  paraphrase or closely follow the wording of any source text.
- Four options, exactly one correct, three plausible distractors that reflect
  real misconceptions rather than obvious filler.
- Add an explanation of 1-3 sentences saying why the answer is right and,
  where it helps, why the closest wrong option is wrong.
- Output JavaScript objects in this exact shape:
  { id: 'Pxxxx', s: '<X.Y>', t: <topic>, src: 'mat',
    q: '...', o: ['...','...','...','...'], a: <index>, e: '...' }
- Mark multi-answer questions with type: 'multi' and an array for a.
- Mark type-the-command questions with type: 'fill' and a fill array of every
  acceptable answer, including common option orderings.

Then list each question's id with its correct answer, so I can check the keys
independently.

That last instruction is the important one. It gives you a checklist to verify against rather than a wall of text to trust.

6. Contributing questions upstream

Pull requests adding questions are welcome under one condition: src: 'obj' or 'own' only. A contribution derived from the LPI material cannot be accepted, however good it is, because this repository cannot redistribute it.

Run the validator before opening the PR. CI runs it too and blocks the merge on failure.