Many frameworks, declarations, regulations, and consumer bills of rights have been put forth to help prepare and adapt society to the digital information age. Many of these have targeted privacy, security, and trust. Very few have addressed the wide gamut of ethical computing values directly. My draft proposal for an ethical computing framework is as follows:
- Computing with Group Property: This property comes directly from J.C.R. Licklider:
The output of any program should be suitable input for other programs. Moreover, we should also be able to construct the input for any program using another program. This means that the input data, output data, and the communication protocols must be open and documented and not proprietary--even if the software source code itself is proprietary and closed. This property also extends to hardware. Hardware devices must document their interfaces completely so that individuals other than the hardware manufacturer can write software interfaces--even if some of the internal workings of the hardware are proprietary and closed.
- Learnability: Greater complexity does not necessarily mean more complicated. Powerful features may have a steeper learning curve at first but if they are well documented, if they are learnable, then it may add to a software program's long-term success. This gives the user greater autonomy and avoids average user syndrome, and assumes the user will advance and progress in use of their computing environment. The key to learnability is in abstracting away the underlying complexity of software without diminishing its comprehensiveness.
- Adaptability: The strongest form of this property is the presence of native compilers on a computing device to compile and run its own software. This strong form also includes the ability to change the underlying operating system of a computer. A weaker form of adaptability is the ability to modify software configurations through comprehensive settings. The ability to interchange various internal and external devices is another important aspect of adaptability in computing. This could be changing the CPU, motherboard, video cards, memory (RAM), storage drives, and network interface cards; or external devices like monitors, printers, keyboards, scanners, generic USB devices, et cetera.
- Transparency: The strongest form of the transparency property follows from Linus' Law:
Given enough eyeballs, all bugs are shallow.Given open source code with free license, this can easily be adhered to. In a closed environment, we must consider the internal workings as a black box and turn our attention to the inputs and outputs of a program--including any data communicated to and from the application aside from its primary functions. No surreptitious communication or action should be implemented by software or within hardware devices. In more complex software systems, phoning home with information like telemetry data or usage statistics must be opt-in and in human-readable format for users to know the data being sent. The user should be completely aware of the computing environment, and conversely, the software must be completely transparent to the user.
- Decentralizable: Decentralized computing refers to computing taking place on nodes of a network rather than on centralized servers, such as in the "cloud". Decentralizable means that any centralized software service must be drop-in replaceable by another similar service. For example, cloud storage used by a smartphone must be redirectable by the user to their personal computer or workstation at home.
Edited on 2016-11-15