84

Preamble: Using git to version control your Mathematica projects is a good choice and you will not regret it. However, like with most tools, it has its own learning curve, the difficulty of which will depend on how comfortable you are with using unix style command line tools. While the basics of git are easy to learn and use (especially if you're a single ...


43

Update October 2016: As mentioned here it is officially documented how to install WWB into Eclipse Neon (64 bit)! Great! Thanx WRI. This is tested on Windows and Linux: Download and install a 32bit version of Eclipse Kepler from http://www.eclipse.org/downloads/ On Linux x86_64 make sure to have 32bit Java installed and configured, and, e.g. on Fedora do: ...


26

Preamble I feel that this question deserves an answer, since there are a few subtleties associated with WB development which may not be very well reflected in the WB documentation and can be confusing at first. The mechanics of package search / loading in application projects The standard structure of the WB application project usually contains nested ...


21

I know that you are thinking ahead and considering how to make the work flow easiest for yourself. Nevertheless, in reading over your question I suspect you are pointed in the wrong direction and will only make things more difficult and burdensome for yourself. What you are talking about is writing Mathematica Applications. (I would start with a single ...


20

Even though documentation indices built with Mathematica 8 or older are not compatible with Mathematica 9, indices built with 9 are compatible with 8 or older. And even though Mathematica 9 can choke up converting documentation notebooks, it has no problems generating documentation indices. So the workaround to points 1 and 4 in the question above is to ...


18

Preface I feel inclined to answer because I live in both of the worlds you are describing. For one, I work in science where it is more than typical to write software that has sophisticated algorithms under the hood, but cannot be compared to modern apps. This software is rarely "market-ready" in terms of user experience, let alone the principles like web-...


17

Are you interested in a Wolfram Workbench Update? No, because it is based on Eclipse, and I prefer IntelliJ IDEA. The Mathematica plugin for IntelliJ IDEA is absolutely great and fairly sufficient for what I do. Many of my (ex-)co-workers at WRI use(d) Wolfram Workbench and are(were) productive with it. I never particularly liked it because of Eclipse. (...


16

The solution I am currently using is to work with *.wls script files. You can do nearly all the things you do with usual *.nb notebooks files (as shown in my screen shot). The big advantage is that outputs and graphics are not saved into these *.wls files (you have to click on Run All Code to regenerate them). By consequence you can use git as usual (...


16

This Wolfram support article explains how to install the latest Workbench as an Eclipse plugin. It is compatible with Eclipse 4.6 (Neon) and Mathematica 11. See also https://www.wolfram.com/products/workbench/


15

Update November 2nd, 2016 The issue has obviously now been addressed by WRI and Workbench will not be a branded Eclipse IDE, but rather be a concurrent plug-in for Eclipse. They also updated the Website: Wolfram Workbench. Maybe there has been some effect of posts like this one? :) Update Because I feel that @Szabolcs does have a point I will give a ...


13

A new possibility is to use mathematica-notebook-filter which parses Mathematica notebooks and strips all output cells and metadata so that these are not committed into the version control system. In the specific case of git, it is quite easy to integrate mathematica-notebook-filter so that git automatically cleans the output and metadata when calculating ...


13

Update 4: The code in this answer has been incorporated into @jkuczm's WWBCommon package. I encourage everyone creating cross-version documentation in Workbench to use it. This is a workaround for Point 5 in the question, allowing cross-version documentation to be built that fixes the layout and text problems in version 9 (and 10), while still displaying ...


13

Edit From version 9 PacletInfo.m file requires "Kernel" extension with Context specification. Without it loading paclets using contexts doesn't work (see old answer). Up to version 8 $Path has precedence over paclet search path no matter how package is loaded. In versions 9.0 - 10.1 paclet search path has precedence over $Path no matter how package is ...


13

Update 10-2017: I noticed that they released an update of these tools, so some of these steps are outdated. I adjusted this answer to the newest release of Workbench 10.1.822. It has become somewhat easier, therefore I also created an automated script for my usecase. Feel free to use it: (* Directory containing html folder, e.g. C:/project/build/...


12

I installed it for a short while, played with it somewhat and then decided it was not for me. I have been using IDEs for various languages and environments, but my development style for Mathematica programs just doesn't work in an IDE. I don't write huge programs, but mostly use Mathematica as a research tool, test concepts or do some data processing. ...


11

This is a workaround for point 2 and 5 in the question, suppressing the "This notebook was created in a more recent version of Mathematica" dialog warnings and improving the rendering of the MORE INFORMATION button a bit. The idea here is to do an Ant search-and-replace after building the doc notebooks, replacing and removing the bits in the notebooks we ...


11

Alternatively, is it possible to build the documentation directly from Mathematica, without having to use Ant and docbuild.xml? The Workbench includes a DocumentationBuild package. Yes this is possible, but it requires tracing what docbuild.xml is doing. It's deleting build directory at beginning, and copying PacletInfo.m and everything, except */Guides/**, ...


10

This is a workaround for point 3 in the question, making PacletInfo.m files for Mathematica 9 also work on 6. Due to a change in the PacletManager in Mathematica 9, PacletInfo files need an additional line in order for PacletManager to parse them completely. Here's an example: Paclet[ Name -> "xTras", Version -> "1.1.3", ...


10

While some have pointed out that many of your questions apply to all programming environments. I do think Mathematica's immediacy provides some interesting ways to approach development projects at every scale. Some ideas follow. Wolfram Workbench -- If memory serves, Wolfram Workbench sits on top of Eclipse. Version control -- CVS provides a useful open ...


10

I'll try to answer this as objectively as possible, but note that this answer is shaped by my experiences, so there is a certain subjective flavour to it. Before you try to figure out a workflow for a non-interactive IDE for Mathematica such as the WorkBench/vim/IntelliJ/Eclipse (henceforth, IDE) and the Mathematica notebook (NB), you should evaluate and ...


10

I don't know any option that would control this behavior, but there are hacks that can completely prevent this rasterization. Rasterization is performed by ConvertGraphicsToBitmaps function from DocumentationBuild`Common` package. This function performs rasterization of output cells from given NotebookObject and returns Null, that's all it does, so we can ...


10

For notebook to stay in the same place, after Revert action, it needs Saveable -> False option. Note: A notebook with Saveable -> False cannot be saved using the GUI through File -> Save... It can be saved programmatically using NotebookSave, or exported using Export[..., "NB"], etc. Let's create basic test application with documentation support: ...


10

If you see this error: A class needed by class com.wolfram.jlink.util.MathematicaTask cannot be found: org/apache/tools/ant/Task then try installing the Workbench plugin into "Eclipse for Java Developers". It seems other versions, e.g. "Eclipse for C++ Developers", lack some components that the Workbench plugin needs. Also make sure to have the JDK (...


9

Another alternative is the IntelliJ IDEA IDE with the Mathematica plugin. See this post for details: Open-source IntelliJ IDEA plugin to support Mathematica development


9

Here's what I did in Workbench 2 to allow documentation editing and building using Mma 6. It's basically a fix for the version 6 half of Point 4 in the question. We need to work with files in the DocumentationTools folder -- in my installation the folder is located at C:\Users\Simon\.eclipse\1678130227\configuration\org.eclipse.osgi\bundles\10\1\.cp\...


9

This may seem unsophisticated, but I have developed a few tools and practices that help me keep my fairly large notebooks manageable and help me keep track of what I've done with projects that sometimes go on for months. Specifically, I use: 1. A style sheet with several levels of headings to identify notebook sections. 2. Group openers to make it easy to ...


9

Partial Solution Wolfram Workbench 2 and 3 are not able to launch the front end (Mathematica 10+) to create the final HTML. The solution is to use the new (Eclipse-plugin) version, downloadable from: https://www.wolfram.com/workbench/. Which is also free when you have purchased a Mathematica license. Some issues with the HTML edit: I took the time to ...


8

Another approach that might suit you (although you've probably settled on one by now) is to use Workbench's built-in Documentation Tools to create documentation for each symbol, and then automatically export formatted usage messages from these documentation notebooks to a .m file. The Documentation Tools provide a way to export the usage messages via the ...


8

I certainly would like to see a Workbench that worked. After spending the money for the thing, and locating a very old version of Eclipse for Windows to run it on, I could not make Workbench do anything. Since as a Mathematica Home Edition user, I am not entitled to technical support, and for lack of time, I gave up on Workbench. I have to believe that if ...


8

Putting together all pieces from first answer, for general, commonest case, gives final buildDocumentation function: nonStrOptRule // ClearAll nonStrOptRule // Attributes = HoldAll; nonStrOptRule[msg_MessageName, optName_, onError_] := wrong : "" | Except@_String :> ( Message[msg, HoldForm@optName, HoldForm@wrong]; onError ) ...


Only top voted, non community-wiki answers of a minimum length are eligible