Hacker Newsnew | past | comments | ask | show | jobs | submit | more mikegerwitz's commentslogin

Those interested in how prototypes and classical inheritance relate (and don't) may be interested in work I did on GNU ease.js, which works with ECMAScript 3+. I have since extended it to support Scala-like traits.

https://www.gnu.org/software/easejs/manual/easejs.html#Imple...

I also wrote a paper on some of the concepts:

https://mikegerwitz.com/papers/coope/coope.pdf

The `class' keyword in JS still leaves much to be desired; it's just syntatic sugar around the prototype model. There's nothing wrong with that model---it's just important to understand how it differs from what OOP developers traditionally expect.


> it's just syntatic sugar around the prototype model.

No it allows "super" late binding, something you cannot do with functions and prototypes. It's not just "sugar".


No. You aren't being denied your freedoms on someone else's computer because you have no right to exercise them to begin with---it's not yours.

It's the same concept with the AGPL---I have no right to modify the source code on someone else's server; I'd need to install it on my own.

If you had to have access to the source code for everything you used, it'd be an almost impossible burden. rms takes public transportation in Boston, for example. Those terminals are interactive touchscreens, required for payment and printing tickets. He'd be unable to use the transit system.

From stallman.org:

> However, if I am visiting somewhere and the machines available nearby happen to contain non-free software, through no doing of mine, I don't refuse to touch them. I will use them briefly for tasks such as browsing. This limited usage doesn't give my assent to the software's license, or make me responsible its being present in the computer, or make me the possessor of a copy of it, so I don't see an ethical obligation to refrain from this. Of course, I explain to the local people why they should migrate the machines to free software, but I don't push them hard, because annoying them is not the way to convince them.

> Likewise, I don't need to worry about what software is in a kiosk, pay phone, or ATM that I am using. I hope their owners migrate them to free software, for their sake, but there's no need for me to refuse to touch them until then. (I do consider what those machines and their owners might do with my personal data, but that's a different issue, which would arise just the same even if they did use free software. My response to that issue is to minimize those activities which give them any data about me.)

> That's my policy about using a machine once in a while. If I were to use it for an hour every day, that would no longer be "once in a while" — it would be regular use. At that point, I would start to feel the heavy hand of any nonfree software in that computer, and feel the duty to arrange to use a liberated computer instead.

> Likewise, if I were to ask or lead someone to set up a computer for me to use, that would make me ethically responsible for its software load. In such a case I insist on free software, just as if the machine were my own property.

https://stallman.org/stallman-computing.html

So using someone else's computer is a similar problem to SaaSS---you're relying on someone else for your computing:

https://www.gnu.org/philosophy/who-does-that-server-really-s...


> You aren't being denied your freedoms on someone else's computer because you have no right to exercise them to begin with---it's not yours.

How about the freedom to refuse to use someone else's computer unless I can also see the source code?


That's orthogonal to the issue. Of course you have the freedom to refrain from use of any technology, unless you're somehow being mandated by law to use it.


Well, since we are already orthogonal, lets turn this the other way round. Would you support the idea that any software that you are mandated by law to use, should be required to be open source?


And you have the same right with any SaaS.


And just like I won’t give you my source code unless you give me the source code of your laptop, I won’t give Google my source unless they give me the source code of all their products.

I have that very same right with any Service-as-a-Software-Substitute as well


You need to do it properly; the comic is misleading on its own.

https://www.eff.org/deeplinks/2016/07/new-wordlists-random-p...


I use Automake and Autoconf (which generates the Makefile) for GNU ease.js:

https://git.savannah.gnu.org/cgit/easejs.git/tree/Makefile.a... https://git.savannah.gnu.org/cgit/easejs.git/tree/configure....

The nice thing with using Automake is that it gives all the standard build targets with little additional effort (for example, `make dist` for producing the distribution tarball, and `make distcheck` for verifying that it's good).

I use a much simpler one for a project at work:

https://gitlab.com/lovullo/liza/blob/master/Makefile.am https://gitlab.com/lovullo/liza/blob/master/configure.ac


Conventions exist in every language. `car', `cons', and `cdr' are also part of certain standards (e.g. RnRS). And, honestly, they compose a bit better than `first', and `rest' for combinations like `caddr' and `caaddr'. I suspect that you're going to be even more unhappy with those constructions.

The same can be said about older languages like C, which also have standardized notations.

Why fix what isn't broken?


> for combinations like `caddr' and `caaddr'

Right...because `caddr' and `caaddr' are good because??? And when is the last time you consciously used any of those primitives?


I use them frequently. Having to write something like `(car (car (cdr foo)))` is common (`caadr`).


Because it is broken. It's not broken if you've already learned it and internalized the terminology; it's broken for everyone else because it's needlessly difficult to learn (and actively dissuades people from wanting to learn it, hence all the articles evangelizing Lisp).


Old communties have old words. Check some UNIX command names sometimes. C doesn't rename its operators either.

Renaming stuff every few years dosn't make it easier to learn.


By that rationale every foreign language is broken, and, maybe more pointedly, every language but Chinese (or possibly Spanish) is broken and needlessly difficult to learn.


The trend of history since babel seems to be going in this direction. If there is eventually a universal common tongue this rational will be proven right.


Some lisps use parenthesis and brackets interchangeably. Some people prefer to strategically alternate them, but you're free to use them exclusively.

Guile Scheme, for example:

  scheme@(guile-user)> [list 1 2 3] 
  $1 = (1 2 3)
  scheme@(guile-user)> (list 1 2 3) 
  $2 = (1 2 3)
  scheme@(guile-user)> [car '[1 2 3]]
  $3 = 1


While true, this is not officially supported as part of the RnRS standard I believe. They set these characters aside as reserved for future use.


Yes, you're correct. R7RS at least explicitly reserves brackets and braces, and only acknowledges parenthesis in its syntax.


I think this depends on which RnRS you look at.


Do some of the older ones just completely omit reserving them?


R6RS: pairs and lists, enclosed by ( ) or [ ] (see section 4.3.2)


Ah the problem child. :) I've mostly only paid attention to R5RS and R7RS.


I'm giving a talk in March at LibrePlanet 2018 entited "The Ethics Void". The lack of ethics in CS education is a core component of the talk. I'm neck-deep in my talk research right now, so if you are a, student, educator, or anyone else with thoughts on ethics in CS, I'd love to hear from you:

https://mikegerwitz.com/talks

Unfortunately, the codes of ethics, courses, etc that do exist largely ignore user freedoms (in a software freedom sense) and the host of ethical concerns that come with it. If you have examples that _do_ address those issues, I'd really appreciate hearing about it.

And please join us at LP2018 (hosted at MIT)!


> and I think it's important to remember that both want user freedom

As a free software activist, I haven't found that to be true. Remember that the term "open source" was created explicitly to sell the development methodology to businesses without talking about the ethical issues.

When developers write software under the umbrella of "open source", many aren't even aware of software freedom issues---they may be doing it because their peers are doing it; because they were told they should do it for a portfolio to get a job; or maybe because they like sharing their software with others. Some businesses liberate their code merely for contributions or press.

That's certainly not the case for all open source developers---there is, as you said, an overlap. But it's important to use the term "free software" and talk about software freedom to start those discussions and get people thinking about software freedom.


As a free software activist, do you think our effectual software freedoms would have advanced as far as they have without OSI's emphasize on the practical aspects of libre software? Do you think Eric Raymond and Bruce Perens could have made similar inroads with businesses if they had stuck to the (ambiguous, IMO) "free software" moniker?


I can't speculate what the norm might be today if businesses were talking about free software instead of "open source". It might have provided benefit to the movement, or it might have diluted the term. Ironically, in making the distinction between open source and free software, we have the opportunity to clarify its meaning and make a clear distinction between methodology and ethics/ideology.

Open source---regardless of whether history would have been different if the term had never originated---has contributed significantly to the dissemination of free software and the amount of software released under free licenses. But it's completely disproportionate to the amount it has advanced the principles of software freedom.

Is it good that more people are using free software? Is it good that there is so much of it available? Absolutely---I'm able to run a fully free system, down to the BIOS. But I'm among a small group that does so on principle, and will not abandon freedom for proprietary software that is more feature-rich, performant, etc.


> There are a lot of examples, but the most notable is the endorsement / promotion of the X60 / X200 with non-free EC firmware

See https://www.gnu.org/philosophy/free-hardware-designs.en.html


> What is the boundary, in digital devices, between hardware and software? It follows from the definitions. Software is the operational part of a device that can be copied and changed in a computer; hardware is the operational part that can't be. This is the right way to make the distinction because it relates to the practical consequences.

> There is a gray area between hardware and software that contains firmware that can be upgraded or replaced, but is not meant ever to be upgraded or replaced once the product is sold.

See http://ps-2.kev009.com/pccbbs/mobiles/7buj19us.txt ^F EC version


> I'll believe it when I see it. We have become too dependent on core components that are not being properly maintained, lack funding or both. [...] more funding is put towards critical GNU components (instead of new bloated projects).

The GNU Project is a separate entity from the FSF. The FSF provides infrastructure and does provide fundraising / direct funds for certain projects, but otherwise, GNU projects are maintained by individuals with no connection to the FSF. To offer you program to GNU, you send it to GNU volunteers for evaluation (I am one of two active evaluators), after which it is sent directly to rms for final determination. The FSF is involved only if we need to get the sysadmins involved for something.

If you support a GNU package, donate directly to that project (or via the FSF's fundraising page, if applicable).

> I still support the idea of Libre / Free Software, just not the religion and church that popped up around it.

You criticize the FSF for "making compromises", and then criticize them for sticking hard to their principles.

I disagree that they are compromising on their principles.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: