Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I was wondering

  1. Generally, does specification mean interface, regardless the implementation beneath the interface?
  2. Specifically

    Only systems fully compliant with and certified according to the Single UNIX Specification are qualified to use the trademark "Unix"; others might be called "Unix system-like" or "Unix-like" (though the Open Group disapproves of this term).

    Suppose not considering the certification, how shall one know if an OS is Unix-like or Unix, and what it means to be compliant with the specification?

    For an OS that can be called "Unix", must its implementation also satisfy some requirements besides meeting the specification?

share|improve this question
How about by reading the specification and comparing its contents to the actual system? If it only defines interfaces and behavior, the system can comply regardless of the implementation. If it defines more, more is required of the actual system. – Daniel Beck Jun 3 '11 at 20:16
Does the specification mean the interface or the implementation or both? – Tim Jun 3 '11 at 20:17
Generally, it means whatever is written in the specification. You are free to read the 4000 pages (available here) of the SUS to see what's required. Since OS X is SUS certified, and shares little code with other certified Unixes (AFAIK), the requirements shouldn't be that restrictive. – Daniel Beck Jun 3 '11 at 20:19

It means that for an Operating System to be "Unix" it must behave the way that the Specification dictates.

For example, if the specification says, "Task X must be done by steps A, B, C" the OS must implement steps A, B, and C, and when Task X is requested, the OS must perform them in order.

Unless you have a specific question about a specific specification, there isn't much more I can offer to explain it. Because this requirement likely spans, the "User Interface" the "Application Programming Interfaces" as well as the workflows within the operating system.

share|improve this answer

In the general case, to comply with a specification means exactly that.

If your specification says "it needs to be a house", then you're free to do pretty much whatever you want. If the specification requires concrete walls, isolated windows, a gabled roof, two stories, etc. then you better build exactly that if you want to comply with the specification.

It's the same with software specifications. If they only require your software to be a system for managing inventory, that's that. But if it needs to be programmed in Java, there's a restriction for you. If it needs to integrate with SAP, there's a whole bunch of restrictions you need to adhere to if you want to comply with the specification.

In the specific case, you can have a look for yourself.

Except for that last chapter, defining the C header files, it doesn't seem to restrict the inner workings of the system much beyond what one would except of any Unix-like system (although I didn't look too hard); and headers are required for developing for these systems, so these are to be expected.

share|improve this answer
+1 Great analogy with the house specification. – Nate Jun 5 '11 at 18:48

1: No. Specification means, well specification. Look at the base word of specification: specific. A specification deals with specifics. Quantifiable measurements, effects when subjected to known events, the type of material an object is to be built out of. Interfaces are simply based on specifications. Take for example USB. It is an interface between a computer and another device. There are specifications for what USB is and does, but you can clearly separate the specification (essentially a document) from the interface (the cable or port, if dealing with only the hardware). If we want to deal with a software only interface, then the specification tells us what the expected output is from any given input (the cause and effect portion above). The interface itself is just code.

Pretty much any usable interface has a specification behind it, however not every specification is for an interface. The house example given by Daniel Beck is perfect.

2: In order to be certified a Unix system, all interfaces and other specifications specified in the Single UNIX Specification must be fully met. If it doesn't fully meet the specification, it can be called Unix-like, but not Unix.

The specification is the requirements, and then some. Just like the specification is the basis of an interface, the requirements are the basis of a specification.

share|improve this answer

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .