웹 애플리케이션을 fork하기?

권순선의 이미지

위키피디어의 컨텐트들은 모두 GFDL이므로 누구나 이용할 수 있습니다. (최근에는 cc로도 같이 릴리즈되었다는 이야기를 들었습니다만) 그리고 위키피디어의 기반 소프트웨어인 미디어위키도 오픈소스라 누구나 미디어위키를 가져다 쓸 수 있습니다.

그런데 내가 원하는 기능이 있어 미디어위키를 수정하고 그 수정된 미디어위키를 가지고 위키피디어의 오리지널 데이터에 접근하는 것은 불가능하죠. 이것은 KLDP도 마찬가지입니다.

웹 애플리케이션은 데이터를 떼어 놓고 보면 앙꼬없는 찐빵이나 마찬가지기에, 이 데이터를 정해진 방법(정해진 소프트웨어)대로만 접근하여야 한다는 것을 섭섭하게(?) 생각하는 사람들이 http://forkolator.org/ 라는 것을 만들어 냈습니다. 위키피디어를 계속 예로 들자면, 우리가 미디어위키를 원하는 방법으로 수정하면서도 위키피디어의 데이터에 계속해서 read/write 권한이 부여된다는 것입니다.

이렇게 되면 단순히 해당 소프트웨어 코드만을 fork하는 것이 아니라 웹 애플리케이션 자체를 fork하게 되는 셈입니다. 기존에 데이터/코드에 대해 각각 따로따로 보장되던 자유를 한차원 더 심화한 것입니다. 물론 여러가지 기술적/정책적인 장벽들이 존재합니다. 가장 쉽게 생각할 수 있는 것은, read 권한을 가지고 DOS 공격을 퍼붓거나, write 권한을 가지고 스팸메시지를 계속 올리는 등의 악의적 사용을 어떻게 제어할 것인가 하는 것과 해당 데이터의 저작권에 문제가 없느냐 하는 것이 되겠지요.

점점 더 많은 사람들이 다양한 형태의 웹 애플리케이션을 사용하면서 각각의 서비스나 서비스가 제공하는 데이터에 lock-in되어가고 있습니다. 웹기반 이메일 서비스가 가장 대표적인 경우가 되겠지요. 데이터/코드가 밀접하게 융합되어 있는 웹 애플리케이션에 오픈소스의 개념이 어떤 식으로 확산될지는 아직 잘 모르겠지만 기술적/정책적으로 상당히 흥미있는 주제임에 틀림 없습니다.

예전에 제가 썼던 오픈 서비스, 오픈 데이터: 웹2.0시대의 오픈소스, 리듬박스 vs. iTunes로 본 오픈 서비스/오픈 데이터의 사례도 한번 재미삼아 읽어 보시기 바랍니다...

(이 글은 http://lwn.netFreeing web services with Forkolator의 내용에 제 생각을 추가해서 작성한 것입니다.)

댓글

aero의 이미지

웹서비스가 어떤 형태로든 해당 웹어플리케이션을 통하지 않고 그 데이터를 다룰 수 있도록 매쉬업등에 많이 사용되는 API 같은것을 제공한다면 웹어플리케이션 fork란게 의미가 있는걸까요? 그런경우 그냥 API의 스팩에 맞게 나름대로의 인터페이스를 만들기만 하면 되니까요.

Gmail같은 경우 메일서비스이지만 사용자들이 비교적 큰 저장용량임을 이용해서 편법으로 파일시스템처럼 사용가능하도록 GmailFS같은것을 만든것처럼 본래 서비스의 취지와는 어긋나지 않게만 사용한다는 어떤 상호간의 약속과 규정같은것만 있다면 그게 웹어플리케이션이든 독립데스크탑 어플리케이션든 어떤 방법으로 fork를 하든지 문제가 안될 것 같습니다.

권순선의 이미지

api를 제공하고 그 api를 통해 read/write가 가능하다면 어느 정도의 자유도는 확보된다고 볼 수 있을 것입니다. 그러나 여전히 데이터에 대한 접근은 주어진 api의 기능에 의해 한계선이 그어지게 됩니다. read만 되고 write는 안되는 경우가 가장 대표적인 사례가 될 수 있겠지요.

웹 애플리케이션을 fork한다는 것이 오픈소스 소프트웨어의 코드를 fork한다는 것과 동등한 수준으로 이야기할 수 있으려면 오픈소스 소프트웨어의 코드를 수정할 때 제약이 없는 것처럼 웹 애플리케이션의 데이터에 접근하는 방식 역시 제약이 없어야 비슷한 정도의 자유도가 주어지는 것이기 때문에 진정한(?) fork라고 말할 수 있다고 생각합니다.

그러나 이것은 꼭 그렇게 되어야 한다는 것과는 다를 것입니다. 앞서도 적었듯이 이렇게 할 경우 DOS 공격이나 스패밍 등에 대한 대처가 특히 중요한 바, 데이터에 대한 무제한의 read/write 권한 부여는 당장은 현실적으로 불가능하다고 생각합니다. 그렇게 하는 것이 꼭 100% 좋은 것만도 아닌 것 같고요.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.