{"id":13740177,"url":"https://github.com/sillsdev/wesay","last_synced_at":"2026-04-02T01:20:34.086Z","repository":{"id":11627814,"uuid":"14127927","full_name":"sillsdev/wesay","owner":"sillsdev","description":"Allows language communities to build their own dictionaries. Development is tracked at https://jira.sil.org/projects/WS","archived":false,"fork":false,"pushed_at":"2025-05-07T09:35:05.000Z","size":109158,"stargazers_count":18,"open_issues_count":3,"forks_count":16,"subscribers_count":14,"default_branch":"develop","last_synced_at":"2025-05-08T19:47:05.301Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://software.sil.org/wesay/","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sillsdev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2013-11-05T00:36:46.000Z","updated_at":"2025-02-26T19:43:45.000Z","dependencies_parsed_at":"2025-05-08T19:48:10.801Z","dependency_job_id":null,"html_url":"https://github.com/sillsdev/wesay","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/sillsdev/wesay","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sillsdev%2Fwesay","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sillsdev%2Fwesay/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sillsdev%2Fwesay/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sillsdev%2Fwesay/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sillsdev","download_url":"https://codeload.github.com/sillsdev/wesay/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sillsdev%2Fwesay/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31293773,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-02T01:05:07.454Z","status":"ssl_error","status_checked_at":"2026-04-02T00:56:46.496Z","response_time":53,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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:43.917Z","updated_at":"2026-04-02T01:20:34.049Z","avatar_url":"https://github.com/sillsdev.png","language":"C#","readme":"# Readme\n\nInstallers can be found on the [product website](http://software.sil.org/wesay/).\n\n## Readme for Developers\n\nThis file contains information that may be useful to anyone wanting to work on\nWeSay development.  Much of this information is Linux specific, but some of it\napplies to both Linux and Windows development.\n\nIn this document, `$wesay` refers to the directory of the wesay repository\n(e.g. `~/src/wesay` or `C:\\dev\\wesay`).\n\n### UBUNTU DISTRIBUTION PACKAGES NEEDED\n\nYou will need a few system packages installed.\n\n\tsudo apt-get install libicu-dev curl\n\n### OBTAINING WESAY SOURCES\n\nThe basic WeSay repository is at github, and can be cloned as follows:\n\n\tgit clone git://github.com/sillsdev/wesay.git\n\n### SIL LINUX PACKAGES NEEDED\n\nSIL has Linux (Ubuntu/Debian) package repositories that are used to distribute\nsoftware that are either original with us or specialized for our use.  There\nare two basic repositories, often referred to as PSO or PSO-experimental.  Two\npackages need to be installed from these repositories: geckofx29 and\nxulrunner-geckofx29 (which is a dependency of geckofx29).\n\nThe following commands will add the repositories to your apt setup and then\ndownload and install the packages.  (You need to add the second repository only\nif the first repository doesn't work.)\n\n\tsudo add-apt-repository 'deb http://packages.sil.org/ubuntu precise main'\n\tsudo add-apt-repository 'deb http://packages.sil.org/ubuntu precise-experimental main'\n\twget -O - http://packages.sil.org/sil.gpg | sudo apt-key add -\n\tsudo apt-get update\n\tsudo apt-get install geckofx29\n\nIf you are not running precise on your machine, change precise and\nprecise-experimental to match your actual distribution.  If you are running\ndebian instead of ubuntu, then substitute accordingly.  (In that case, I don't\nthink there's a distinction of -experimental.)\n\n### NEED A PATCHED LINUX MONO\n\nUnfortunately the stock Mono has a number of bugs that we have found and fixed\nover the years.  Many of these fixes appear in newer versions of Mono. (Indeed,\nsome of the fixes are cherry-picks from later versions of the standard Mono.)\nBut enough fixes are specific to our work that we've been using a custom\nversion of Mono in FieldWorks development for years.  In order to benefit from\nthis work, the same version of Mono will be used for WeSay as well in the\nfuture.\n\nThere are two ways to obtain this patched version of Mono: build it or install\nthe packages for it.  (Real programmers use the first method, since that allows\nfor the possibility of adding your very own bugfixes to the mix!)\n\nFive separate repositories contain the necessary code for building the custom\nversion of Mono.  These should all be installed side-by-side.\n\n\tgit clone git://github.com/sillsdev/mono.git\n\tgit clone git://github.com/sillsdev/mono-basic.git\n\tgit clone git://github.com/sillsdev/gtk-sharp.git\n\tgit clone git://github.com/sillsdev/libgdiplus.git\n\tgit clone git://github.com/sillsdev/mono-calgary.git\n\nThe first four repositories contain the actual source code cloned from the Mono\nproject.  The fifth repository contains the build scripts and packaging\ninformation developed by SIL, largely by the Linux team based in Calgary.  After\ncloning these repositories, then the patched mono can be built and installed to\n`/opt/mono-sil` by the following command (assuming these five repositories are all\ncloned with their default names and the current directory is still the common\nparent):\n\n\tmono-calgary/BuildOptMono.sh\n\nThis will prompt you for your password to enable some sudo commands in the\nscript.  Depending on how fast your computer is, it may take 15 minutes to an\nhour to finish compiling and installing everything, and it may prompt you more\nthan once for your password.\n\nIf you don't want to build Mono for yourself (coward!!), then you can install\nthe following packages from PSO (or PSO-experimental as the case may be):\n\n\tmono-sil\n\tmono-basic-sil\n\tgtk-sharp2-sil\n\tlibgdiplus-sil\n\nThese packages install everything into the same place, `/opt/mono-sil`.  I\nhaven't actually tested whether installing works as well as building.\n\n### BUILDING WESAY\n\nThe simplest way to compile\nwesay is to use a batch file that calls `msbuild.exe` (on Windows) or a shell\nscript that calls `xbuild` (on Linux).  For example, in a Windows \"DOS box\"\nwindow,\n\n\tcd $wesay\\build\n\tTestBuild.bat\n\nOn linux, the operation is similar:\n\n\tcd $wesay/build\n\t./TestBuild.sh\n\nThese scripts perform a Debug build, placing the result in `$wesay/output/Debug`.\n#### TODO (Hasso) 2022.04: update scripts and instructions so this works:\n\u003e  If you prefer a Release build, then add `Release`\nas a command line argument to `TestBuild.bat` or `TestBuild.sh`.  The result would\nthen appear in `$wesay/output/Release`.\n\n### DEBUGGING\n\n#### USING VISUAL STUDIO ON WINDOWS\n\nIn Windows, WeSay can be debugged using Visual Studio.\n\n#### USING MONODEVELOP ON LINUX\n\n\nFor Linux, debugging requires using MonoDevelop, the standard Mono IDE.\nYou have a choice of using the standard MonoDevelop that comes with the\nsystem, which for Ubuntu/Precise was version 2.8, or using a newer version\ninstalled into `/opt`.  The newer version can be installed as follows:\n\n\tsudo add-apt-repository ppa:ermshiperete/monodevelop\n\tsudo apt-get update\n\tsudo apt-get install monodevelop-current\n\nIn either version of MonoDevelop, you can choose which Mono runtime to use for\na project, and you can add new Mono runtimes to the known list.  The Edit menu\nhas a Preferences command near the bottom.  Click on that and choose the \".NET\nRuntimes\" panel under Projects.  Click on the Add button and use the file\nchooser to find `/opt/mono-sil`.  Once you choose that, you should see \"Mono\n3.4.0.1 (/opt/mono-sil)\" as a possible choice.  Click on that\nitem to select it, then click on \"Set as Default\".  (of course, only if you do\nwant it as the default...)  After loading the WeSay solution (or creating your\nown solution to run WeSay if you like to be tricky), double check the runtime\nwith the \"Active Runtime\" command in the Project menu.\n\nOne more step is essential to actually get WeSay to run properly with the Mono\nruntime in `/opt/mono-sil`.  Under the Project menu, select the \"_ProjectName_\nOptions\" command.  This brings up the Project Options dialog. Choose the\nGeneral pane under Run and add the environment variable MONO_ENVIRON with the\nproper value for your installation.  This would be the full path to your wesay\nrepository with \"/environ\" appended to it.  For example, the setting might be\nsomething like this:\n\n\tMONO_ENVIRON\t   /home/steve/sillsdev/wesay/environ\n\nBe sure to click elsewhere in the dialog before clicking on the OK button.  One\nof MonoDevelop's aggravating \"features\" is that clicking OK does not by itself\nsave the most recent edit.  But losing focus to elsewhere in the same dialog\ndoes save the edit.  But enough editorializing...\n\n### RUNNING UNIT TESTS\n\nPeople have had varying success in running unit tests from inside MonoDevelop.\nSomeone who has had success will have to describe how they did it and the rest\nof us will have to verify whether it's a general solution.\n\nThe project files in the $wesay/build folder have targets that will run all of\nthe unit tests.  Once everything has been built with the Build or Compile\ntarget (which is what the TestBuild files described above do), then unit tests\ncan be run by using the TestOnly target.  For Windows, the command line would\nlook something like this:\n\n\tcd $wesay\\build\n\tmsbuild.exe /t:TestOnly /p:RootDir=.. /p:Configuration=Release build.win.proj\n\nFor Linux, it would be similar (adjust the setting for MONO_ENVIRON):\n\n\tcd $wesay\n\texport MONO_ENVIRON=$PWD/environ\n\tcd build\n\t/opt/mono-sil/bin/xbuild /t:TestOnly /p:RootDir=.. /p:Configuration=Release build.mono.proj\n\n### OTHER SOFTWARE NEEDED\n\n* princexml.com/download (for PDF exports and related unit tests)\n\n#### OTHER LINUX PACKAGES NEEDED\n\nFor developers, there are a few dependencies that may need to be installed\nmanually.  (These should be installed automatically for users by the Linux\npackage system.)  Here are the packages that we are aware of (in command line\nformat):\n\n\tsudo apt-get install chmsee\n\n### TESTING IN VAGRANT VIRTUAL MACHINE\n\nVagrant is a tool to \"Create and configure lightweight, reproducible, and portable\ndevelopment environments.\"  There are pre-packaged base images for Precise64 and Wasta64\ndistributions using VirtualBox.  These work on Linux, Windows, and Mac.  To install on\nLinux from the command-line:\n\n\tsudo apt-get install vagrant\n\nTo install on Windows or Mac, download the [installer](www.vagrantup.com/downloads.html).\nAfter installation, install the required plugins from the command-line on all platforms:\n\n\tvagrant plugin install vagrant-cachier\n\tvagrant plugin install vagrant-vbguest\n\nThe pre-packaged base images do not have dependencies installed.  The provisioning script\n(`bootstrap.sh`) is executed once when the VM is started and will install all the dependencies\nneeded to run a local build of WeSay executables.  The first time the VM is started, it\nwill have to download the required packages and then they are cached for subsequent runs.\nRun these commands from the command-line in the host (use the appropriate directory separator):\n\n\tcd $wesay/vagrant\n\tvagrant up precise64 (or wasta)\n\nThe status output of the provisioning (`bootstrap.sh`) will display in the terminal console that\nexecuted the vagrant up command. When it is completed, it will have mounted `$wesay` to `/wesay`\ninside the VM.  If the host and VM with have the same line endings (e.g. Ubuntu Saucy host\nand Ubuntu Precise VM), the `/wesay` directory can be used directly within the VM.\nRun these commands from the command-line in the VM:\n\n\tcd /wesay\n\t. environ\n\tmono output/Release/WeSay.App.exe\n\nWhen testing is complete, clean up the virtual machine by running these commands from the\ncommand-line of the host machine:\n\n\tcd $wesay/vagrant\n\tvagrant destroy precise64 (or wasta)\n\nRun `vagrant -h` from the command-line for other commands to halt, suspend, resume, etc or\nrefer to the [documentation](http://vagrantup.com).\n\n#### WINDOWS HOST WITH LINUX VAGRANT VM\n\nIf the host and VM have different line endings (e.g. Windows host and Ubuntu Precise VM),\nthen the mapped drive within the VM will have files with non-native line endings.  To work\naround this, setup a development directory inside the VM.  There is a script in the `$wesay/vagrant`\ndirectory to setup a clone in the `~/src/wesay` directory referencing the git repo in the host.\nRun these commands from the command-line inside the VM:\n\n\tcd /wesay/vagrant\n\t./setup-vm-wesay-dev.sh\n\tcd ~/src/wesay\n\tbuild/buildupdate.mono.sh\n\tbuild/TestBuild.sh\n\t. environ\n\tmono output/Release/WeSay.App.exe\n\n#### TESTING TEAMCITY CONFIGURATIONS\n\nTo test changes in TeamCity configuration and `build/buildupdate.*.sh`, it is best to use a clean\nenvironment.  There is a script in the `$wesay/vagrant` directory to install `buildupdate` to enable\nupdating the buildupdate scripts.  A clean development directory should be setup first.\nRun these commands from the command-line inside the VM:\n\n\tcd /wesay/vagrant\n\t./setup-vm-wesay-dev.sh\n\tsudo ./setup-buildupdate.sh\n\tcd ~/src/wesay\n\t../Buildupdate/buildupdate.rb -f build/buildupdate.mono.sh\n\tbuild/buildupdate.mono.sh\n\tbuild/TestBuild.sh\n\t. environ\n\tmono output/Release/WeSay.App.exe\n\n### BUILDING FOR WINDOWS INSTALLER\n\nTo set up a windows box for developing WeSay you need to install the following tools:\n\n- VS 2010, (Express works OK)\n- WIX 3.5  (Works fine)\n- Git-1.9.x (See a helpful configuration below for as you install it) =\u003e\n  you can grab this from: [msysgit.github.io](https://git-for-windows.github.io/)\n\t- Select Components Dialog\n\t\t- Additional Icons (if you want them)\n\t\t- Windows Explorer integration (simple, check all)\n\t\t- Otherwise stick with the defaults\n\t- Adjusting your PATH environment Dialog\n\t\t- Radio button recommendation:\n\t\t\t- Run Git and included Unix tools from the Windows Command Prompt\n\t\t\t\t(If you don't want that option, then select: \"Run Git from the Windows Command Prompt\")\n\t- Configuring the line ending conversions Dialog\n\t\t- Radio button recommendation:\n\t\t\t- Checkout as-is, commit Unix-style line endings\n\nConfigure the following environment variables:\n\n|||\n|-----------|-------------------|\n|http_proxy |(if you need one)|\n|path       |make sure that you include these (ymmv): `C:\\Program Files\\Windows Installer XML v3.5\\bin` (if 64bit, use: `C:\\Program Files (x86)\\...`) as well as `C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319`\n\nFor a nice alternative graphical git tool,\n\n- [Sourcetree](www.sourcetreeap.com) - unfortunately not available for Linux yet :(\n- [giteye](www.collab.net/giteyeapp)\n- [Smartgit](www.syntevo.com/smartgithg/)\n\nSome other helpful developer editing, or troubleshooting tools:\n\n- [Notepad++](notepad-plus-plus.org) - for source code editing\n- [JetBrains dotPeek](www.jetbrains.com/decompiler) - for decompiling .NET assemblies\n- [Process Explorer](technet.microsoft.com/en-ca/sysinternals/bb896653.aspx) -\n  for looking at which dlls are loaded, and for looking at which files are opened or loaded\n- [depends](dependencywalker.com) - for troubleshooting system errors in loading and executing modules\n\nTo build for installer, just type in the windows command prompt:\n\n\tbuildupdate.win.sh -f\n\tTestBuild.bat Release Installer\n\n`buildupdate.win.sh` does a \"full\" update the libraries needed to\n build WeSay. `TestBuild.bat` builds a Release version of the Installer.\n\n**NOTE:** If you have set up your bash commands not to work within\n\t\t\t\t\t\t\t\t\t\tthe windows command prompt as above, you will need to\nexecute `buildupdate.win.sh` command in a bash window.\n","funding_links":[],"categories":["Single language lexicography projects and utilities"],"sub_categories":["Utilities"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsillsdev%2Fwesay","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsillsdev%2Fwesay","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsillsdev%2Fwesay/lists"}