Hacker News new | past | comments | ask | show | jobs | submit login
Die EmacsWiki, Die (batsov.com)
69 points by bozhidar on Mar 20, 2012 | hide | past | favorite | 44 comments

I've started using Emacs a few years ago (we have a youngun' here!), and EmacsWiki is the best concentrated source of information around Emacs.

Which is a crying shame.

I agree with the author: while the goal is noble, the implementation is terrible. Discussions and content are mixed up, for example look at the cscope page [1]. Which is the latest and best package for integrating the tool?

It's 2012. Unix has had package management for decades. It's the age of app stores, why am I still downloading elisp files from a wiki? I want the equivalent of vimscripts! I want something better!

Emacs is an incredibly powerful tool, which has had many features decades before those newfangled IDEs. Unfortunately that also means that there's incredible inertia in the community. Here's hoping that the OP's article can trigger something.

[1] http://emacswiki.org/emacs/CScopeAndEmacs

To be fair, Emacs has had a package manager package, package.el (heh), for quite some time now. It can download and install packages from a repository, like Marmalade, though I've found it to be a bit shaky in the past; I've had to manually delete the files of a botched package, and then who-knows-what to get it to fully disappear.

It's, thankfully, been bundled in the default Emacs 24. And, thank the ghosts of the ancient lispers, that savagery of having a million-zillion different autocompletion interfaces for every damned thing may finally be put to an end with the new standardized autocompletion thingy.

Source: http://batsov.com/articles/2011/08/19/a-peek-at-emacs24/

I tried setting up package.el in Emacs 24 last week. "Shaky" is the word.

The big problem may be that I tried to use el-get, based on some dangerously optimistic blog posts which turned out to be obsolete because the author of el-get changed the semantics of his commands slightly at some point in the last six months. (It is vitally important to read the very bottom of the el-get web page.) But it was nothing that I couldn't figure out in two hours of tinkering and reading el-get's source code. (Good luck, beginners!)

Then I still had various packages that needed to be manually deleted, or manually have their status reset. And then I'd randomly call various el-get functions, restart emacs, and wave rubber chickens until the packages magically installed. Which, amazingly, did finally happen.

My conclusion, though, is that emacs packaging is a waste of time for me and I'm sorry I tried using it. Emacs is not Ubuntu, where every package install spreads critical binary files all over your system, has an average of ten dependencies, and is compiled against specific versions of C shared libraries on specific architectures. In Ubuntu, your packaging system is a matter of life and death. But Emacs packages tend to have few dependencies, their assets are made mostly of text files full of nice universal Lisp source, said assets all live nicely together in one directory in the filesystem where they are easy to manage via a single personal Git repository, and they get updated much more rarely than, say, the typical Ruby gem. So for me the bottleneck in adopting an Emacs package is never the time required to locate its source code and type "wget" or "git clone"; it's the time required to figure out how it works, integrate it into my workflow, define keybindings for it in .emacs, et cetera. Packaging systems solve a problem that I don't really have.

If the packaging scripts were rock solid and I could trust that, having now spent hours setting them up, I'll be able to rely on them to reinstall or update packages automatically over the next five years, that would be one thing. But I have no such confidence. I'm legitimately afraid that I will spend more time shaving yaks in the packaging system than I would have spent manually locating and downloading the packages in the first place.

I have had no problems whatsoever with packages in Emacs 24. I installed Emacs 24 via brew, used "package-install" to grab the packages I wanted, and that was it.

I know very little about Emacs in general, but what made you want to use el-get?

el-get can install packages from non-ELPA sources, the most important of which is Github.

(It also includes emacswiki as a source, but tptacek has just reminded me that this is the world's scariest feature and I'm going to disable it posthaste.)

It also lets you declare all your packages in your setup file, and will install them from that declaration. That means you can stick your setup file on a brand-new machine, start emacs, and all your packages auto-install themselves and start working.

I've concluded, however, that I should have just done what you did. ;) Use package-install where it's handy, then commit everything that package-install pulls down to Git, along with any packages that I manually install from Github or other sources. (I could use Git submodules or subtree-merge for the latter… if I liked hairy complications.) This process is tedious, but it's conceptually simple, reliable, and results in a Git-controlled .emacs.d that I can just clone onto new machines so long as Github is up.

> That means you can stick your setup file on a brand-new machine, start emacs, and all your packages auto-install themselves and start working.

This is easy to do with package.el:

(defvar my-packages '(starter-kit scpaste paredit))

(dolist (p my-packages) (when (not (package-installed-p p)) (package-install p)))

I think el-get made sense before community package sources like Marmalade and MELPA existed, but I don't see the point these days.

> The articles are littered with crappy advice confusing beginners, have little structure and are filled with ridiculous questions (questions in an wiki???)

The original wiki has questions, back-and-forth-discussion and loosely structured content on many pages. Maybe some pages need to be maintained/wikified/deprecated, but the EmacsWiki itself is fine. Also, it was never intended to be the authoritative GNU Emacs wiki. GNU Emacs is self-documenting. The non-standard stuff needs the wiki more.

> GNU Emacs is self-documenting.

Sure, if you're extremely comfortable reading emacs lisp spread across many files.

Just like Spanish doesn't need a dictionary, since it's self-defining once you move to Spain, and spend three months learning it via the total immersion method.

I was going to counter this with "that's what 'M-x apropox <thing>' is for", then I remembered that around a third of the time that's the lead in to me diving into the source.

That said, the other 2/3 of the time Emacs does relatively well at self-documenting.

Self-documenting or not, I think the point stands, the standard stuff is very well documented via many means (a nice tutorial, a very comprehensive manual, an emacs lisp tutorial and an emacs lisp reference all ship with Emacs in addition to things like describe-function, describe-key, describe-variable etc.), so the role of the Wiki is to supplement those and not replace them.

The catch-22 is that I had no idea that any of those things existed until I checked the wiki.

(Actually, my friends told me.)

Really? The splash screen (literally the first thing that appears when you first run Emacs) has links to 3 key pieces of documentation: 2 tutorials and the reference manual, which is surprisingly comprehensive. It would be really hard for them to be more upfront about the documentation.

I have to agree about the wiki-ness. Wikipedia is the "weird one", not EmacsWiki.

And Wikipedia, with its talk pages separated but attached to its articles, was the first wiki that made me think "huh, maybe this Wiki thing is actually a good idea."

I have always been frustrated by "traditional" wikis that intersperse random bits of discussion with the article. No one really seems to know where to discuss something. The threading is horrible.

I am very glad that Wikipedia realized that you need to separate discussion about an article from a single, authoritative, neutral article. They are two very different needs, and trying to mix them into one just doesn't work.

In my opinion, it really depends on the subject matter. For an encyclopedia, inline arguments are surely the wrong thing. But in that case, you're really using a wiki-like system as a more user-friendly, accessible content management system.

And for things like c2, I'd consider the lack of threading an advantage. For lots of technical discussions, this leads to clarifications that are hidden somewhere deep in that thread pile and would require an editor to factor those out in the main article. Which works fine with something that has a huge user base or paid people to work on it (i.e. Wikipedia or corp "wikis"), but not for everything.

Actually adding discussion pages to the Emacs Wiki is just one setting away. Maybe this issue needs simply to be raised again? http://www.emacswiki.org/emacs/EmacsWikiSuggestions#toc17

Having experienced it myself, I tend to agree with the general point that getting started with Emacs is not helped by the online resources available.

However, I don't think it is constructive to wish that EmacsWiki would die in order for something better to come up. We are all free to start another wiki, built on any cms we prefer, and if MediaWiki is your choice, go for it. Assemble your moderators, make it better than anything EmacsWiki has provided to date, and you'll be the darling of the Emacs community. That would be constructive. :)

I've never used EmacsWiki, but the tone of this article seems a bit off, mocking the author of EmacsWiki for using his own software, etc.

It also overlooks one of the hardest parts of building a community site like emacswiki, which is, well, building the community!

Anyone can install mediawiki. Not many people will be able to put the time and effort that the emacswiki community has to keep a site going.

About the only part of the article that I agree with is that it's time to start moving code off the wiki. Though this isn't a "deadline" type problem, it should simply be discouraged going forward and packages of interest should start migrating.

Not only that, package developers are 'lazy' for not documenting or moving to github? I don't see the author volunteering to do anything. :)

> but the tone of this article seems a bit off

Indeed. I smell some personal bias/agenda here.

You can not kill off an existing , actively used system (however crufty it may be) without a fully functional alternate in place.

You know, I didn't get that vibe. I felt that the author brought up a lot of legitimate complaints about EmacsWiki. Having used EmacsWiki, I agree with a lot of them, especially the stuff about the advice on the wiki usually being very dated and confusing. The choice of software might be the least of the complaints, but the author didn't seem to dwell on it.

Poorly written post on several fronts. The English is poor (forgivable), but the points made about the structure and security of wikis are not well taken, and reflect of misunderstanding of WikiNature (http://c2.com/cgi/wiki?WikiNature).

On a more practical level, the post points out some flaws in EmacsWiki, asserts that some arbitrary alternatives would be better (MediaWiki vs. OddMuse), but does not propose a path to get there from here or explain how the switch would be worth the work.

Personally, I think it would be kind of neat to convert the EmacsWiki into OrgMode, push it to a Git repo and publish it the way Worg is published.

I disagree that you can handwave around public editing of executable code that is by convention copied and pasted to hundreds of machines by invoking "WikiNature".

I agree that unsecured editing of code is a problem, and I did not mean to imply otherwise. I recommend reading "On Trusting Trust" if you're interested in such issues.

There are already other mechanisms in place to distribute Emacs code, like any of the Emacs package managers and Git, and yet EmacsWiki continues to be a place where code is collected and discussed.

I don't think moving to another wiki system would change that, since any other wiki system would have the same shortcomings as OddMuse in this respect. There is a straight trade-off between maintaining security on wiki pages and their utility. OddMuse does a good job, like all wikis, of keeping a page history that allows all edits to be audited. A new wiki might prevent editing of the code, or only allow editing by "verified" users, but that still provides no real improvement to security, since anyone can sign up and post code. Neither, incidentally, does a Git repository like GitHub or Gitorious; if you're unwilling to read and understand the code you download, you still have to put your faith in folks you don't know. Even if you do read and understand the code, you still can't be sure.

More importantly, however, is your implied assertion that security is a problem in practice. Have there been any cases where malicious code was posted on EmacsWiki? Did it cause harm?

I'm getting the feeling like "publicly editable code" is a manufactured issue to be divisive, but I could just be unaware of a security problem that has been pervading the Emacs community.

I have no idea why 5 paragraphs of message board comment is supposed to get me to ignore the fact that anyone on the Internet could backdoor my Emacs by editing a wiki page.

He's right; community code is a model that works on Github and absolutely does not work on an unauthenticated Wiki.

Well, there goes my relaxing afternoon. ;)

At least I'm pretty sure I don't have many emacs packages that originally came from a file on Emacswiki...

I looked too. Crazy that it took a Batsov post to get me to realize how dumb that system is.

I don't agree with the post on many levels. But "The English is poor"? That complaint sounds like a low blow. Native speakers are a minority of total English speakers, and the majority may have something to say, too.

I'm still giving you an upvote because you bring up Worg.

It certainly wasn't meant to be a low blow...I apologize if it came off that way. I meant it as part of a larger argument to support my impression that the post was not well thought out.

Well, that's a first (regarding my "Poor English"). You shouldn't confuse poor English with poor proofreading, though :-)

I wouldn't have called it poor English! I wouldn't have guessed from the text that you aren't a native English speaker - I had to check your About page to be sure.

Your writing isn't as polished as, say, Paul Graham's writing, but then very few people can write at that standard.

I won't thank you for suggesting GitHub, because after I've taken your suggestion, I will be less free! Gitorious is the superior solution :)

I upvoted you, but mostly because I hate downvotes for unpopular stances.

But please answer this question: how does using Github make you "less free"? All parts of Github (even parts of the web interface, like the wiki) can be used stand-alone. All your data can be easily dumped, most of them in a ready-to-reuse form (the git repositories, the wiki and github pages). So, from lock-in perspective, gitorious and github are quite alike. What exactly is it that makes you, as an individual, less free then using gitorious? Sure, the software is less free, but your data: not so much.

Totally agree about Gitorious, but I think it'd be wise to support GitHub (and Bitbucket) as they are used by a large chunk of people.

"wise to support github"?

What does that mean? Github is not some function/feature that you support?

The point that the article makes is that OddMuse makes a horrible project hosting system. It's easy enough to store a link to github, or bitbucket, or gitorious (and in all reality, they all speak git, so it's just another remote) as the official project location in whatever new wiki-system emerges.

Basically, responding to Github issues and pull requests gives access to a whole wealth of people who use Github to communicate and collaborate.

So in order to "support github and bitbucket" you have to keep copies of your project at both sites? That makes less sense than the original post. The OP uses and when including bitbucket the only way your explanation of "support github" makes sense is with "or bitbucket."

> So in order to "support github and bitbucket" you have to keep copies of your project at both sites?

Yes. It's not difficult and means you can accept pull requests from both Mercurial and Git users.



And separate issue/ticket systems? Do you do it for the LOLZ?

The peepcode on emacs helped me immensely when I tried emacs a few years ago. Emacs is really really daunting for a beginner.

I tried emacs for a week , gave up, went back to textmate, and have since switched to vim.

Internet is a nice place ranting... Some years ago, I did an Oddmuse wiki to/from git:


So you can grab all the emacswiki website (based on Oddmuse) and convert it to your favorite markup/wiki relying on a git repository.


Disagree, emacswiki is a great resource.

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