요약

  • RFC 3381은 작업 진행 상황을 위한 선택적 IPP 속성을 추가했지만, 모든 값은 특정 범위에 종속되어 있었다. 작업 전체, 현재 문서, 현재 부본 또는 현재 적재 중인 용지.
  • 콜레이션은 이러한 값이 증가하고 초기화되는 순서를 바꾸었다. 장치가 출력 경계를 직접 관측할 수 없을 때는 '완료'조차 처리 완료를 뜻할 수 있었다.

원격 인쇄 작업을 지켜보면서 전체 인쇄면 수가 2에서 3으로 올라가는 동안 현재 부본 카운터가 3에서 1로 떨어지는 상상을 해보자. 무언가가 반드시 거꾸로 간 것은 아니다. 장치가 한 부본을 끝내고 다른 부본을 시작했을 수 있다. 콜레이션 모드를 바꾸면 동일한 정수 수열이 작업의 위치를 완전히 다른 곳으로 가리킬 수 있다.

RFC 3381이 읽기 쉽게 만들려 한 문제가 바로 이것이었다. 2002년 9월 Standards Track으로 발표된 이 문서는 IPP/1.0과 IPP/1.1을 위해 네 개의 선택적 Job Description 속성, 즉job-collation-type,sheet-completed-copy-number,sheet-completed-document-number,impressions-completed-current-copy를 정의했다. 또한 클라이언트가 콜레이션된 용지 또는 콜레이션되지 않은 용지를 요청할 수 있게 하는 Job Template 속성인sheet-collate를 정의했다.

이 확장은 보편적인 퍼센트 완료 게이지를 발명하지 않았다. 거의 반대를 했다. 프린터의 실행 모델을 충분히 노출하여 하나의 스칼라 값이 왜 부족한지 보여 주었다. 전체job-impressions-completed카운터는 단조적으로 증가하는 동안 현재 문서 부본의 카운터는 초기화될 수 있었다. 부본 및 문서 서수는 출력이 조립되는 방식에 따라 서로 다른 순서로 진행되었다.

RFC 3381은 이 속성들을 RFC 2707의 PWG Job Monitoring MIB에서 가져왔다. 또한 이들을 알림 내용에 사용하는 것을 예상했으며, 이는 나중에 RFC 3995와 RFC 3996의 IPP 이벤트 알림 및 구독 작업을 통해 규정되었다. 카운터를 알림으로 옮겨도 그 의미는 변하지 않았다. 수신자는 여전히 값을 해석 가능하게 만드는 범위와 순서 규칙을 필요로 했다.

이 문서는 동일한 작업으로 세 가지 콜레이션 체계를 보여 주었다. 즉, 문서 두 개, 각 문서에 인쇄면 세 장으로 구성된 부본 세 개였다.uncollated-sheets에서는 한 장의 용지가 다음 용지로 넘어가기 전에 세 부본 모두에 복제되었다.collated-documents에서는 두 번째 부본이 시작되기 전에 각 문서의 첫 번째 부본이 완료되었다.uncollated-documents에서는 두 번째 문서의 어떤 부본보다도 첫 번째 문서의 모든 부본이 먼저 완료되었다.

세 경로 모두 최종적으로 열여덟 장의 인쇄면을 만들어 냈다. 그러나 중간 상태는 서로 달랐다. 네 장을 인쇄한 시점에 현재 부본 카운터는 첫 번째 문서 첫 부본의 두 번째 인쇄면, 두 번째 문서 첫 부본의 첫 인쇄면, 또는 첫 번째 문서 두 번째 부본의 첫 인쇄면을 가리킬 수 있었다. '네 장이 완료되었다'는 모든 경우에 참이었지만, 어느 경우에도 작업의 위치를 찾는 데는 부족했다.

sheet-collate속성은 이 문법의 한 부분을 제공했다. 콜레이션된 용지에서는 각 부본이 자신의 용지를 순서대로 유지했다. 콜레이션되지 않은 용지에서는 한 장의 용지 복사본들이 다음 용지 전에 생산되었다. 이것이multiple-document-handling과 상호작용하면서 논리적인 '세트'가 만들어졌고, 일부 조합은 너무나 말이 안 되어 프린터가 충돌하는 속성으로 작업을 거부해야 했다.

물리적 장치는 모니터링되는 상태와 사용자가 보는 결과 사이에 또 다른 차이를 만들 수 있었다. RFC 3381은 출력함 콜레이터가 인쇄 장치의 job-collation 유형이uncollated-sheets인 경우에도 사용자에게는 용지가 콜레이션된 것처럼 보이게 할 수 있다고 지적했다. 모니터링 응용 프로그램 입장에서는 그런 출력함 콜레이터가 있는 장치와 없는 장치를 구분할 수 없었다. 카운터는 모니터링되는 생산 경로를 설명할 뿐, 사용자가 트레이에서 발견할 모든 것을 설명하지는 않았다.

'완료'라는 단어에는 자체적인 경계가 있었다. 인쇄면과 용지의 경우, 통상 적재(stacked)를 의미했다. 그러나 구현이 각 용지의 적재 시점을 감지할 수 없다면, RFC는 해당 용지의 처리가 완료되는 순간에 적재를 근사하는 것을 허용했다. 따라서 프로토콜 값은 정수로는 정확할 수 있지만 물리적 주장으로는 불확실할 수 있었다. 카운터가 10이라고 해서 출력함에 이미 용지 10장이 들어 있다는 것이 항상 증명되지 않았다.

이것은 관측 가능성에 대한 의도적인 수용이었다. 명세는 센서가 없는 장치에 센서를 강제할 수 없다. 다만 근사가 어디에서 일어나는지는 명시할 수 있다. 이 구분은 잼, 마무리 단계, 전송 경로 또는 출력 장치가 이미지 처리와 최종 적재 사이에 놓여 있을 때 운영적으로 중요하다.

부본별 속성은 초기화 경계를 명시적으로 만들었다.sheet-completed-copy-number는 현재 문서에 대해 적재되고 있는 부본을 식별했다.sheet-completed-document-number는 현재 문서를 식별했으며, 작업당 문서 하나만 지원하는 장치에서는 사용이 권장되지 않았다.impressions-completed-current-copy는 현재 부본의 인쇄면 수를 세었고, 새 문서와 새 문서 부본마다 0으로 초기화되어야 했다.

이 초기화 규칙은 로컬 카운터가 전체 누적 총계인 것처럼 가장하는 것을 막았다. 동시에 감사 요구 사항도 만들었다. 정수와 타임스탬프만 저장하는 모니터링 시스템은 유효한 초기화를 잃어버린 작업으로 오해할 수 있었다. 이 시스템에는 샘플을 둘러싼 작업 식별자, 문서 서수, 부본 서수, 콜레이션 유형, 상태 전이가 필요했다.

RFC 3381은 또한 '모름'을 유효한 결과로 보존했다. 부본 또는 문서 번호를 알 수 없는 경우, 프린터는 일부 관리 정보 베이스에서 쓰는 숫자 -2 규약을 도입하는 대신 IPP의unknownout-of-band 값을 반환했다. unknown은 0이 아니었다. 0은 첫 번째 관련 용지 이전의 초기 상태를 설명했다. unknown은 관측이 불가능했다는 뜻이었다.

이 차이는 0은 산술에 참여하는 반면 unknown은 산술을 끊기 때문에 중요하다. unknown을 0으로 대체하면 초기화, 정체된 작업 또는 가짜 시작점을 날조할 수 있다. 좋은 텔레메트리 시스템은 대시보드가 깔끔한 선 하나를 선호하더라도 부재, 부적용, 초기 상태, 측정된 0을 서로 구분해 유지한다.

RFC 3381의 모든 속성은 선택적이었다. 클라이언트와 프린터는 어떤 조합이든 구현할 수 있었다. 클라이언트는 전체 인쇄면 총계는 보지만 현재 문서는 볼 수 없거나, 모든 부본별 카운터를 받지 않고 콜레이션 유형만 알 수 있었다. 부분적 가시성은 규격에 부합했다. 그것은 누락된 상태를 추론으로 채우고 그 결과를 관측으로 보고할 권한은 아니었다.

이 RFC는 IPP/1.1 인코딩 및 전송 문서인 RFC 2910을 갱신하면서 RFC 2911의 모델과 의미론에 크게 의존했다. RFC 3196은 그 기본 프로토콜에 대한 구현 지침을 제공했다. 함께 발표된 RFC 3380은 다른 경계를 다루었다. 즉, 요청된 작업 속성 변경 집합이 원자적으로 수락되는지 여부였다. 성공적인 변경과 관측 가능한 진행은 별개의 질문이었다.

RFC 3381은 이제 폐기되었으며, RFC 8011이 IPP/1.1 모델과 의미론을, RFC 8010이 인코딩과 전송을 통합했다. 이후의 폐기 상태는 명세 역사의 일부다. 그것은 2002년 속성을 어떤 프린터가 구현했는지, 처리를 적재의 근사로 얼마나 자주 사용했는지, 또는 특정 제품이 올바른 물리적 출력을 만들어 냈는지를 증명하지 않는다.

오래된 IPP 설계 문서들은 이 확장의 야망을 짚어 준다. RFC 2567은 최종 사용자, 운영자, 관리자의 요구를 설명했다. RFC 2568은 IPP가 왜 객체, 속성, 연산을 분리했는지 설명했다. 진행 모니터링은 그 객체 모델에 속했다. 즉, 마법적인 외부의 진실이 아니라 Printer 객체가 정의된 시점에 Job 객체에 대해 내놓는 진술의 집합이었다.

Lu Heng의 최소 초기 명제(minimum-initial-specification) 관점은 이 확장이 왜 선택적이며 조합 가능하게 남았는지를 설명한다. 이것은 모든 프린터에 모든 카운터의 노출을 요구하지 않으면서 실제 모니터링 문제를 위한 어휘를 추가했다. 그의 현실 계층(reality-layers) 관점은 경고를 제공한다. 요청된 콜레이션, 내부 처리, 카운터 갱신, 용지 이동, 물리적 적재, 사용자 소유는 서로 관련된 단계이며 서로 교환 가능한 사실이 아니다.

RFC 3381의 지속적인 기여는 숫자 3이 아니었다. 3이 거짓말을 하지 못하게 막아 준 맥락이었다. 카운터는 관측자가 무엇을 세고 있는지, 카운트가 어디에서 초기화되는지, 출력이 어떻게 정렬되는지, 장치가 실제로 볼 수 있는 물리적 경계가 어디인지도 함께 알 때에만 유용한 증거가 된다.

출처