{"id":13741088,"url":"https://github.com/jrwdunham/old-webapp","last_synced_at":"2025-09-14T16:54:35.848Z","repository":{"id":14004306,"uuid":"16705699","full_name":"jrwdunham/old-webapp","owner":"jrwdunham","description":"Online Linguistic Database --- software for creating web applications to collaboratively document languages.","archived":false,"fork":false,"pushed_at":"2014-12-29T23:57:07.000Z","size":2300,"stargazers_count":4,"open_issues_count":26,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-05-08T21:35:15.216Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"www.onlinelinguisticdatabase.org","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jrwdunham.png","metadata":{"files":{"readme":"README.html","changelog":null,"contributing":null,"funding":null,"license":"COPYING.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-02-10T19:00:41.000Z","updated_at":"2023-05-21T20:13:11.000Z","dependencies_parsed_at":"2022-09-23T17:52:49.257Z","dependency_job_id":null,"html_url":"https://github.com/jrwdunham/old-webapp","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jrwdunham/old-webapp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jrwdunham%2Fold-webapp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jrwdunham%2Fold-webapp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jrwdunham%2Fold-webapp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jrwdunham%2Fold-webapp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jrwdunham","download_url":"https://codeload.github.com/jrwdunham/old-webapp/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jrwdunham%2Fold-webapp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275136752,"owners_count":25411709,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-14T02:00:10.474Z","response_time":75,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-03T04:00:55.311Z","updated_at":"2025-09-14T16:54:35.811Z","avatar_url":"https://github.com/jrwdunham.png","language":"Python","funding_links":[],"categories":["Software"],"sub_categories":["Utilities"],"readme":"\u003cp\n\u003eThe Online Linguistic Database (OLD) is software for creating web applications dedicated to multi-user, collaborative documention of natural (and usually endangered or understudied) languages. An OLD web application helps contributors to create a consistent, structured, and highly searchable web-based repository of language data. These data consist of textual representations of linguistic examples (words, morphemes, and sentences with analyses and annotations), associated and embedded media files, and exportable representations of texts (e.g., research papers, narratives, etc.)\u003c/p\n\u003e\u003cdiv id=\"features\"\n\u003e\u003ch1\n  \u003eFeatures\u003c/h1\n  \u003e\u003col\n  \u003e\u003cli\n    \u003eMulti-user, concurrent read/write access to a server-side language database.\u003c/li\n    \u003e\u003cli\n    \u003eInterlinear glossed text (IGT) representations of data with integrated feedback on lexical consistency or morphological analyses.\u003c/li\n    \u003e\u003cli\n    \u003ePowerful searches over the data set.\u003c/li\n    \u003e\u003cli\n    \u003eAuthentication and authorization to control access to data.\u003c/li\n    \u003e\u003cli\n    \u003eExport to LaTeX, CSV, and plain text.\u003c/li\n    \u003e\u003cli\n    \u003eMedia file support: many-to-many associations of audio, video, and/or image with content embedded in data representations.\u003c/li\n    \u003e\u003cli\n    \u003eIGT text creation.\u003c/li\n    \u003e\u003cli\n    \u003eAutomatic orthography conversion.\u003c/li\n    \u003e\u003cli\n    \u003eInventory-based transcription input validation.\u003c/li\n    \u003e\u003c/ol\n  \u003e\u003c/div\n\u003e\u003cdiv id=\"versions\"\n\u003e\u003ch1\n  \u003eVersions\u003c/h1\n  \u003e\u003cp\n  \u003eThis is the OLD v. 0.2.X. It is being used in nine language-specific OLD web applications (see www.onlinelinguisticdatabase.org) and is still being maintained. However, primary development has moved to the \u003ca href=\"https://github.com/jrwdunham/old\"\n    \u003eOLD v. 1.0\u003c/a\n    \u003e, which includes support for creating morphological parsers, provides improved search functionality, and implements a shift to a more modular and reusable architecture (i.e., a RESTful HTTP/JSON web service with a SPA GUI). The applications running on the OLD v. 0.2.X will be migrated to the OLD v. 1.0 in the near future.\u003c/p\n  \u003e\u003c/div\n\u003e\u003cdiv id=\"license\"\n\u003e\u003ch1\n  \u003eLicense\u003c/h1\n  \u003e\u003cp\n  \u003eThe OLD 0.2.X is open source and is licensed under the \u003ca href=\"https://gnu.org/licenses/gpl.html\"\n    \u003eGNU GENERAL PUBLIC LICENSE Version 3\u003c/a\n    \u003e. (Note that the OLD 1.0 is also open source but is licensed under \u003ca href=\"http://www.apache.org/licenses/LICENSE-2.0.txt\"\n    \u003eApache 2.0\u003c/a\n    \u003e.)\u003c/p\n  \u003e\u003c/div\n\u003e\u003cdiv id=\"technologies\"\n\u003e\u003ch1\n  \u003eTechnologies\u003c/h1\n  \u003e\u003cp\n  \u003eThe OLD is written in Python, using the \u003ca href=\"http://www.pylonsproject.org/projects/pylons-framework/about\"\n    \u003ePylons\u003c/a\n    \u003e web framework and an \u003ca href=\"http://www.sqlalchemy.org/\"\n    \u003eSQLAlchemy\u003c/a\n    \u003e abstraction over a MySQL database.\u003c/p\n  \u003e\u003c/div\n\u003e\u003cdiv id=\"get-install\"\n\u003e\u003ch1\n  \u003eGet \u0026amp; Install\u003c/h1\n  \u003e\u003cp\n  \u003eWhen installing the OLD 0.2.X, it is recommended that you use an isolated Python environment using \u003ca href=\"http://www.virtualenv.org/en/latest/virtualenv.html\"\n    \u003evirtualenv\u003c/a\n    \u003e. (Note that the OLD 0.2.X has been tested with Python 2.5 and 2.6, but not 2.7. Depending on your system Python version, it may be necessary to install Python 2.5 or 2.6 using \u003ca href=\"https://github.com/yyuu/pyenv\"\n    \u003epyenv\u003c/a\n    \u003e or \u003ca href=\"https://github.com/utahta/pythonbrew\"\n    \u003epythonbrew\u003c/a\n    \u003e.) Once \u003ccode\n    \u003evirtualenv\u003c/code\n    \u003e is installed, issue the following commands to create the isolated environment and to make sure you are using its Python:\u003c/p\n  \u003e\u003cpre\n  \u003e\u003ccode\n    \u003evirtualenv env\nsource env/bin/activate\n\u003c/code\n    \u003e\u003c/pre\n  \u003e\u003cdiv id=\"from-source\"\n  \u003e\u003ch2\n    \u003eFrom Source\u003c/h2\n    \u003e\u003cp\n    \u003eTo download the source code of the OLD v. 0.2.X, install its dependencies, and serve it locally with the default configuration, run:\u003c/p\n    \u003e\u003cpre\n    \u003e\u003ccode\n      \u003egit clone https://github.com/jrwdunham/old-webapp.git\ncd old-webapp\npython setup.py develop\npaster setup-app development.ini\npaster serve --reload development.ini\n\u003c/code\n      \u003e\u003c/pre\n    \u003e\u003c/div\n  \u003e\u003cdiv id=\"from-pypi\"\n  \u003e\u003ch2\n    \u003eFrom PyPI\u003c/h2\n    \u003e\u003cp\n    \u003eTo install a stable release of the OLD 0.2.X from the \u003ca href=\"https://pypi.python.org/pypi/onlinelinguisticdatabase/0.2.9\"\n      \u003ePython Package Index\u003c/a\n      \u003e, use \u003ccode\n      \u003eeasy_install\u003c/code\n      \u003e and run:\u003c/p\n    \u003e\u003cpre\n    \u003e\u003ccode\n      \u003eeasy_install \u0026quot;OnlineLinguisticDatabase==0.2.9\u0026quot;\n\u003c/code\n      \u003e\u003c/pre\n    \u003e\u003cp\n    \u003eor use \u003ccode\n      \u003ePip\u003c/code\n      \u003e and run:\u003c/p\n    \u003e\u003cpre\n    \u003e\u003ccode\n      \u003epip install \u0026quot;OnlineLinguisticDatabase==0.2.9\u0026quot;\n\u003c/code\n      \u003e\u003c/pre\n    \u003e\u003cp\n    \u003eTo create the config file, generate the default values, and serve the application:\u003c/p\n    \u003e\u003cpre\n    \u003e\u003ccode\n      \u003emkdir my_old_webapp\ncd my_old_webapp\npaster make-config onlinelinguisticdatabase production.ini\npaster setup-app production.ini\npaster serve production.ini\n\u003c/code\n      \u003e\u003c/pre\n    \u003e\u003c/div\n  \u003e\u003cdiv id=\"using-mysql\"\n  \u003e\u003ch2\n    \u003eUsing MySQL\u003c/h2\n    \u003e\u003cp\n    \u003eThe default configuration file (\u003ccode\n      \u003edevelopment.ini\u003c/code\n      \u003e) uses a local SQLite database named \u003ccode\n      \u003edevelopment.db\u003c/code\n      \u003e, which is probably fine for exploring the system initially. However, a deployed OLD 0.2.X application should use MySQL.\u003c/p\n    \u003e\u003cp\n    \u003eFirst login to MySQL using your root account and create a MySQL database and a user with sufficient privileges. Something like this (replacing \u003ccode\n      \u003edbname\u003c/code\n      \u003e, \u003ccode\n      \u003eusername\u003c/code\n      \u003e, and \u003ccode\n      \u003epassword\u003c/code\n      \u003e with sensible values):\u003c/p\n    \u003e\u003cpre\n    \u003e\u003ccode\n      \u003emysql\u0026gt; create database dbname default character set utf8;\nmysql\u0026gt; create user 'username'@'localhost' identified by 'password';\nmysql\u0026gt; grant select, insert, update, delete, create, drop on dbname.* to 'username'@'localhost';\nmysql\u0026gt; quit;\n\u003c/code\n      \u003e\u003c/pre\n    \u003e\u003cp\n    \u003eThen comment out the SQLite option in the OLD 0.2.X configuration file (i.e., \u003ccode\n      \u003edevelopment.ini\u003c/code\n      \u003e or \u003ccode\n      \u003eproduction.ini\u003c/code\n      \u003e) and uncomment the two MySQL lines, changing values as appropriate:\u003c/p\n    \u003e\u003cpre\n    \u003e\u003ccode\n      \u003esqlalchemy.url = mysql://username:password@localhost:3306/dbname\nsqlalchemy.pool_recycle = 3600\n\u003c/code\n      \u003e\u003c/pre\n    \u003e\u003cp\n    \u003eNow the system is set up to use MySQL. Run the \u003ccode\n      \u003esetup-app\u003c/code\n      \u003e command again to generate the default values in the MySQL db:\u003c/p\n    \u003e\u003cpre\n    \u003e\u003ccode\n      \u003epaster setup-app production.ini\n\u003c/code\n      \u003e\u003c/pre\n    \u003e\u003cp\n    \u003eor:\u003c/p\n    \u003e\u003cpre\n    \u003e\u003ccode\n      \u003epaster setup-app development.ini\n\u003c/code\n      \u003e\u003c/pre\n    \u003e\u003cp\n    \u003e(You can ignore the \u003ccode\n      \u003edata truncated\u003c/code\n      \u003e warnings. This is a known issue.)\u003c/p\n    \u003e\u003cp\n    \u003eSee \u003ca href=\"http://pylonsbook.com/\"\n      \u003eThe Pylons Book\u003c/a\n      \u003e for further details on serving and configuring Pylons-based web applications.\u003c/p\n    \u003e\u003c/div\n  \u003e\u003cdiv id=\"default-users\"\n  \u003e\u003ch2\n    \u003eDefault Users\u003c/h2\n    \u003e\u003cp\n    \u003eRunning \u003ccode\n      \u003epaster setup-app\u003c/code\n      \u003e creates three users with the following usernames and passwords.\u003c/p\n    \u003e\u003cul\n    \u003e\u003cli\n      \u003eusername: \u003ccode\n\t\u003eadmin\u003c/code\n\t\u003e, password: \u003ccode\n\t\u003eadmin\u003c/code\n\t\u003e\u003c/li\n      \u003e\u003cli\n      \u003eusername: \u003ccode\n\t\u003econtributor\u003c/code\n\t\u003e, password: \u003ccode\n\t\u003econtributor\u003c/code\n\t\u003e\u003c/li\n      \u003e\u003cli\n      \u003eusername: \u003ccode\n\t\u003eviewer\u003c/code\n\t\u003e, password: \u003ccode\n\t\u003eviewer\u003c/code\n\t\u003e\u003c/li\n      \u003e\u003c/ul\n    \u003e\u003cp\n    \u003eUse the admin account to create a new administrator-level user and delete all of the default users before deploying an OLD application.\u003c/p\n    \u003e\u003c/div\n  \u003e\u003cdiv id=\"common-issues\"\n  \u003e\u003ch2\n    \u003eCommon Issues\u003c/h2\n    \u003e\u003cp\n    \u003eNote that if you are running Debian or Ubuntu and get an error like \u003ccode\n      \u003eEnvironmentError: mysql_config not found\u003c/code\n      \u003e after running \u003ccode\n      \u003epython setup.py develop\u003c/code\n      \u003e, then you probably need to install \u003ccode\n      \u003elibmysqlclient-dev\u003c/code\n      \u003e:\u003c/p\n    \u003e\u003cpre\n    \u003e\u003ccode\n      \u003esudo apt-get install libmysqlclient-dev\n\u003c/code\n      \u003e\u003c/pre\n    \u003e\u003cp\n    \u003eIf you get an error page when using the browser-based interface, re-saving the system settings should solve it. I.e., go to Settings \u0026gt; System Settings \u0026gt; Edit System Settings and click the \u0026quot;Save Changes\u0026quot; button.\u003c/p\n    \u003e\u003c/div\n  \u003e\u003c/div\n\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjrwdunham%2Fold-webapp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjrwdunham%2Fold-webapp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjrwdunham%2Fold-webapp/lists"}